Bagikan melalui


Seperangkat aturan IrpPending (WDM)

Gunakan aturan ini untuk memverifikasi bahwa driver Anda menunggu paket permintaan I/O (IRP) dengan benar.

Di bagian ini

Topik Deskripsi

MarkDevicePower

Aturan MarkDevicePower menentukan bahwa IRP_MJ_POWER dengan IRP_MN_SET_POWER untuk SystemPowerState IRP masuk ke S0 tertunda.

MarkingInterlockedQueuedIrps

Aturan MarkingInterlockedQueuedIrps menentukan bahwa driver menandai IRP dengan benar sebagai tertunda sebelum mengantrenya secara bergantian untuk pemrosesan lebih lanjut.

MarkingQueuedIrps

Aturan MarkingQueuedIrps menentukan bahwa driver memanggil IoMarkIrpPending untuk IRP yang hanya memerlukan pemrosesan lebih lanjut sambil menahan kunci putar. Aturan ini hanya berlaku ketika driver menambahkan IRP ke antrean yang dikelola driver.

MarkIrpPending

Aturan MarkIrpPending menentukan bahwa setiap kali pengiriman driver rutin memanggil IoMarkIrpPending, driver mengembalikan STATUS_PENDING ketika rutinitas pengiriman berakhir. Lihat MarkIrpPending2 untuk spesifikasi gratis.

MarkIrpPending2

Aturan MarkIrpPending2 menentukan bahwa jika rutinitas pengiriman mengembalikan STATUS_PENDING, aturan tersebut telah memanggil IoMarkIrpPending atau meneruskan IRP ke driver yang lebih rendah. Lihat MarkIrpPending untuk spesifikasi gratis.

MarkPower

Aturan MarkPower menentukan bahwa IRP_MJ_POWER dengan IRP_MN_SET_POWER untuk SystemPowerState IRP masuk ke S0 tertunda. Aturan ini hanya berlaku untuk driver FDO dan FIDO.

MarkPowerDown

Aturan MarkPowerDown menentukan bahwa IRP_MJ_POWER dengan IRP_MN_SET_POWER untuk SystemPowerState IRP beralih dari s0 ke [S1... S5] tertunda.

MarkQueryRelations

Aturan MarkQueryRelations menentukan bahwa driver harus menunggu IRP_MN_QUERY_DEVICE_RELATIONS IRP.

MarkStartDevice

Aturan MarkStartDevice menentukan bahwa driver menunggu IRP_MN_START_DEVICE IRP dengan benar. Aturan ini hanya berlaku untuk driver FDO dan FIDO.

PendedCompletedRequest

Aturan PendedCompletedRequest menentukan bahwa rutinitas pengiriman driver tidak mengembalikan STATUS_PENDING pada IRP jika driver telah memanggil IoCompleteRequest pada IRP yang masuk.

PendedCompletedRequest2

Aturan PendedCompletedRequest2 menentukan bahwa penantian diperlukan setelah panggilan ke IoCallDriver atau PoCallDriver karena rutinitas pengiriman dapat menyelesaikan IRP yang tertunda.

PendedCompletedRequest3

Aturan PendedCompletedRequest3 menentukan bahwa IRP yang tertunda tidak boleh diselesaikan dengan panggilan ke IoCompleteRequest.

PendedCompletedRequestEx

Aturan PendedCompletedRequestEx menentukan bahwa driver tidak boleh memanggil IoCompleteRequest untuk IRP yang tertunda.

StartDeviceWait

Aturan StartDeviceWait menentukan bahwa driver tidak boleh memanggil KeWaitForSingleObject dalam konteks IRP perangkat mulai.

StartDeviceWait2

Aturan StartDeviceWait2 menentukan bahwa driver tidak boleh memanggil KeWaitForSingleObject dalam konteks IRP perangkat mulai.

StartDeviceWait3

Aturan StartDeviceWait3 menentukan bahwa driver tidak boleh memanggil KeWaitForSingleObject dalam konteks IRP perangkat mulai.

StartDeviceWait4

Aturan StartDeviceWait4 menentukan bahwa driver tidak boleh memanggil KeWaitForSingleObject dalam konteks IRP perangkat mulai.

Untuk memilih seperangkat aturan IrpPending

  1. Pilih proyek driver Anda (.vcxProj) di Microsoft Visual Studio. Dari menu Driver , klik Luncurkan Pemverifikasi Driver Statis....

  2. Klik tab Aturan . Di bawah Seperangkat Aturan, pilih IrpPending.

    Untuk memilih seperangkat aturan default dari jendela prompt perintah pengembang Visual Studio, tentukan IrpPending.sdv dengan opsi /check . Contohnya:

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

    Untuk informasi selengkapnya, lihat Menggunakan Pemverifikasi Driver Statis untuk Menemukan Cacat dalam perintah Driver dan Verifier Driver Statis (MSBuild).