중간 드라이버를 미니포트 드라이버로 등록
중간 드라이버는 NdisMRegisterMiniportDriver 를 호출하여 MiniportXxx 함수를 내보냅니다. NdisMRegisterMiniportDriver에서 반환되는 NdisMiniportDriverHandle은 드라이버가 NdisIMInitializeDeviceInstanceEx를 호출할 때 중간 드라이버 및 NDIS에 대한 입력에 의해 유지되어야 합니다.
중간 드라이버는 다음을 수행해야 합니다.
NdisZeroMemory를 사용하여 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 구조를 0으로 초기화합니다.
필수 MiniportXxx 함수의 주소와 드라이버에서 내보내는 선택적 MiniportXxx 함수를 저장합니다.
NDIS 6.0 기능을 지원하는 중간 드라이버는 버전 6.0 미니포트 드라이버로 등록해야 합니다. 미니포트 드라이버 버전 번호를 지정하는 방법에 대한 자세한 내용은 NDIS_MINIPORT_DRIVER_CHARACTERISTICS.
함수가 선택 사항이며 내보내지 않는 한 MiniportCharacteristics 의 다음 항목을 유효한 MiniportXxx 함수 주소로 설정해야 합니다. 드라이버가 함수를 내보내지 않는 경우 주소를 NULL로 설정합니다.
SetOptionsHandler
MiniportSetOptions 는 선택적 함수입니다. NDIS는 중간 드라이버가 선택적 처리기를 지정할 수 있도록 MiniportSetOptions 를 호출합니다.
InitializeHandlerEx
NDIS는 NdisIMInitializeDeviceInstanceEx를 호출하는 중간 드라이버의 결과로 MiniportInitializeEx를 호출하여 초기화되는 가상 미니포트에 대한 미니포트 어댑터 작업을 초기화합니다.
HaltHandlerEx
MiniportHaltEx 는 필수 함수입니다. NDIS는 중간 드라이버가 노출된 가상 미니포트 디바이스가 비활성화되거나 중지된 경우 또는 중간 드라이버가 NdisIMDeInitializeDeviceInstance를 호출하여 제거를 시작하는 경우 MiniportHaltEx를 호출합니다.
UnloadHandler
MiniportDriverUnload 는 필수 함수입니다. NDIS는 MiniportDriverUnload 를 호출하여 중간 드라이버를 언로드합니다.
PauseHandler
MiniportPause 는 필수 함수입니다. NDIS는 MiniportPause 를 호출하여 중간 드라이버의 지정된 가상 미니포트를 통해 네트워크 데이터의 흐름을 중지합니다.
RestartHandler
MiniportRestart 는 필수 함수입니다. NDIS는 MiniportRestart 를 호출하여 중간 드라이버의 지정된 가상 미니포트를 통해 네트워크 데이터 흐름을 다시 시작합니다.
OidRequestHandler
MiniportOidRequest는 NdisOidRequest 또는 NDIS를 호출한 지나치게 많은 드라이버에서 시작된 OID_XXX 요청을 받습니다. 중간 드라이버는 요청을 처리하거나 기본 미니포트 드라이버에 전달할 수 있습니다.
SendNetBufferListsHandler
MiniportSendNetBufferLists 는 네트워크를 통해 전송할 네트워크 데이터를 지정하는 NET_BUFFER_LIST 구조에 대한 하나 이상의 포인터 배열을 받습니다. 모든 중간 드라이버는 MiniportSendNetBufferLists 함수를 제공해야 합니다. 자세한 내용은 중간 드라이버를 통해 네트워크 데이터 전송을 참조하세요.
ReturnNetBufferListsHandler
MiniportReturnNetBufferLists는 NdisMIndicateReceiveNetBufferLists를 호출하여 이전에 상위 수준 드라이버에 표시한 반환된 NET_BUFFER_LIST 구조를 받습니다. NdisMIndicateReceiveNetBufferLists에 대한 호출은 상위 수준 드라이버에 표시된 리소스의 제어를 포기합니다. 상위 수준 드라이버가 각 표시를 소비하면 NET_BUFFER_LIST 구조에 할당된 중간 드라이버와 설명하는 리소스가 MiniportReturnNetBufferLists 함수로 반환됩니다.
CancelSendHandler
MiniportCancelSend 는 필수 함수입니다. NDIS는 MiniportCancelSend 를 호출하여 보내기 요청을 취소합니다.
CheckForHangHandler
중간 드라이버에는 MiniportCheckForHangEx가 필요하지 않으므로 이 진입점을 NULL로 설정해야 합니다.
ResetHandlerEx
중간 드라이버에는 MiniportResetEx가 필요하지 않으므로 이 진입점을 NULL로 설정해야 합니다.
DevicePnPEventNotifyHandler
MiniportDevicePnPEventNotify 함수의 진입점입니다.
ShutdownHandlerEx
MiniportShutdownEx 는 필수 함수입니다. MiniportShutdownEx 는 중간 드라이버의 DriverEntry 루틴이 실행되기 전에 가상 미니포트를 초기 상태로 복원합니다.
CancelOidRequestHandler
MiniportCancelOidRequest 는 필수 함수입니다. NDIS는 MiniportCancelOidRequest 를 호출하여 OID 요청을 취소합니다.
중간 드라이버에는 구현과 관련된 다른 MiniportXxx 함수가 필요할 수 있습니다. 선택적 등록에 대한 자세한 내용은 선택적 미니포트 드라이버 서비스 구성을 참조하세요.
특정 미니포트 드라이버 처리기 함수는 중간 드라이버에서 제공하지 않습니다. 그 이유는 이러한 드라이버가 인터럽트 디바이스를 관리하지 않거나 이러한 드라이버가 발생된 IRQL에서 버퍼를 할당하지 않는 것입니다.
참고 중간 드라이버에는 일시 중지 및 다시 시작 기능이 포함되어야 합니다. NDIS가 기본 드라이버 스택을 일시 중지하는 경우 필요한 경우 가상 미니포트의 일시 중지 및 다시 시작에 대한 지원을 포함합니다. 일시 중지 및 다시 시작에 대한 자세한 내용은 드라이버 스택 관리를 참조하세요.