読者です 読者をやめる 読者になる 読者になる

はわわーっ

はわわわわっ

WDFのめもとか

windows

WDFでドライバ書くときのIRPのディスパッチャについて見てたページをメモしとく。

WDFではWDMと違って、基本的にはフレームワークが処理したあとのIRPをもらうことになるっぽい。
生のIRPをさわるには、WdfDeviceInitAssignWdmIrpPreprocessCallback とかでフレームワークが処理する前のIRPをもらうためのコールバックを登録するらしい。


あと、一番やりたかったのは Distinguishing Fast Startup from Wake-from-Hibernation - Windows 10 hardware dev
コールドブートしたのか高速スタートアップしたのかハイバネーションから復帰したのかを判別する方法がほしかった。
IRP_MJ_POWERでIRP_MN_SET_POWERなIRPが来た時にIO_STACK_LOCATIONのSYSTEM_POWER_STATE_CONTEXTを見ればいいらしい。

これを見るために、ドライバで生のIRPを取ってくる必要があったのでした。