IrpPending 규칙 집합(WDM)
이러한 규칙을 사용하여 드라이버가 IRP(I/O 요청 패킷)를 올바르게 보류하고 있는지 확인합니다.
섹션 내용
항목 | Description |
---|---|
MarkDevicePower 규칙은 SystemPowerState IRP에 대한 IRP_MN_SET_POWER S0으로 가는 IRP_MJ_POWER 보류 중임을 지정합니다. |
|
MarkingInterlockedQueuedIrps 규칙은 드라이버가 IRP를 보류 중으로 올바르게 표시한 후 추가 처리를 위해 연동된 방식으로 큐에 대기되도록 지정합니다. |
|
MarkingQueuedIrps 규칙은 드라이버가 스핀 잠금을 유지하는 동안에만 추가 처리가 필요한 IRP에 대해 IoMarkIrpPending을 호출하도록 지정합니다. 이 규칙은 드라이버가 드라이버 관리 큐에 IRP를 추가하는 경우에만 적용됩니다. |
|
MarkIrpPending 규칙은 드라이버 디스패치 루틴이 IoMarkIrpPending을 호출할 때마다 디스패치 루틴이 종료되면 드라이버가 STATUS_PENDING 반환한다고 지정합니다. 무료 사양 은 MarkIrpPending2 를 참조하세요. |
|
MarkIrpPending2 규칙은 디스패치 루틴이 STATUS_PENDING 반환하는 경우 IoMarkIrpPending을 호출하거나 IRP를 하위 드라이버에 전달하도록 지정합니다. 무료 사양 은 MarkIrpPending 을 참조하세요. |
|
MarkPower 규칙은 SystemPowerState IRP에 대한 IRP_MN_SET_POWER S0으로 가는 IRP_MJ_POWER 보류되도록 지정합니다. 이 규칙은 FDO 및 FIDO 드라이버에만 적용됩니다. |
|
MarkPowerDown 규칙은 SystemPowerState IRP에 대한 IRP_MN_SET_POWER 있는 IRP_MJ_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 규칙은 디스패치 루틴이 보류 중인 IRP를 완료할 수 있으므로 IoCallDriver 또는 PoCallDriver를 호출한 후 대기가 필요하도록 지정합니다. |
|
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 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /검사 옵션을 사용하여 IrpPending.sdv를 지정합니다. 예를 들면 다음과 같습니다.
msbuild /t:sdv /p:Inputs="/check:IrpPending.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
자세한 내용은 정적 드라이버 검증 도구를 사용하여 드라이버에서 결함 찾기 및 정적 드라이버 검증 도구 명령(MSBuild)을 참조하세요.