Windows WDF デバイス ドライバー コードがあり、(デバイスが存在する前に) プレインストールできるようにしようとしています。有効なデバイス ID が存在するかどうかを確認することから始め、見つかった場合は次のようにします。
if (UpdateDriverForPlugAndPlayDevices(0, // No Window Handle
hwid, // Hardware ID
inffile, // FileName
INSTALLFLAG_FORCE,
&RebootRequired))
// success
ただし、デバイスが存在しないかプラグインされていない場合は、次のようになります。
if(SetupCopyOEMInf(inffile,
NULL,
SPOST_PATH,
0,
NULL,
0,
NULL,
NULL))
// etc.
最初のケース (デバイスが存在する) では、すべて問題ありません。しかし、2 番目のケースでは、Microsoft の「ドライバー パッケージのプレインストール」に従って、INF を c:\Windows\inf\oem.inf にコピーする必要があり (これは実行されます)、デバイスが存在する場合は、ドライバー ベースをインストールする必要があります。 INF の情報にはありませんが、デバイス マネージャーに移動し、不明なデバイスを削除し、ハードウェアの変更をスキャンしてインストールする必要があります。
最初のケース (デバイスが存在する) では、ドライバーの .sys ファイルは c:\windows\system32\drivers ディレクトリにコピーされますが、2 番目のケースではコピーされません。.sys ファイルを c:\windows\system32\drivers に個別にコピーすると、すべてが機能します。私はそれを行うことができますが、Microsoftの「ドライバーパッケージのプレインストール」ドキュメントを読んだことに基づいて、すべてが自動的に処理されることになっていることを考えると、それは面倒な(そして危険な)ようです。