共用方式為


WDM (IrpPending 規則集)

使用這些規則來確認您的驅動程式已正確畫筆 I/O 要求封包, (IRP) 。

本節內容

主題 描述

MarkDevicePower

MarkDevicePower 規則會指定IRP_MN_SET_POWER SystemPowerState IRP 的IRP_MJ_POWER會寫入 S0。

MarkInterlockedQueuedIrps

MarkInterlockedQueuedIrps 規則會指定驅動程式在將 IRP 排入佇列之前正確標示為擱置中,以便進一步處理。

標記QueuedIrps

MarkQueuedIrps 規則會指定驅動程式呼叫 IRP 的 IoMarkIrpPending,該 IRP 只有在保留微調鎖定時才需要進一步處理。 只有在驅動程式將 IRP 新增至驅動程式管理的佇列時,才會套用此規則。

MarkIrpPending

MarkIrpPending 規則會指定每當驅動程式分派例程呼叫 IoMarkIrpPending 時,驅動程式就會在分派例程結束時傳回STATUS_PENDING。 如需免費規格,請參閱 MarkIrpPending2

MarkIrpPending2

MarkIrpPending2 規則會指定當分派例程傳回STATUS_PENDING時,它已呼叫 IoMarkIrpPending 或將 IRP 傳遞至較低的驅動程式。 如需免費規格,請參閱 MarkIrpPending

MarkPower

MarkPower 規則會指定IRP_MN_SET_POWER SystemPowerState IRP 的IRP_MJ_POWER會寫入 S0。 此規則僅適用於 FDO 和 FIDO 驅動程式。

MarkPowerDown

MarkPowerDown 規則 IRP_MJ_POWER指定 systemPowerState IRP IRP_MN_SET_POWER從 s0 到 [S1...S5] 已畫筆。

MarkQueryRelations

MarkQueryRelations 規則會指定驅動程式應該將IRP_MN_QUERY_DEVICE_RELATIONS IRP 畫筆。

MarkStartDevice

MarkStartDevice 規則會指定驅動程序正確畫筆IRP_MN_START_DEVICE IRP。 此規則僅適用於 FDO 和 FIDO 驅動程式。

PendedCompletedRequest

PendedCompletedRequest 規則會指定如果驅動程式在傳入的 IRP 上呼叫 IoCompleteRequest,驅動程式的分派例程不會傳回 IRP 上的STATUS_PENDING。

PendedCompletedRequest2

PendedCompletedRequest2 規則指定呼叫 IoCallDriverPoCallDriver 之後需要等候,因為分派例程可以完成擱置的 IRP。

PendedCompletedRequest3

PendedCompletedRequest3 規則會指定不應該在呼叫 IoCompleteRequest 時完成擱置的 IRP。

PendedCompletedRequestEx

PendedCompletedRequestEx 規則指定驅動程式不應該針對擱置的 IRP 呼叫 IoCompleteRequest

StartDeviceWait

StartDeviceWait 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject

StartDeviceWait2

StartDeviceWait2 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject

StartDeviceWait3

StartDeviceWait3 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject

StartDeviceWait4

StartDeviceWait4 規則指定驅動程式不應該在啟動裝置 IRP 的內容中呼叫 KeWaitForSingleObject

選取 IrpPending 規則集

  1. 在 Microsoft Visual Studio 中選取驅動程式項目 (.vcxProj) 。 從 [ 驅動程式 ] 功能表中,按兩下 [ 啟動靜態驅動程序驗證程式...]。

  2. 按兩下 [ 規則] 索引標籤 。在 [規則集] 底下,選取 [IrpPending]。

    若要從 Visual Studio 開發人員命令提示字元視窗中選取預設規則集,請使用 /check 選項指定 IrpPending.sdv。 例如:

    msbuild /t:sdv /p:Inputs="/check:IrpPending.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式靜態驅動程式驗證器命令 中尋找瑕疵 (MSBuild) 。