Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
!ndiskd.oid uzantısı bir NDIS OID isteği hakkındaki bilgileri görüntüler. Bu uzantıyı parametre olmadan çalıştırırsanız, !ndiskd tüm miniport'larda ve filtrelerde bekleyen tüm OID isteklerinin listesini görüntüler. Her miniport veya filtrede en fazla bir bekleyen OID isteği ve herhangi bir sayıda kuyruğa alınmış OID isteği vardır.
Filtrelerin genellikle klon OID isteklerini ve kopyayı aşağı geçirdiğini unutmayın. Başka bir deyişle, bir protokol tek bir OID isteği yayınlasa bile, kopyalanan isteklerin birden çok örneği olabilir: her filtrede biri ve miniport'ta başka bir örnek. !ndiskd.oid her kopyayı ayrı olarak gösterir, bu nedenle protokolün gerçekten yayımladığından daha fazla bekleyen OID görebilirsiniz.
!ndiskd.oid [-handle <x>] [-legacyoid] [-nolimit>] [-miniport <x>]
Parametreler
-kulp
NDIS_OID_REQUEST tutamacı
-legacyoid
NDIS_OID_REQUEST yerine eski bir NDIS_REQUEST olarak davranır.
-nolimit
Görüntülenen bekleyen OID sayısını sınırlamaz.
-miniport
Bu miniport'un yığınında bekleyen OID isteklerini bulur.
DLL
Ndiskd.dll
Açıklamalar
!ndiskd.oid , sistemdeki bekleyen tüm OID'lerin listesini bir kerede gösterir, bu nedenle sistem kilitlenmelerinde hata ayıklamada veya hata denetimi durumlarında (DRIVER_POWER_STATE_FAILURE) 0x9F yararlı olabilir. Örneğin, kurgusal bir 0x9F hata denetimini analiz ettiğinizde sistemin bir IRP'de kilitlendiğini ve NDIS'yi beklediğinin ortaya çıkarıldığını varsayalım. NDIS'de, işletim sistemindeki IRP'ler güç geçişleri de dahil olmak üzere OID'lere çevrilir, bu nedenle !ndiskd.oid komutunu çalıştırarak, bu örnekte yığının alt kısmındaki bir cihazın bir OID_PNP_SET_POWER tutunmuş ve yığının geri kalanını asmış olabileceğini görebilirsiniz. NDIS sürücüleri bir OID'yi bir saniyeden fazla süreyle kaleme almamalıdır, bu nedenle bu cihazın sorunu çözmek için neden OID'yi uzun süre beklemede tuttuğunu araştırabilirsiniz.
Örnekler
Normal çalışan bir sistemde bekleyen OIDS örneğini görmek için miniport'un OID istek işleyici yordamında (miniport'un ilgili miniport sürücüsünde) bir kesme noktası ayarlayın. İlk olarak, sistemdeki miniport sürücülerinin listesini almak için parametresiz !ndiskd.minidriver komutunu çalıştırın. Bu örnek çıktıda, ffffdf801418d650 kdnic minidriver için tanıtıcıyı arayın..
3: kd> !ndiskd.minidriver
ffffdf8015a98380 - tunnel
ffffdf801418d650 - kdnic
Mini sürücü tutamacını tıklatın, ardından işleyicilerinin listesini görmek için ayrıntılar sayfasının en altındaki "İşleyiciler" bağlantısına tıklayın. Alternatif olarak !ndiskd.minidriver -handle -handlers komutunu girebilirsiniz. Minidriver işleyicilerinin listesini aldıktan sonra, bu örnekte tutamacı fffff80f1fd71c90 olan OidRequestHandler'ı arayın.
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
Şimdi OidRequestHandler'ın sağındaki "bp" bağlantısına tıklayın veya bu yordamda bir kesme noktası ayarlamak için bp -handle komutunu tutamacı ile girin. Ardından, hata ayıkladığınız hedef makinenizin çalışmasına ve az önce ayarladığınız kesme noktasına çarpmasına izin vermek için g komutunu yazın.
2: kd> bp fffff80f1fd71c90
2: kd> g
Breakpoint 1 hit
fffff80f`1fd71c90 448b4204 mov r8d,dword ptr [rdx+4]
Önceki örnekte gösterildiği gibi bir minidriver'ın OID istek işleyici yordamında kesme noktasını tetikledikten sonra, sistemdeki bekleyen tüm OID'lerin listesini görmek için !ndiskd.oid komutunu çalıştırabilirsiniz.
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
Bu örnekte bekleyen OID OID_GEN_STATISTICS. !ndiskd.oid dosyasının sonuçlarına baktığınızda, klon OID isteklerini filtreleyip yığına aktardığını ve OID'lerin genellikle filtreden filtreden miniport'a geçirildiğini hatırlayın. Bu nedenle, bu örnekte aynı ada sahip üç ayrı OID isteği var gibi görünse de, fiziksel olarak 3 OID'ye ve 3 sürücüye yayılan bir mantıksal işlem gerçekleştirilmiştir.
Ayrıca bakınız
Windows Vista ve Sonraki Ağ Başvurusu