!ndiskd.oid

!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

Ağ Sürücüsü Tasarım Kılavuzu)

Windows Vista ve Sonraki Ağ Başvurusu

Ağ Yığınında Hata Ayıklama

NDIS uzantıları (Ndiskd.dll)

!ndiskd.help

0x9F hata denetimi

OID_PNP_SET_POWER

bp, bu, bm (Kesme Noktasını Ayarla)

OID_GEN_STATISTICS

NDIS OID'leri

NDIS OID İstek Arabirimi