9.16.2009

Load Unload Device Driver

要開發 device driver就算是有 Kitl,可以把 driver dll 屏除在 os image 之外。
但是每次 rebuild driver,還是要重新 load OS。
這樣有點麻煩。

所以,需要一個 在runtime load/unload device driver 的方法,配合 kitl 的 "Release Directory Module" 功能。
這樣,每次rebuild driver,就只要 unload, load driver 一次就可以。

但是要unload drive ,必須要有 driver 的 handle:
DeactivateDeviceEx

BOOL DeactivateDevice(
HANDLE hDevice
);

hDevice

[in] Handle to an active device. The ActivateDevice and ActivateDeviceEx functions return this value.

要得到 hDevice 就要作 ActivateDevice。
所以Driver 不可以是 buildin active,要自己 activate,才有辦法拿到。

要把Driver 從 registry 的builtin 拿掉,才不會自動 load進來。

但是 ActivateDeviceEx 又需要Registry 作為 Driver active 的依據:

所以就要在程式中create registry key..

整個就參考這個 : Loading a Driver with ActivateDeviceEx

沒有留言: