다음을 통해 공유


WDI IHV 드라이버 인터페이스

WDI IHV 미니포트는 다른 NDIS 미니포트 드라이버와 같으며 NDIS 미니포트에 대한 개발 사례 및 설명서를 따릅니다. NDIS 처리기에 대한 네이티브 WLAN 미니포트 드라이버의 책임은 MS 구성 요소와 WDI IHV 드라이버 간에 분할됩니다. Microsoft WLAN 구성 요소는 모든 Wi-Fi 미니포트에 적용할 수 있는 NDIS 요구 사항을 처리하므로 모든 IHV가 모든 작업을 다시 실행하지 않아도 됩니다. WDI IHV 미니포트에 적용될 때 네이티브 WLAN IHV 미니포트에 대한 NDIS 처리기의 매핑 및 동작 변경 내용은 아래에 설명되어 있습니다.

드라이버 설치

WDI IHV 미니포트 드라이버가 로드되고 시스템에 설치되는 방식은 변경되지 않습니다. INF 및 설치 프로세스는 IHV 네이티브 WLAN 미니포트 드라이버와 비슷합니다. 기존 NDIS 드라이버와 마찬가지로 IHV의 WLAN 어댑터로 작동하기 위해 IHV 드라이버를 로드해야 하는 경우 운영 체제는 IHV 미니포트 드라이버의 DriverEntry 루틴을 호출합니다.

DriverEntry

운영 체제는 WDI IHV 미니포트 드라이버의 DriverEntry 루틴을 직접 호출합니다. IHV 미니포트는 일반 NDIS 미니포트의 DriverEntry 루틴에 대한 대부분의 지침을 따릅니다. 한 가지 예외는 NdisMRegisterMiniportDriver를 호출하는 대신 IHV 미니포트가 NdisMRegisterWdiMiniportDriver 를 호출하여 운영 체제에 Microsoft WLAN 구성 요소를 사용하도록 지시한다는 것입니다.

다음은 NdisMRegisterWdiMiniportDriver의 주요 매개 변수입니다.

  • NDIS_MINIPORT_DRIVER_CHARACTERISTICS: 네이티브 Wi-Fi 미니포트가 NDIS에 등록하는 데 사용하는 원래 NDIS 구조입니다. WDI 모델의 경우 대부분의 처리기 매개 변수는 선택 사항입니다. 유일한 필수 처리기는 MINIPORT_OID_REQUEST_HANDLERMINIPORT_DRIVER_UNLOAD. MINIPORT_OID_REQUEST_HANDLER WDI 메시지를 IHV 드라이버에 전달하는 데 사용됩니다. 다른 처리기가 지정된 경우 Microsoft WLAN 구성 요소는 일반적으로 처리기에 대한 자체 처리를 수행한 후 처리기를 호출합니다.
  • NDIS_MINIPORT_DRIVER_WDI_CHARACTERISTICS: WDI 미니포트 드라이버가 구현해야 하는 새로운 처리기 집합입니다. IHV 드라이버에서 컨트롤 경로에 대한 추가 처리기 및 데이터 경로에 대한 전체 처리기 집합을 등록하는 데 사용됩니다.

IHV 미니포트가 NdisMRegisterWdiMiniportDriver를 호출하면 Microsoft WLAN 구성 요소가 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 처리기를 업데이트하고 NDIS의 NdisMRegisterMiniportDriver를 호출합니다. 업데이트는 Microsoft WLAN 구성 요소가 WDI IHV 미니포트 드라이버에 지원/간소화를 제공할 수 있는 처리기를 가로챌 수 있도록 수행됩니다.

다음은 WDI IHV 미니포트 드라이버에 대한 DriverEntry 프로세스의 일반적인 흐름입니다.

wdi 드라이버 엔트리 흐름.

DriverEntry에 대한 자세한 내용은 NDIS 미니포트 드라이버의 DriverEntry를 참조하세요.

MiniportSetOptions

위의 DriverEntry 다이어그램에 표시된 것처럼 WDI IHV 미니포트가 MiniportSetOptions 처리기를 등록한 경우 운영 체제는 NdisMRegisterWdiMiniportDriver를 호출하는 미니포트 드라이버의 컨텍스트에서 해당 함수를 호출합니다.

IHV 미니포트 드라이버가 NdisSetOptionalHandlers를 사용하여 옵션 처리기를 등록하는 경우 해당 처리기는 Microsoft 구성 요소에 의해 WDI 계층을 통해 직렬화되지 않을 수 있습니다. 따라서 IHV 구성 요소는 해당 처리기에 대한 모든 동기화 요구 사항을 처리해야 합니다.

MiniportInitializeEx

WDI 모델은 MiniportInitializeEx 동작을 여러 WDI 인터페이스 호출로 분할합니다.

  1. MiniportWdiAllocateAdapter를 호출합니다.

    운영 체제에서 IHV 하드웨어의 instance 찾으면 WDI IHV 미니포트 드라이버에 대한 첫 번째 호출입니다. 이 호출에서 WDI 미니포트는 디바이스의 소프트웨어 표현(MiniportAdapterContext)을 만드는 데 필요한 작업을 수행합니다. 또한 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 구조를 채울 디바이스에 대한 정보를 결정합니다. 디바이스 및 Wi-Fi 스택의 실제 초기화는 나중에 Microsoft 구성 요소가 특정 초기화를 수행하기 위해 WDI 명령을 보낼 때 수행됩니다.

    Microsoft 구성 요소는 WDI IHV 미니포트 드라이버에서 가져온 데이터를 사용하여 NdisMSetMiniportAttributes를 호출하고 NDIS에서 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 설정합니다. 대부분의 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 필드는 Microsoft 구성 요소의 기본값으로 채워집니다. IHV 드라이버는 MiniportAdapterContextInterfaceType 필드를 채워야 합니다.

    이 호출이 IHV 미니포트 드라이버에서 반환되면 MiniportOidRequest 처리기를 통해 WDI 명령을 수신하기 시작합니다. 이 호출 중에 Microsoft 구성 요소가 재설정/복구 작업을 수행하지 못할 수 있으므로 여기에서 수행되는 모든 작업은 빠르고 안정적이어야 합니다.

  2. MiniportWdiOpenAdapter를 호출합니다.

    MiniportWdiAllocateAdapter 이후 Microsoft 구성 요소는 MiniportWdiOpenAdapter를 호출하여 펌웨어를 로드하고 하드웨어를 초기화합니다.

  3. MiniportOidRequest를 사용하는 여러 WDI 명령.

    MiniportWdiOpenAdapter 이후 Microsoft 구성 요소는 IHV 미니포트에 다음 작업/속성/호출을 보냅니다.

    1. MiniportWdiTalTxRxInitialize를 호출하여 데이터 경로 및 교환 처리기를 초기화합니다.
    2. OID_WDI_GET_ADAPTER_CAPABILITIES 호출하여 어댑터의 기능을 가져옵니다.
    3. OID_WDI_SET_ADAPTER_CONFIGURATION 호출하여 어댑터를 구성합니다.
    4. OID_WDI_TASK_SET_RADIO_STATE 호출하여 아직 예상 상태가 아닌 경우 초기 라디오 상태를 설정합니다.
    5. MiniportWdiTalTxRxStart를 호출하여 데이터 경로를 설정합니다.
    6. OID_WDI_TASK_CREATE_PORT 호출하여 초기 포트를 만듭니다.

    다른 명령은 Microsoft 구성 요소의 MiniportInitializeEx 처리의 일부로 IHV 구성 요소로 전송될 수도 있습니다. 그러나 MiniportWdiStartOperation 이 호출될 때까지 Microsoft 구성 요소는 무선 통신이 필요한 작업을 보내지 않습니다. 항상 먼저 전송되는 OID_WDI_TASK_OPEN 제외하면 다른 명령/호출의 순서가 변경될 수 있습니다.

    Microsoft 구성 요소는 WDI IHV 미니포트 드라이버에서 가져온 데이터를 사용하여 NdisMSetMiniportAttributes를 호출하고 NDIS 에서 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 설정하고 NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES 설정합니다.

  4. MiniportWdiStartOperation을 호출합니다.

    IHV 드라이버가 추가 MiniportInitializeEx 작업을 수행하는 데 사용할 수 있는 NDIS_MINIPORT_DRIVER_WDI_CHARACTERISTICS 내의 선택적 WDI 미니포트 처리기입니다. IHV 미니포트는 Microsoft 구성 요소가 미니포트 초기화를 완료했으며 미니포트가 필요한 백그라운드 작업을 시작할 수 있다는 힌트로 사용할 수도 있습니다.

    아래 다이어그램은 MiniportInitializeEx의 흐름을 보여줍니다.

    wdi 미니포트 초기화 흐름.

    중간 작업이 실패하면 Microsoft 구성 요소는 이전 작업을 실행 취소하고 미니포트 가져오기에 실패합니다. 예를 들어 OID_WDI_TASK_CREATE_PORT 실패하면 데이터 경로가 정리되고 OID_WDI_TASK_CLOSE 전송되고 미니포트가 실패합니다.

MiniportHaltEx

네이티브 Wi-Fi 미니포트에서 MiniportHaltEx는 미니포트에 작업을 중지하고 어댑터 instance 클린 지시하는 데 사용됩니다. WDI 모델에서 Microsoft 구성 요소는 원래 MiniportHaltEx 호출을 처리하고 여러 WDI 인터페이스 호출로 분할합니다.

  1. MiniportWdiStopOperation을 호출합니다.

    IHV 드라이버가 MiniportWdiStartOperation에서 수행한 작업을 실행 취소하는 데 사용할 수 있는 NDIS_MINIPORT_DRIVER_WDI_CHARACTERISTICS 내의 선택적 WDI 미니포트 처리기입니다.

  2. MiniportOidRequest를 사용하는 여러 WDI 명령.

    MiniportWdiStopOperation 후 Microsoft 구성 요소는 IHV 드라이버의 현재 상태를 클린 위해 작업/속성을 IHV 미니포트로 보냅니다. 이 정리에는 다음이 포함될 수 있습니다.

    1. OID_WDI_TASK_DISCONNECT/OID_WDI_TASK_STOP_AP 호출하여 기존 연결을 해제합니다.
    2. OID_WDI_TASK_DELETE_PORT 호출하여 생성된 모든 포트를 삭제합니다.
    3. MiniportWdiTalTxRxStop을 호출하여 데이터 경로를 중지합니다.
    4. MiniportWdiTalTxRxDeinitialize를 호출하여 데이터 경로를 초기화합니다.
    5. 를 호출하여 하드웨어 상태를 클린. IHV 드라이버에 의해 등록된 MiniportWdiCloseAdapter 를 사용하여 IHV로 전송됩니다.
  3. 위의 모든 명령이 호출되면 Microsoft 구성 요소는 MiniportWdiFreeAdapter 를 호출하여 IHV 드라이버가 있을 수 있는 모든 소프트웨어 상태를 삭제하도록 합니다.

아래 다이어그램은 MiniportHaltEx의 흐름을 보여줍니다.

wdi miniport 중단 흐름.

디바이스가 깜짝 제거되었거나 시스템의 전원이 꺼진 경우 MiniportHaltEx 처리가 수행되지 않습니다. 깜짝 제거는 MiniportDevicePnPEventNotify 처리기 동작을 참조하세요. 시스템 종료의 경우 MiniportShutdownEx 처리기 동작을 참조하세요.

MiniportDriverUnload

MiniportDriverUnload 는 WDI IHV 미니포트가 언로드되기 전에 호출되는 처리기입니다. WDI IHV 미니포트 드라이버는 Microsoft 구성 요소를 호출하여 자체 등록을 취소합니다. Microsoft 구성 요소는 NdisMDeregisterMiniportDriver를 호출합니다.

아래 다이어그램은 MiniportDriverUnload의 흐름을 보여줍니다.

wdi 미니포트 드라이버 언로드 흐름.

MiniportPause

NDIS MiniportPause 요구 사항은 Microsoft 구성 요소에서 처리됩니다. MiniportPause의 일부로 Microsoft 구성 요소는 데이터 경로를 중지하고 데이터 경로가 클린 때까지 기다립니다. WDI IHV 미니포트는 선택적으로 데이터 경로 정리를 완료한 후 Microsoft 구성 요소에서 호출하는 MiniportWdiPostAdapterPause 콜백에 등록할 수 있습니다.

아래 다이어그램은 MiniportPause의 흐름을 보여줍니다.

wdi miniport 일시 중지 흐름입니다.

MiniportRestart

NDIS MiniportRestart 요구 사항은 Microsoft 구성 요소에서 처리됩니다. MiniportRestart의 일부로 Microsoft 구성 요소는 MiniportPause의 일부로 수행한 데이터 경로 일시 중지 작업을 실행 취소합니다. WDI IHV 미니포트는 선택적으로 데이터 경로 다시 시작을 완료한 후 Microsoft 구성 요소에서 호출하는 MiniportWdiPostAdapterRestart 콜백에 등록할 수 있습니다.

아래 다이어그램은 MiniportRestart의 흐름을 보여줍니다.

wdi miniport 다시 시작 흐름.

MiniportResetEx

MiniportResetEx 는 Microsoft 구성 요소에서 처리되지 않습니다. WDI IHV 미니포트는 필요에 따라 Microsoft 구성 요소에서 호출하는 MiniportResetEx 콜백에 등록할 수 있습니다.

MiniportDevicePnPEventNotify

MiniportDevicePnPEventNotify 는 디바이스의 깜짝 제거와 같은 PNP 이벤트의 NDIS 드라이버에 알리는 데 사용됩니다. NDIS가 이 알림을 보내면 먼저 처리를 위해 WDI IHV 미니포트로 전달됩니다. IHV 구성 요소의 처리가 완료되면 Microsoft 구성 요소는 이 이벤트에 대한 적절한 처리를 수행합니다. IHV 구성 요소로 전달되는 호출은 다른 작업 및 콜백과 함께 직렬화되지 않습니다.

아래 다이어그램은 MiniportDevicePnPEventNotify의 흐름을 보여줍니다.

wdi miniport 드라이브 pnp 알림 흐름.

MiniportShutdownEx

MiniportShutdownEx 는 시스템 종료 이벤트에 대해 NDIS 드라이버에 알리는 데 사용됩니다. NDIS가 이 알림을 보내면 먼저 Microsoft 구성 요소에서 처리됩니다. Microsoft 구성 요소의 처리가 완료되면 처리를 위해 이벤트를 WDI IHV 미니포트에 전달합니다.

아래 다이어그램은 MiniportShutdownEx의 흐름을 보여줍니다.

wdi 미니포트 종료 흐름입니다.

MiniportOidRequest

MiniportOidRequest 처리기는 WDI IHV 미니포트가 구현해야 하는 필수 처리기입니다. Microsoft 구성 요소에서 WDI 명령을 IHV 미니포트에 제출하는 데 사용됩니다. 또한 Microsoft 구성 요소가 처리하지 않는 OID를 IHV 미니포트로 전달하는 데도 사용됩니다.

WDI IHV 미니포트에 대한 MiniportOidRequest 호출은 WDI 명령에 대한 M1 메시지로 간주되어야 합니다. OID 완료( NdisMOidRequestComplete 를 통해 또는 MiniportOidRequest에서 비 PENDING 반환을 통해)는 WDI 작업/명령에 대한 M3 메시지로 간주되어야 합니다.

모든 WDI 명령에는 작업에 대해 NDIS_STATUS 코드를 반환할 수 있는 두 개의 잠재적 필드가 있습니다. 즉, MiniportOidRequest 호출(또는 NdisMOidRequestComplete)의 상태 코드와 WDI_MESSAGE_HEADER 필드의 상태 코드(OID 완성 또는 NdisMIndicateStatusEx를 통해). Microsoft 구성 요소는 WDI_MESSAGE_HEADERStatus 필드를 보기 전에 항상 OID 완성의 NDIS_STATUS 확인합니다. WDI OID 처리에 대한 IHV 구성 요소의 기대치는 다음과 같습니다.

  1. WDI OID는 NdisRequestMethodNDIS_OID_REQUESTRequestType을 사용하여 IHV 구성 요소에 제출되며 해당 메시지 및 메시지 길이는 DATA에 있습니다. METHOD_INFORMATION. InformationBufferDATA. METHOD_INFORMATION. InputBufferLength 필드 각각.
  2. IHV 구성 요소는 명령을 처리하는 동안 오류가 발생하면 OID 완료 시 오류를 보고하고 Wi-Fi 수준 오류가 있는 경우 WDI_MESSAGE_HEADER 상태 필드를 성공하지 못하도록 설정합니다.
  3. 작업 및 속성의 경우 요청에 대한 포트 번호는 WDI_MESSAGE_HEADERPortId 필드에 있습니다. NDIS_OID_REQUESTPortNumber는 항상 0으로 설정됩니다.
  4. OID를 완료하려면 MiniportOidRequest 가 NDIS_STATUS_PENDING 반환하고 NdisMOidRequestComplete를 사용하여 나중에 OID를 완료(동기 또는 비동기적으로)할 수 있습니다.
  5. IHV 구성 요소가 NDIS_STATUS_SUCCESS 사용하여 OID를 완료하는 경우 OID 요청의 BytesWritten 필드를 WDI_MESSAGE_HEADER 공간을 포함하여 적절한 바이트 수로 채워야 합니다.
  6. IHV 구성 요소에 DATA에 충분한 공간이 없는 경우 METHOD_INFORMATION. OutputBufferLength 필드는 응답을 채우고 OID를 NDIS_STATUS_BUFFER_TOO_SHORT 완료하고 데이터를 채웁니다 . METHOD_INFORMATION. BytesNeeded 필드입니다. Microsoft 구성 요소는 요청된 크기의 버퍼를 할당하고 IHV에 새 요청을 제출하려고 시도할 수 있습니다.
  7. 작업인 경우 작업의 M4(NdisMIndicateStatusEx)는 작업이 성공적으로 시작된 것으로 보고된 경우에만 표시되어야 합니다. OID 완료가 성공하고 OID 완료에서 WDI_MESSAGE_HEADER상태가 성공했습니다.

아래 다이어그램은 단일 WDI 명령에 매핑되는 NDIS OID 요청의 예를 보여 줍니다. 운영 체제에서 OID 요청을 제출하면 Microsoft 구성 요소는 이를 WDI OID 요청으로 변환하고 WDI OID 요청을 IHV 미니포트에 제출합니다. IHV 미니포트가 OID를 완료하면 Microsoft 구성 요소가 원래 OID 요청을 적절하게 완료합니다.

단일 wdi 명령에 대한 wdi miniport oid 요청 시퀀스입니다.

OriginalOidRequest가 여러 WDI OidRequests에 매핑되고 WDI 요청 중 하나가 실패하면 OriginalOidRequest도 실패합니다. 중간 작업의 하위 집합이 이미 완료된 경우 Microsoft 구성 요소는 클린 지원하는 작업을 실행 취소하려고 시도합니다.

아래 다이어그램은 Microsoft 구성 요소에서 완료된 NDIS OID 요청의 예를 보여 줍니다. 운영 체제에서 OID 요청을 제출하면 Microsoft 구성 요소가 OID를 처리하고 완료합니다. 이 OID는 WDI IHV 미니포트에 전달되지 않습니다.

microsoft 구성 요소에서 처리하는 oid에 대한 wdi miniport oid 요청 시퀀스입니다.

Microsoft 구성 요소에서 이해하지 못하는 OID는 처리를 위해 IHV 구성 요소로 직접 전달됩니다.

microsoft 구성 요소에서 처리되지 않는 oid에 대한 wdi miniport oid 요청 시퀀스입니다.

MiniportOidRequest의 동작은 WDI IHV 미니포트 드라이버에 대해 변경되지 않습니다(네이티브 Wi-Fi 미니포트와 비교). 호출은 직렬화되고 IHV 미니포트는 NdisMOidRequestComplete를 호출하여 동기적으로 또는 비동기적으로 완료할 수 있습니다.

MiniportCancelOidRequest

WDI 메시지에 매핑되지 않은 OID를 처리해야 하는 WDI IHV 미니포트에서 사용하는 선택적 처리기입니다. 이 처리기는 WDI OID에 사용되지 않습니다. WDI OID는 신속하게 완료해야 하며 IHV 미니포트 드라이버가 보류 중인 OID를 취소할 필요가 없습니다. WDI 작업의 취소는 적절한 취소 작업 OID 요청을 사용하여 처리됩니다. 매핑되지 않은 OID의 경우 예상 동작은 NDIS에 의해 정의됩니다.

NdisMIndicateStatusEx

NdisMIndicateStatusEx 는 WDI IHV 미니포트에서 Microsoft 구성 요소에 표시를 보내는 데 사용됩니다. 표시는 TKIP MIC 실패와 같은 원치 않는 표시, 또는 작업에 대한 완료 (M4)에 대한 요청된 표시일 수 있습니다.

아래 다이어그램은 해당 NDIS/네이티브 Wi-Fi 표시가 있는 WDI 표시의 예를 보여 줍니다. IHV 미니포트에서 Microsoft 구성 요소에 표시를 제출하면 Microsoft 구성 요소는 해당 표시를 기존 표시로 변환하고 운영 체제에 전달합니다.

wdi miniport 상태 표시 흐름입니다.

아래 다이어그램은 해당 NDIS/네이티브 Wi-Fi 표시가 없는 WDI 표시의 예를 보여 줍니다. Microsoft 구성 요소에서 처리합니다.

wdi 상태 ndis에 직접 매핑하지 않고 표시합니다.

아래 다이어그램은 Microsoft 구성 요소에서 인식할 수 없는 표시를 보여줍니다. 표시는 운영 체제에 있는 그대로 전달됩니다.

wdi 상태 표시가 microsoft 구성 요소에서 인식되지 않습니다.

NdisMIndicateStatusEx의 동작은 WDI IHV 미니포트 드라이버에 대해 변경되지 않습니다(네이티브 Wi-Fi 미니포트와 비교).

MiniportDirectOidRequest

WDI 메시지에 매핑되지 않은 직접 OID를 처리해야 하는 경우 WDI IHV 미니포트 드라이버에 의해 등록된 선택적 처리기입니다. Wi-Fi Direct에 대한 모든 기존 Direct OID는 WDI 메시지에 매핑되므로 이 처리기는 해당 기능을 지원할 필요가 없습니다. 지원되지 않는 직접 OID는 Microsoft 구성 요소에 의해 직렬화되지 않습니다.

MiniportCancelDirectOidRequest

WDI 메시지에 매핑되지 않은 직접 OID를 처리해야 하는 WDI IHV 미니포트에서 사용하는 선택적 처리기입니다. 매핑되지 않은 OID의 경우 예상 동작은 NDIS에 의해 정의됩니다.

MiniportSendNetBufferLists

이 처리기는 WDI IHV 미니포트 드라이버에서 사용되지 않으므로 제공되지 않아야 합니다. Microsoft 구성 요소는 NDIS_MINIPORT_DRIVER_WDI_CHARACTERISTICS 통해 등록된 데이터 경로 처리기를 사용하여 IHV 미니포트에 송신 패킷을 제출합니다.

MiniportCancelSend

이 처리기는 WDI IHV 미니포트 드라이버에서 사용되지 않으며 제공되지 않아야 합니다.

MiniportReturnNetBufferLists

이 처리기는 WDI IHV 미니포트 드라이버에서 사용되지 않으며 제공되지 않아야 합니다. Microsoft 구성 요소는 NDIS_MINIPORT_DRIVER_WDI_CHARACTERISTICS 통해 등록된 데이터 경로 처리기를 사용하여 수신된 패킷을 IHV 미니포트로 반환합니다.

WDI 처리기: MiniportWdiOpenAdapter

MiniportWdiOpenAdapter 처리기는 Microsoft 구성 요소에서 IHV 드라이버에서 작업 열기 작업을 시작하는 데 사용됩니다. 이 호출은 신속하게 완료되어야 하며 열기 작업이 성공적으로 시작된 경우 IHV는 이 호출에서 NDIS_STATUS_SUCCESS 반환하고 MiniportWdiAllocateAdapterNDIS_WDI_INIT_PARAMETERS 매개 변수에 전달되는 OpenAdapterComplete 처리기를 호출해야 합니다.

WDI 처리기: MiniportWdiCloseAdapter

MiniportWdiCloseAdapter 처리기는 Microsoft 구성 요소에서 IHV 드라이버에서 작업 닫기 작업을 시작하는 데 사용됩니다. 이 호출은 신속하게 완료되어야 하며 열기 작업이 성공적으로 시작된 경우 IHV는 이 호출에서 NDIS_STATUS_SUCCESS 반환하고 MiniportWdiAllocateAdapterNDIS_WDI_INIT_PARAMETERS 매개 변수에 전달되는 CloseAdapterComplete 처리기를 호출해야 합니다.