safe mode check in case of WDM
セーフモードで起動しているかどうかドライバ内で判定する方法は、
How to determine whether the system is running in Safe Mode from a device driver
セーフ モードでデバイス ドライバからシステムが実行されているかどうか確認する方法
に書いてあって、
extern PULONG InitSafeBootMode;というように判定するのだが、SOURCESでif (*InitSafeBootMode != 0) {
// running under safe mode
...
}
DRIVERTYPE=WDM
が指定されていると、このシンボルがunresolvedになる。dumpbin.exeでシンボルを列挙したら、
- iointex.lib
- ntoskrnl.lib
- wdmsec.lib
に入っていたので、
TARGETLIBS=$(DDK_LIB_PATH)\wdmsec.libを追加したところ、リンクできた。
cd \WinDDK\lib\wxp\i386というようにすれば、exportしているシンボルの一覧がわかるので、そこから探した。
for %f in (*.lib) do dumpbin /exports %f >> symbols.txt