!ndiskd.oid
Ekstensi !ndiskd.oid menampilkan informasi tentang permintaan OID NDIS. Jika Anda menjalankan ekstensi ini tanpa parameter, !ndiskd akan menampilkan daftar semua permintaan OID yang tertunda pada semua miniport dan filter. Setiap miniport atau filter memiliki paling banyak satu permintaan OID yang tertunda dan sejumlah permintaan OID yang diantrekan.
Perhatikan bahwa filter biasanya mengkloning permintaan OID dan meneruskan kloning ke bawah. Ini berarti bahwa bahkan jika protokol mengeluarkan satu permintaan OID, mungkin ada beberapa instans permintaan kloning: satu di setiap filter dan yang lain di miniport. !ndiskd.oid akan menampilkan setiap kloning secara terpisah, sehingga Anda mungkin melihat lebih banyak OID yang tertunda daripada protokol yang benar-benar dikeluarkan.
!ndiskd.oid [-handle <x>] [-legacyoid] [-nolimit>] [-miniport <x>]
Parameter
-menangani
Menangani NDIS_OID_REQUEST
-legacyoid
Memperlakukan sebagai NDIS_REQUEST warisan alih-alih NDIS_OID_REQUEST.
-nolimit
Tidak membatasi jumlah OID tertunda yang ditampilkan.
-miniport
Menemukan permintaan OID yang tertunda pada tumpukan miniport ini.
DLL
Ndiskd.dll
Keterangan
!ndiskd.oid menunjukkan kepada Anda daftar semua OID yang tertunda pada sistem pada satu waktu, sehingga dapat membantu dalam sistem debugging macet atau 0x9F situasi pemeriksaan bug (DRIVER_POWER_STATE_FAILURE). Misalnya, menganalisis pemeriksaan bug 0x9F fiktif mengungkapkan bahwa sistem digantung pada IRP dan sedang menunggu NDIS. Dalam NDIS, RUN dari OS diterjemahkan ke dalam OID, termasuk transisi daya, jadi dengan menjalankan !ndiskd.oid Anda dapat melihat bahwa, dalam contoh ini, perangkat di bagian bawah tumpukan mungkin telah menempel pada OID_PNP_SET_POWER dan menggantung sisa tumpukan. Driver NDIS tidak boleh menunggu OID selama lebih dari satu detik, sehingga Anda kemudian dapat menyelidiki mengapa perangkat tersebut menyimpan OID yang tertunda terlalu lama untuk mencoba menyelesaikan masalah.
Contoh
Untuk melihat contoh OIDS yang tertunda pada sistem yang berjalan normal, atur titik henti pada rutinitas handler permintaan OID miniport (di driver miniport yang sesuai dengan miniport). Pertama, jalankan perintah !ndiskd.minidriver tanpa parameter untuk mendapatkan daftar driver miniport pada sistem. Dalam contoh output ini, cari handel untuk kdnic minidriver, ffffdf801418d650..
3: kd> !ndiskd.minidriver
ffffdf8015a98380 - tunnel
ffffdf801418d650 - kdnic
Klik handel untuk minidriver, lalu klik tautan "Handler" di bagian bawah halaman detailnya untuk melihat daftar handler-nya. Anda dapat memasukkan perintah !ndiskd.minidriver -handle -handlers . Setelah Anda memiliki daftar handler minidriver, cari OidRequestHandler, yang handelnya adalah fffff80f1fd71c90 dalam contoh ini.
2: kd> !ndiskd.minidriver ffffdf801418d650 -handlers
HANDLERS
NDIS Handler Function pointer Symbol (if available)
InitializeHandlerEx fffff80f1fd78230 bp
SetOptionsHandler fffff80f1fd72800 bp
HaltHandlerEx fffff80f1fd78040 bp
ShutdownHandlerEx fffff80f1fd722c0 bp
CheckForHangHandlerEx fffff80f1fd72810 bp
ResetHandlerEx fffff80f1fd72f70 bp
PauseHandler fffff80f1fd78000 bp
RestartHandler fffff80f1fd78940 bp
OidRequestHandler fffff80f1fd71c90 bp
CancelOidRequestHandler fffff80f1fd722c0 bp
DirectOidRequestHandler [None]
CancelDirectOidRequestHandler [None]
DevicePnPEventNotifyHandler fffff80f1fd789a0 bp
SendNetBufferListsHandler fffff80f1fd71870 bp
ReturnNetBufferListsHandler fffff80f1fd71b50 bp
CancelSendHandler fffff80f1fd722c0 bp
Sekarang klik tautan "bp" di sebelah kanan OidRequestHandler atau masukkan perintah bp -handle dengan handelnya untuk mengatur titik henti pada rutinitas tersebut. Selanjutnya, ketik perintah g untuk memungkinkan mesin target debugee Anda berjalan dan mencapai titik henti yang baru saja Anda tetapkan.
2: kd> bp fffff80f1fd71c90
2: kd> g
Breakpoint 1 hit
fffff80f`1fd71c90 448b4204 mov r8d,dword ptr [rdx+4]
Setelah Anda memicu titik henti pada rutinitas handler permintaan OID minidriver seperti yang ditunjukkan oleh contoh sebelumnya, Anda dapat menjalankan perintah !ndiskd.oid untuk melihat daftar semua OID yang tertunda pada sistem.
1: kd> !ndiskd.oid
ALL PENDING OIDs
NetAdapter ffffdf80140c71a0 - Microsoft Kernel Debug Network Adapter
Current OID OID_GEN_STATISTICS
Filter ffffdf8014950c70 - Microsoft Kernel Debug Network Adapter-WFP Native MAC Layer LightWeight Filter-0000
Current OID OID_GEN_STATISTICS
Filter ffffdf801494dc70 - Microsoft Kernel Debug Network Adapter-QoS Packet Scheduler-0000
Current OID OID_GEN_STATISTICS
Dalam contoh ini, OID yang tertunda OID_GEN_STATISTICS. Ketika Anda melihat hasil !ndiskd.oid, ingat bahwa filter mengkloning permintaan OID dan meneruskannya ke tumpukan, dan OID biasanya diteruskan dari filter ke filter ke miniport. Oleh karena itu, meskipun mungkin terlihat seperti ada tiga permintaan OID terpisah dengan nama yang sama dalam contoh ini, sebenarnya ada satu operasi logis yang berlangsung yang secara fisik tersebar di 3 OKID dan pada 3 driver.
Lihat juga
Panduan Desain Driver Jaringan