У меня есть код драйвера устройства Windows WDF, я пытаюсь заставить его работать до предустановки (до того, как устройство присутствует). Он начинается с проверки наличия действительных идентификаторов устройств и делает следующее:
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.
В первом случае (устройство есть) все хорошо. Но во втором случае, согласно «Preinstalling Driver Packages» Microsoft, он должен скопировать INF в c: \ Windows \ inf \ oem.inf (что он и делает), а затем, когда устройство присутствует, оно должно установить драйвер на основе на информации в INF, которой нет, и мне нужно перейти к диспетчеру устройств, удалить неизвестное устройство и просканировать аппаратные изменения, чтобы установить его.
В первом случае (устройство присутствует) наш файл .sys драйвера копируется в каталог c: \ windows \ system32 \ drivers, тогда как во втором случае этого не происходит. Если просто отдельно скопировать файл .sys в c: \ windows \ system32 \ drivers, все заработает. Я могу просто сделать это, но это кажется беспорядочным (и рискованным), учитывая, что все это должно обрабатываться автоматически, основываясь на моем чтении документа Microsoft «Preinstalling Driver Packages».