多くの掘削の後、解決策が見つかりました。私はこれを共有して、同様の問題に直面している人々が多くの労力を節約できるようにします。
最初のもの。デバイスドライバのインストールには、2つのことが起こっています。
- ドライバファイルはここにあるドライバストア(にコピー/アップロードされます:実際のインストールが行われたときに対応するデバイスは、現在、接続されると
%windir%\System32\DriverStore\FileRepository\
- があるデバイスを意味し、対応するデバイス。 /モデルあなたはINFファイルで指定します。
を。これは、伝統的なパスです。あなたはINFファイルを使用してインストールしようとすると、
ので、ドライバファイルがドライバストアのファイルリポジトリにアップロードします。私は、ティINFインストール中にサポートされているモデルのいずれかが接続されている場合、ドライバは完全にインストールされます(テストしていません)。
インストール。 私の要求では、ドライバのインストールとリストアップが事前に要求されています。このためには、関数InstallPrinterDriverFromPackage functionを使用して明示的にインストールすることができます。ここにそれを使用した例があります:
HRESULT Install(LPCTSTR pszInfPath)
{
HRESULT ret = InstallPrinterDriverFromPackage(
NULL,
pszInfPath, //path of the INF file in the Driver Store
L"MyV4PrintDriver", //the name of the driver as in the INF file
//L"Windows NT x86", 32 bit environment
L"Windows x64",
0);
if (ret != S_OK)
{
_com_error err(ret);
LPCTSTR errMsg = err.ErrorMessage();
wcout << errMsg << endl;
}
return ret;
}
その他。 UploadPrinterDriverPackage関数を使用して、プリンタドライバファイルをドライバストアにアップロードできます。