!irp
Ekstensi !irp menampilkan informasi tentang paket permintaan I/O (IRP).
!irp Address [Detail]
Parameter
Alamat
Menentukan alamat heksadesimal dari IRP.
Detail
Jika parameter ini disertakan dengan nilai apa pun, seperti 1, output mencakup status IRP, alamat daftar deskriptor memori (MDL), utas pemiliknya, dan informasi tumpukan untuk semua tumpukan I/O-nya, dan informasi tentang setiap lokasi tumpukan untuk IRP, termasuk versi heksadesimal dari kode fungsi utama dan kode fungsi minor. Jika parameter ini dihilangkan, output hanya menyertakan ringkasan informasi.
DLL
Kdexts.dll
Informasi Tambahan
Lihat Debugging Plug and Play dan Debugging Interupsi Storms untuk aplikasi perintah ekstensi ini. Untuk informasi tentang IRP, lihat dokumentasi Windows Driver Kit (WDK) dan Microsoft Windows Internals oleh Mark Russinovich dan David Solomon. Untuk informasi lebih lanjut tentang kode fungsi utama dan minor, lihat dokumentasi Windows Driver Kit (WDK).
Topik ini menjelaskan struktur IRP, IRP.
Untuk informasi terperinci tentang mendekode struktur IRP termasuk Args yang dikembalikan, lihat sumber daya berikut.
- Windows Internals oleh Mark E. Russinovich, David A. Solomon dan Alex Ionescu
- Mengembangkan Driver dengan Windows Driver Foundation Guy Smith dan Penny Orwick
Keterangan
Output juga menunjukkan dalam kondisi apa rutinitas penyelesaian untuk setiap lokasi tumpukan akan dipanggil setelah IRP selesai dan lokasi tumpukan diproses. Ada tiga kemungkinan:
Keberhasilan
Menunjukkan bahwa rutinitas penyelesaian akan dipanggil ketika IRP selesai dengan kode keberhasilan.
Kesalahan
Menunjukkan bahwa rutinitas penyelesaian akan dipanggil ketika IRP selesai dengan kode kesalahan.
Membatalkan
Menunjukkan bahwa rutinitas penyelesaian akan dipanggil jika upaya dilakukan untuk membatalkan IRP.
Kombinasi apa pun dari ketiganya dapat muncul, dan jika salah satu kondisi yang ditampilkan terpenuhi, rutinitas penyelesaian akan dipanggil. Nilai yang sesuai tercantum di akhir baris pertama informasi tentang setiap lokasi tumpukan, segera setelah entri Completion-Context .
Berikut adalah contoh output dari ekstensi ini untuk Windows 10:
0: kd> !irp ac598dc8
Irp is active with 2 stacks 1 is current (= 0xac598e38)
No Mdl: No System Buffer: Thread 8d1c7bc0: Irp stack trace.
cmd flg cl Device File Completion-Context
>[IRP_MJ_FILE_SYSTEM_CONTROL(d), N/A(0)]
1 e1 8a6434d8 ac598d40 853220cb-a89682d8 Success Error Cancel pending
\FileSystem\Npfs fltmgr!FltpPassThroughCompletion
Args: 00000000 00000000 00110008 00000000
[IRP_MJ_FILE_SYSTEM_CONTROL(d), N/A(0)]
1 0 8a799710 ac598d40 00000000-00000000
\FileSystem\FltMgr
Args: 00000000 00000000 0x00110008 00000000
Dimulai dengan Windows 10 teks kode utama dan minor IRP ditampilkan, misalnya, "IRP_MJ_FILE_SYSTEM_CONTROL" Nilai kode juga ditampilkan dalam hex, dalam contoh ini "(d)".
Argumen ketiga yang ditampilkan dalam output, adalah kode IOCTL. Gunakan perintah !ioctldecode untuk menampilkan informasi tentang IOCTL.
Berikut adalah contoh output dari ekstensi ini dari Windows Vista.
0: kd> !irp 0x831f4a00
Irp is active with 8 stacks 5 is current (= 0x831f4b00)
Mdl = 82b020d8 Thread 8c622118: Irp stack trace.
cmd flg cl Device File Completion-Context
[ 0, 0] 0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[ 0, 0] 0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[ 0, 0] 0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[ 0, 0] 0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
>[ 3,34] 40 e1 828517a8 00000000 842511e0-00000000 Success Error Cancel pending
\Driver\disk partmgr!PmReadWriteCompletion
Args: 00007000 00000000 fe084e00 00000004
[ 3, 0] 40 e0 82851450 00000000 842414d4-82956350 Success Error Cancel
\Driver\PartMgr volmgr!VmpReadWriteCompletionRoutine
Args: 129131bb 000000de fe084e00 00000004
[ 3, 0] 0 e0 82956298 00000000 847eeed0-829e2ba8 Success Error Cancel
\Driver\volmgr Ntfs!NtfsMasterIrpSyncCompletionRoutine
Args: 00007000 00000000 1bdae400 00000000
[ 3, 0] 0 0 82ac2020 8e879410 00000000-00000000
\FileSystem\Ntfs
Args: 00007000 00000000 00018400 00000000
Perhatikan bahwa rutinitas penyelesaian di samping nama driver diatur pada lokasi tumpukan tersebut, dan diatur oleh driver pada baris di bawah ini. Dalam contoh sebelumnya, Ntfs!NtfsMasterIrpSyncCompletionRoutine diatur oleh \FileSystem\Ntfs. Entri Completion-Context di atas Ntfs!NtfsMasterIrpSyncCompletionRoutine, 847eeed0-829e2ba8, menunjukkan alamat rutinitas penyelesaian, serta konteks yang akan diteruskan ke Ntfs!NtfsMasterIrpSyncCompletionRoutine. Dari sini kita dapat melihat bahwa alamat Ntfs!NtfsMasterIrpSyncCompletionRoutine adalah 847eeed0, dan konteks yang akan diteruskan ke rutinitas ini ketika disebut adalah 829e2ba8.
Kode fungsi utama IRP
Informasi berikut disertakan untuk membantu Anda menginterpretasikan output dari perintah ekstensi ini.
Kode fungsi utama IRP adalah sebagai berikut:
Kode Fungsi Utama | Kode Heksadesimal |
---|---|
IRP_MJ_CREATE |
0x00 |
IRP_MJ_CREATE_NAMED_PIPE |
0x01 |
IRP_MJ_CLOSE |
0x02 |
IRP_MJ_READ |
0x03 |
IRP_MJ_WRITE |
0x04 |
IRP_MJ_QUERY_INFORMATION |
0x05 |
IRP_MJ_SET_INFORMATION |
0x06 |
IRP_MJ_QUERY_EA |
0x07 |
IRP_MJ_SET_EA |
0x08 |
IRP_MJ_FLUSH_BUFFERS |
0x09 |
IRP_MJ_QUERY_VOLUME_INFORMATION |
0x0A |
IRP_MJ_SET_VOLUME_INFORMATION |
0x0B |
IRP_MJ_DIRECTORY_CONTROL |
0x0C |
IRP_MJ_FILE_SYSTEM_CONTROL |
0x0D |
IRP_MJ_DEVICE_CONTROL |
0x0E |
IRP_MJ_INTERNAL_DEVICE_CONTROL IRP_MJ_SCSI | 0x0F |
IRP_MJ_SHUTDOWN |
0x10 |
IRP_MJ_LOCK_CONTROL |
0x11 |
IRP_MJ_CLEANUP |
0x12 |
IRP_MJ_CREATE_MAILSLOT |
0x13 |
IRP_MJ_QUERY_SECURITY |
0x14 |
IRP_MJ_SET_SECURITY |
0x15 |
IRP_MJ_POWER |
0x16 |
IRP_MJ_SYSTEM_CONTROL |
0x17 |
IRP_MJ_DEVICE_CHANGE |
0x18 |
IRP_MJ_QUERY_QUOTA |
0x19 |
IRP_MJ_SET_QUOTA |
0x1A |
IRP_MJ_PNP IRP_MJ_MAXIMUM_FUNCTION | 0x1B |
Kode fungsi minor Plug and Play adalah sebagai berikut:
Kode Fungsi Minor | Kode Heksadesimal |
---|---|
IRP_MN_START_DEVICE |
0x00 |
IRP_MN_QUERY_REMOVE_DEVICE |
0x01 |
IRP_MN_REMOVE_DEVICE |
0x02 |
IRP_MN_CANCEL_REMOVE_DEVICE |
0x03 |
IRP_MN_STOP_DEVICE |
0x04 |
IRP_MN_QUERY_STOP_DEVICE |
0x05 |
IRP_MN_CANCEL_STOP_DEVICE |
0x06 |
IRP_MN_QUERY_DEVICE_RELATIONS |
0x07 |
IRP_MN_QUERY_INTERFACE |
0x08 |
IRP_MN_QUERY_CAPABILITIES |
0x09 |
IRP_MN_QUERY_RESOURCES |
0x0A |
IRP_MN_QUERY_RESOURCE_REQUIREMENTS |
0x0B |
IRP_MN_QUERY_DEVICE_TEXT |
0x0C |
IRP_MN_FILTER_RESOURCE_REQUIREMENTS |
0x0D |
IRP_MN_READ_CONFIG |
0x0F |
IRP_MN_WRITE_CONFIG |
0x10 |
IRP_MN_EJECT |
0x11 |
IRP_MN_SET_LOCK |
0x12 |
IRP_MN_QUERY_ID |
0x13 |
IRP_MN_QUERY_PNP_DEVICE_STATE |
0x14 |
IRP_MN_QUERY_BUS_INFORMATION |
0x15 |
IRP_MN_DEVICE_USAGE_NOTIFICATION |
0x16 |
IRP_MN_SURPRISE_REMOVAL |
0x17 |
IRP_MN_QUERY_LEGACY_BUS_INFORMATION |
0x18 |
Kode fungsi minor WMI adalah sebagai berikut:
Kode Fungsi Minor | Kode Heksadesimal |
---|---|
IRP_MN_QUERY_ALL_DATA |
0x00 |
IRP_MN_QUERY_SINGLE_INSTANCE |
0x01 |
IRP_MN_CHANGE_SINGLE_INSTANCE |
0x02 |
IRP_MN_CHANGE_SINGLE_ITEM |
0x03 |
IRP_MN_ENABLE_EVENTS |
0x04 |
IRP_MN_DISABLE_EVENTS |
0x05 |
IRP_MN_ENABLE_COLLECTION |
0x06 |
IRP_MN_DISABLE_COLLECTION |
0x07 |
IRP_MN_REGINFO |
0x08 |
IRP_MN_EXECUTE_METHOD |
0x09 |
Kode fungsi minor manajemen daya adalah sebagai berikut:
Kode Fungsi Minor | Kode Heksadesimal |
---|---|
IRP_MN_WAIT_WAKE |
0x00 |
IRP_MN_POWER_SEQUENCE |
0x01 |
IRP_MN_SET_POWER |
0x02 |
IRP_MN_QUERY_POWER |
0x03 |
Kode fungsi minor SCSI adalah sebagai berikut:
Kode Fungsi Minor | Kode Heksadesimal |
---|---|
IRP_MN_SCSI_CLASS |
0x01 |