WDM (IrpPending 規則集)
使用這些規則來確認您的驅動程式已正確畫筆 I/O 要求封包, (IRP) 。
本節內容
主題 | 描述 |
---|---|
MarkDevicePower 規則會指定IRP_MN_SET_POWER SystemPowerState IRP 的IRP_MJ_POWER會寫入 S0。 |
|
MarkInterlockedQueuedIrps 規則會指定驅動程式在將 IRP 排入佇列之前正確標示為擱置中,以便進一步處理。 |
|
MarkQueuedIrps 規則會指定驅動程式呼叫 IRP 的 IoMarkIrpPending,該 IRP 只有在保留微調鎖定時才需要進一步處理。 只有在驅動程式將 IRP 新增至驅動程式管理的佇列時,才會套用此規則。 |
|
MarkIrpPending 規則會指定每當驅動程式分派例程呼叫 IoMarkIrpPending 時,驅動程式就會在分派例程結束時傳回STATUS_PENDING。 如需免費規格,請參閱 MarkIrpPending2 。 |
|
MarkIrpPending2 規則會指定當分派例程傳回STATUS_PENDING時,它已呼叫 IoMarkIrpPending 或將 IRP 傳遞至較低的驅動程式。 如需免費規格,請參閱 MarkIrpPending 。 |
|
MarkPower 規則會指定IRP_MN_SET_POWER SystemPowerState IRP 的IRP_MJ_POWER會寫入 S0。 此規則僅適用於 FDO 和 FIDO 驅動程式。 |
|
MarkPowerDown 規則 IRP_MJ_POWER指定 systemPowerState IRP IRP_MN_SET_POWER從 s0 到 [S1...S5] 已畫筆。 |
|
MarkQueryRelations 規則會指定驅動程式應該將IRP_MN_QUERY_DEVICE_RELATIONS IRP 畫筆。 |
|
MarkStartDevice 規則會指定驅動程序正確畫筆IRP_MN_START_DEVICE IRP。 此規則僅適用於 FDO 和 FIDO 驅動程式。 |
|
PendedCompletedRequest 規則會指定如果驅動程式在傳入的 IRP 上呼叫 IoCompleteRequest,驅動程式的分派例程不會傳回 IRP 上的STATUS_PENDING。 |
|
PendedCompletedRequest2 規則指定呼叫 IoCallDriver 或 PoCallDriver 之後需要等候,因為分派例程可以完成擱置的 IRP。 |
|
PendedCompletedRequest3 規則會指定不應該在呼叫 IoCompleteRequest 時完成擱置的 IRP。 |
|
PendedCompletedRequestEx 規則指定驅動程式不應該針對擱置的 IRP 呼叫 IoCompleteRequest。 |
|
StartDeviceWait 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject。 |
|
StartDeviceWait2 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject。 |
|
StartDeviceWait3 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject。 |
|
StartDeviceWait4 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject。 |
選取 IrpPending 規則集
在 Microsoft Visual Studio 中選取驅動程式項目 (.vcxProj) 。 從 [ 驅動程式 ] 功能表中,按兩下 [ 啟動靜態驅動程序驗證程式...]。
按兩下 [ 規則] 索引標籤 。在 [規則集] 底下,選取 [IrpPending]。
若要從 Visual Studio 開發人員命令提示字元視窗中選取預設規則集,請使用 /check 選項指定 IrpPending.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:IrpPending.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式 和 靜態驅動程式驗證器命令 中尋找瑕疵 (MSBuild) 。