PREFast を使用して、Windows7 用のドライバー コード ビルドを確認しています。次のコード行
stackDeviceObject = IoAttachDeviceToDeviceStack(deviceObject, PhysicalDeviceObject);
警告を表示します:
warning 28107: The Memory 'deviceObject' must be held when calling 'IoAttachDeviceToDeviceStack'.
deviceObject は、IoCreateDevice への以前の呼び出しで取得されます。この警告の意味と、それを取り除く方法を知っている人はいますか?
PREfast のヘルプには、「関数を呼び出す前にプログラムが取得しなければならないリソースが、関数の呼び出し時に取得されませんでした。その結果、関数呼び出しは失敗します。」と記載されています。
ヘルプページが提供する例は、KaEnterCriticalRegion と KaLeaveCriticalRegion への呼び出しの間の ExAcquireResourceLite と ExReleaseResourceLite (この警告を与える) への呼び出しのペアを囲んでおり、おそらく警告を取り除きますが、この情報をに適用する方法がわかりませんIoAttachDeviceToDeviceStack への私の呼び出し。
アドバイスをいただければ幸いです。