다음을 통해 공유


NDIS 확장(Ndiskd.dll)

이 섹션에서는 NDIS(네트워크 디바이스 인터페이스 사양) 드라이버를 디버깅하는 데 유용한 디버거 확장인 !ndiskd에서 사용할 수 있는 명령에 대해 설명합니다. 이러한 명령을 사용하면 네트워크 드라이버 개발자가 Windows 네트워킹 스택의 더 큰 그림과 해당 드라이버가 상호 작용하는 방식을 볼 수 있습니다. !ndiskd를 사용하면 모든 네트워크 어댑터의 상태(!ndiskd.netadapter), 컴퓨터 네트워크 스택의 시각적 다이어그램(!ndiskd.netreport), 네트워크 어댑터(!ndiskd.nbllog)의 트래픽 로그 또는 보류 중인 모든 OID 요청 목록(!ndiskd.oid)을 볼 수 있습니다.

명령은 Ndiskd.dll 찾을 수 있습니다. 기호를 로드하려면 디버거 명령 창에 .reload /f ndis.sys 입력합니다. 성공적으로 로드된 기호를 확인하려면 !lmi ndis 확장을 사용하고 아래쪽으로 "성공적으로 로드된 기호"라는 구를 찾습니다. 출력은 다음 예제와 비슷하게 표시됩니다.

0: kd> !lmi ndis
Loaded Module Info: [ndis] 
         Module: ndis
   Base Address: fffff80174570000
     Image Name: ndis.sys
   Machine Type: 34404 (X64)
     Time Stamp: 938f9f4e (This is a reproducible build file hash, not a true timestamp)
           Size: 16f000
       CheckSum: 167a05
Characteristics: 22  
Debug Data Dirs: Type  Size     VA  Pointer
             CODEVIEW    21, d4060,   d2c60 RSDS - GUID: {9CC82DBE-96A0-773D-29E0-62B698C4C3A8}
               Age: 1, Pdb: ndis.pdb
                 POGO   988, d4084,   d2c84 [Data not mapped]
                REPRO    24, d4a0c,   d360c Reproducible build[Data not mapped]
     Image Type: MEMORY   - Image read successfully from loaded memory.
    Symbol Type: PDB      - Symbols loaded successfully from symbol server.
                 C:\ProgramData\Dbg\sym\ndis.pdb\9CC82DBE96A0773D29E062B698C4C3A81\ndis.pdb
    Load Report: public symbols , not source indexed 
                 C:\ProgramData\Dbg\sym\ndis.pdb\9CC82DBE96A0773D29E062B698C4C3A81\ndis.pdb

!ndiskd의 많은 확장 명령은 디버거 창에 표시되는 결과에 하이퍼링크를 제공합니다. 이러한 하이퍼링크에 대한 텍스트는 디버지 머신에서 명령을 실행할 때 표시되는 정확한 형식을 설명하기 위해 제공된 샘플에 남아 있습니다. 예제 중 일부는 일반적인 사용 흐름을 이해할 수 있도록 이러한 링크를 클릭하는 것을 명시적으로 참조하지만 예제에서는 각 명령의 대체 명령줄 형태도 제공합니다.

일반적인 매개 변수

모든 !ndiskd 명령은 다음 제네릭 매개 변수를 지원합니다.

-자세한
추가 세부 정보를 표시합니다.

-간결한
일부 상용구 출력을 표시하지 않습니다.

-정적
일부 대화형 출력을 표시하지 않습니다.

-dml 0|1
DML(디버거 태그 언어) 출력을 사용할 수 있는지 여부를 제어합니다.

-unicode 0|1
유니코드 문자 출력이 허용되는지 여부를 제어합니다.

-들여쓰기 N
들여쓰기 수준당 N 개 공백을 사용합니다.

-강제로
원격 데이터 온전성에 대한 몇 가지 안전 검사를 재정의합니다.

-tracedata
!ndiskd 자체를 디버그하는 자세한 추적 메시지를 표시합니다.

Net Adapter, NDIS 드라이버 및 일반 명령

다음 명령은 컴퓨터의 네트워크 어댑터, 네트워크 드라이버 및 네트워크 스택과 연결된 일반 명령(예: rcvqueues, open, filters, OID 및 RW 잠금)에 대한 정보를 표시합니다.

NET_BUFFER_LIST 및 NET_BUFFER 명령

다음 명령은 NET_BUFFER_LIST NET_BUFFER 구조와 관련된 정보를 표시합니다.

NetAdapterCx 명령

다음 명령은 네트워크 어댑터 WDF 클래스 확장 NetAdapterCx 및 관련 구조, NET_RING_BUFFERNET_PACKET 관련된 정보를 표시합니다.

네트워크 인터페이스 명령

다음 명령은 네트워크 인터페이스와 관련된 정보를 표시합니다.

NDIS_PACKET 명령

다음 명령은 NDIS_PACKET 구조체에 대한 정보를 표시합니다. 이러한 확장은 레거시 NDIS 5.x 드라이버를 위한 것입니다. NDIS_PACKET 구조와 관련 아키텍처는 더 이상 사용되지 않습니다.

CoNDIS 명령

다음 명령은 연결 지향 NDIS 연결에 대한 정보를 표시합니다.

NDIS 디버깅 명령

다음 명령은 NDIS 리카운트, 이벤트 로그, 스택 추적 및 디버그 추적과 관련된 정보를 표시합니다.

WDI 명령

다음 명령은 WDI 미니포트 드라이버에 대한 정보를 표시합니다.

NDIS 및 !ndiskd 정보 명령

다음 명령은 NDIS.sys 및 ndiskd.dll 대한 정보를 표시합니다.

기타 명령

Windows Vista 이상용 NDIS 드라이버를 디자인하는 방법에 대한 자세한 내용은 네트워크 드라이버 디자인 가이드를 참조하세요.

Windows Vista 이상용 NDIS 드라이버에 대한 참조에 대한 자세한 내용은 Windows Vista 및 이후 네트워킹 참조를 참조하세요.

!ndiskd 디버거 명령을 사용하여 네트워크 스택을 디버그하는 데모는 네트워크 스택 채널 9 디버깅 비디오를 참조하세요.