다음을 통해 공유


NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언

SDV가 NDIS 드라이버를 분석할 수 있도록 하려면 NDIS에 대한 함수 역할 형식 선언을 사용하여 함수를 선언해야 합니다. 함수 역할 형식은 Ndis.h에 정의됩니다.

함수 역할 형식 및 해당 이벤트 콜백 함수 목록은 정적 드라이버 검증 도구 NDIS 함수 선언을 참조 하세요.

NDIS 드라이버의 각 콜백 함수는 해당 역할 유형을 지정하여 선언해야 합니다.

다음 코드 예제에서는 MiniportPause 콜백 함수에 대한 함수 역할 형식 선언을 보여줍니다. 이 예제에서 콜백 함수를 myMiniportPause라고 합니다. 함수 역할 형식이 MINIPORT_PAUSE.

MINIPORT_PAUSE myMiniportPause;

콜백 함수에 함수 프로토타입 선언이 있는 경우 함수 프로토타입을 함수 역할 형식 선언으로 바꿔야 합니다.

다음 예제에서는 헤더 파일 MP.h의 NDIS 함수 선언을 보여 줍니다. 이 선언은 WDK의 SDV fail_drivers 하위 디렉터리에 있습니다. 관련 함수는 Main.c에서 선언됩니다.

\tools\sdv\samples\fail_drivers\NDIS\fail_driver1.

/--------------------------------------
// Miniport routines in MAIN.C
//--------------------------------------

NDIS_STATUS
DriverEntry(
    IN  PDRIVER_OBJECT      DriverObject,
    IN  PUNICODE_STRING     RegistryPath
    );


MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MPAllocateComplete;

MINIPORT_HALT MPHalt;
MINIPORT_SET_OPTIONS MPSetOptions;
MINIPORT_INITIALIZE MPInitialize;
MINIPORT_PAUSE MPPause;
MINIPORT_RESTART MPRestart;
MINIPORT_OID_REQUEST MPOidRequest;
MINIPORT_INTERRUPT_DPC MPHandleInterrupt;
MINIPORT_ISR MPIsr;
MINIPORT_RESET MPReset;
MINIPORT_RETURN_NET_BUFFER_LISTS MPReturnNetBufferLists;
MINIPORT_CANCEL_OID_REQUEST MPCancelOidRequest;
MINIPORT_SHUTDOWN MPShutdown;
MINIPORT_SEND_NET_BUFFER_LISTS MPSendNetBufferLists;
MINIPORT_CANCEL_SEND MPCancelSendNetBufferLists;
MINIPORT_DEVICE_PNP_EVENT_NOTIFY MPPnPEventNotify;
MINIPORT_UNLOAD MPUnload;
MINIPORT_CHECK_FOR_HANG MPCheckForHang;
MINIPORT_ENABLE_INTERRUPT MpEnableInterrupt;
MINIPORT_DISABLE_INTERRUPT MpDisableInterrupt;
MINIPORT_SYNCHRONIZE_INTERRUPT MPSynchronizeInterrupt;
MINIPORT_PROCESS_SG_LIST MPProcessSGList;
NDIS_TIMER_FUNCTION MpDemonstrationTimer;
NDIS_IO_WORKITEM MPQueuedWorkItem;

함수 매개 변수 및 함수 역할 형식

C 프로그래밍 언어에 필요한 대로 함수 정의에 사용하는 매개 변수 형식은 함수 프로토타입의 매개 변수 형식 또는 이 경우 함수 역할 형식과 일치해야 합니다. SDV는 분석을 위한 함수 서명에 따라 다르며 서명이 일치하지 않는 함수는 무시합니다.

예를 들어 MINIPORT_ISR 함수 역할 형식을 사용하여 MiniportInterrupt 함수를 선언해야 합니다.

MINIPORT_ISR myMPIsr;

인터럽트 루틴인 myMPIsr를 구현하는 경우 매개 변수 형식은 MINIPORT_ISR 사용하는 형식, 즉 NDIS_HANDLE, PBOOLEAN 및 PULONG에서 사용하는 형식과 일치해야 합니다(구문에 대한 MiniportInterrupt 함수 참조).

BOOLEAN 
myMPIsr(
    __in  NDIS_HANDLE      MiniportInterruptContext,
    __out PBOOLEAN        QueueMiniportInterruptDpcHandler,
    __out PULONG          TargetProcessors
    ) {
}

드라이버에 대한 코드 분석을 실행하여 함수 선언 확인

소스 코드가 준비되었는지 여부를 확인하려면 드라이버에 대한 코드 분석을 실행 합니다. 드라이버에 대한 코드 분석은 함수 역할 형식 선언에 대한 검사 함수 정의의 매개 변수가 함수 역할 형식의 매개 변수와 일치하지 않을 때 누락되었을 수 있는 함수 선언을 식별하거나 경고하는 데 도움이 될 수 있습니다.