NdisOpenAdapter 함수(ndis.h)

참고 NDIS 5. x 는 더 이상 사용되지 않으며 NDIS 6으로 대체됩니다. x. 새로운 NDIS 드라이버 개발은 Windows Vista부터 시작하는 네트워크 드라이버를 참조하세요. NDIS 5 포팅에 대한 자세한 내용입니다. x 드라이버를 NDIS 6에 연결합니다. x, NDIS 5.x 드라이버를 NDIS 6.0으로 포팅을 참조하세요.

NdisOpenAdapter 는 호출 프로토콜과 특정 기본 NIC 드라이버 또는 NDIS 중간 드라이버 간에 바인딩을 설정합니다.

구문

void NdisOpenAdapter(
  [out]          PNDIS_STATUS Status,
  [out]          PNDIS_STATUS OpenErrorStatus,
  [out]          PNDIS_HANDLE NdisBindingHandle,
  [out]          PUINT        SelectedMediumIndex,
  [in]           PNDIS_MEDIUM MediumArray,
  [in]           UINT         MediumArraySize,
  [in]           NDIS_HANDLE  NdisProtocolHandle,
  [in]           NDIS_HANDLE  ProtocolBindingContext,
  [in]           PNDIS_STRING AdapterName,
  [in]           UINT         OpenOptions,
  [in, optional] PSTRING      AddressingInformation
);

매개 변수

[out] Status

이 함수의 반환 시 다음 값 중 하나일 수 있는 호출자 제공 변수에 대한 포인터입니다.

  • STATUS_SUCCESS
    이제 호출자가 NdisXxx에 대한 후속 호출에서 NdisBindingHandleSelectedMediumIndex에서 반환된 값을 사용할 수 있도록 요청된 바인딩이 설정되었습니다.

  • NDIS_STATUS_PENDING
    요청된 작업이 비동기적으로 처리되고 있으며 열기가 완료되면 호출자의 ProtocolOpenAdapterComplete 함수가 호출됩니다.

  • NDIS_STATUS_RESOURCES
    NDIS가 충분한 메모리를 할당하거나 열린 바인딩을 추적하는 데 사용하는 상태를 초기화할 수 없어 요청된 작업이 실패했습니다.

  • NDIS_STATUS_ADAPTER_NOT_FOUND
    AdapterName의 이름을 시스템 개체 네임스페이스에서 찾을 수 없어 요청된 작업이 실패했습니다.

  • NDIS_STATUS_UNSUPPORTED_MEDIA
    MediumArray의 배열은 NDIS 또는 기본 드라이버에서 지원하는 매체를 지정하지 않았습니다.

  • NDIS_STATUS_CLOSING
    어댑터 이름에 지정된 호출자 또는 물리적 또는 가상 디바이스가 닫혀 있습니다.

  • NDIS_STATUS_OPEN_FAILED
    이전의 특정 이유 중 어느 것도 열려 있지 않은 경우 예를 들어 NDIS가 선택한 매체에 대한 필터 패키지를 초기화할 수 없을 수 있습니다.

[out] OpenErrorStatus

NdisOpenAdapterStatus에서 오류를 반환하는 경우 추가 정보를 제공하는 NDIS_STATUS_XXX 오류를 포함할 수 있는 호출자 제공 변수에 대한 포인터입니다. 예를 들어 토큰 링 NIC의 드라이버는 이 변수에서 링 오류를 반환할 수 있습니다.

[out] NdisBindingHandle

NDIS가 호출자와 AdapterName에 지정된 지정된 물리적 또는 가상 NIC 간의 성공적인 바인딩을 나타내는 핸들을 반환하는 호출자 제공 변수에 대한 포인터입니다.

[out] SelectedMediumIndex

NDIS가 기본 NDIS 드라이버에서 사용하는 미디어 형식을 지정하는 배열 요소의 인덱스를 반환하는 호출자 제공 변수에 대한 포인터입니다.

[in] MediumArray

호출자가 지원할 수 있는 미디어 형식을 지정하는 NDIS_MEDIUM 형식 값 배열에 대한 포인터입니다. 가능한 요소에는 다음의 적절한 하위 집합이 포함됩니다.

  • NdisMedium802_3
    이더넷(802.3) 네트워크를 지정합니다.

  • NdisMedium802_5
    토큰 링(802.5) 네트워크를 지정합니다.

  • NdisMediumFddi
    FDDI(파이버 분산 데이터 인터페이스) 네트워크를 지정합니다.

  • NdisMediumWan
    광역 네트워크를 지정합니다. 이 형식은 다양한 형태의 지점 및 WAN NIC뿐만 아니라 바인딩이 설정된 후 프로토콜 드라이버와 기본 드라이버 간에 협상해야 하는 변형 주소/헤더 형식을 다룹니다.

  • NdisMediumLocalTalk
    LocalTalk 네트워크를 지정합니다.

  • NdisMediumDix
    드라이버가 DIX 이더넷 헤더 형식을 사용하는 이더넷 네트워크를 지정합니다.

  • NdisMediumArcnetRaw
    ARCNET 네트워크를 지정합니다.

  • NdisMediumArcnet878_2
    ARCNET(878.2) 네트워크를 지정합니다.

  • NdisMediumAtm
    ATM 네트워크를 지정합니다. 연결 지향 클라이언트 프로토콜은 이 값을 반환하는 기본 미니포트 드라이버에 자신을 바인딩할 수 있습니다. 그렇지 않으면 레거시 프로토콜은 네트워크 관리자가 LanE 드라이버를 구성하는 방법에 따라 중간 형식을 NdisMedium802_3 또는 NdisMedium802_5 보고하는 시스템 제공 LanE 중간 드라이버에 바인딩됩니다.

  • NdisMediumWirelessWan
    무선 네트워크를 지정합니다. WLAN(무선 LAN) 또는 WWAN(무선 WAN) 패킷을 지원하는 NDIS 5.X 미니포트 드라이버는 해당 매체를 NdisMedium802_3 선언하고 이더넷을 상위 수준 NDIS 드라이버에 에뮬레이트합니다.

    참고 이 미디어 유형은 Windows Vista부터 사용할 수 없습니다.

  • NdisMediumIrda
    IrDA(적외선) 네트워크를 지정합니다.

  • NdisMediumCoWan
    연결 지향 환경에서 광역 네트워크를 지정합니다.

  • NdisMedium1394
    IEEE 1394(방화선) 네트워크를 지정합니다.

[in] MediumArraySize

MediumArray의 요소 수를 지정합니다.

[in] NdisProtocolHandle

NdisRegisterProtocol에서 반환된 핸들을 지정합니다.

[in] ProtocolBindingContext

프로토콜이 설정된 후 이 바인딩에 대한 상태를 유지하는 호출자 제공 상주 컨텍스트 영역에 대한 핸들을 지정합니다.

[in] AdapterName

시스템 기본 문자 집합에 지정된 계산된 문자열을 포함하는 NDIS_STRING 형식에 대한 포인터로, 기본 NDIS 드라이버의 NIC 또는 가상 어댑터의 이름을 지정합니다. 이 드라이버는 위쪽 가장자리( MiniportXxx) 함수 집합을 내보냅니다. Windows 2000 이상 드라이버의 경우 계산된 이 문자열에는 유니코드 문자가 포함됩니다. 즉, Windows 2000 이상의 경우 NDIS는 NDIS_STRING 형식을 UNICODE_STRING 형식으로 정의합니다.

[in] OpenOptions

호출자가 NIC 드라이버로 간주되는 다음 하위 드라이버에 전달하는 플래그를 포함하는 비트 마스크를 지정합니다. 현재 이 매개 변수는 시스템 사용을 위해 예약되어 있습니다.

[in, optional] AddressingInformation

NIC 드라이버가 넷카드를 프로그래밍하는 데 사용할 수 있는 기본 NIC와 관련된 정보를 포함하는 선택적 가변 길이 계산 문자열에 대한 포인터입니다. 이 포인터는 NULL일 수 있습니다.

제공된 경우 열린 작업이 완료될 때까지 주소 지정 정보가 유효한 상태로 유지되어야 합니다. 비동기 모뎀을 지원하는 기본 NIC 드라이버는 이 정보를 전화 걸기용으로 사용할 수 있습니다.

반환 값

없음

설명

프로토콜 드라이버는 ProtocolBindAdapter 함수에서 NdisOpenAdapter를 호출합니다. NDIS는 더 이상 레거시(V3.0) 프로토콜에 사용할 수 있는 옵션인 DriverEntry 함수에서 NdisOpenAdapter 호출을 지원하지 않습니다. NDIS는 더 이상 V3.0 프로토콜을 지원하지 않습니다. NDIS는 ProtocolBindAdapter 컨텍스트 외부에서 NdisOpenAdapter를 호출하려고 시도하지 않습니다.

AdapterName의 문자열은 Status에서 NDIS_STATUS_PENDING 반환하더라도 NdisOpenAdapter가 컨트롤을 반환할 때까지만 유효합니다.

NdisOpenAdapter가 NDIS_STATUS_PENDING 반환하는 경우 ProtocolOpenAdapterComplete 함수가 호출될 때까지 NdisBindingHandleSelectedMediumIndex의 변수를 무시해야 합니다. 이러한 변수는 ProtocolOpenAdapterComplete 가 호출될 때까지 유효하지 않은 상태로 유지될 수 있으므로 스택에 있을 수 없습니다. 이 핸들은 ProtocolOpenAdapterComplete에 대한 입력 매개 변수이므로 일반적으로 이러한 변수는 ProtocolBindingContext 영역에 상주합니다.

프로토콜 드라이버는 NdisProtocolHandle에서 반환된 핸들을 유지해야 합니다. 드라이버가 이후에 호출하는 다른 NdisXxx 함수에 대한 필수 매개 변수입니다. 제공된 ProtocolBindingContext는 호출자의 ProtocolXxx 함수에 대한 입력 매개 변수이므로 프로토콜은 일반적으로 NdisOpenAdapter 호출에서 호출자가 할당한 컨텍스트 영역의 어딘가에 있는 변수에 NdisProtocolHandle 포인터를 전달합니다.

호출자는 NdisRequest 및/또는 NdisCoRequest에 대한 후속 호출에서 SelectedMediumIndex에서 반환된 값을 사용합니다. 요청 패킷에서 설정하는 OID는 반환 된 NdisMediumXxx에 따라 달라집니다. 예를 들어 SelectedMediumIndex에서 NdisMediumAtm이 반환되는 경우 프로토콜 드라이버는 OID_ATM_ XXX 또는 OID_CO_XXX 코드를 지정할 때 NdisCoRequest를 호출하고 OID_GEN_XXX 코드를 지정할 때 NdisRequest를 호출합니다.

SelectedMediumIndex에서 NdisMediumWan이 반환되는 경우 프로토콜 드라이버는 쿼리에서 OID_WAN_MEDIUM_SUBTYPE 지정하는 NdisRequest를 호출하여 기본 드라이버가 사용하는 WAN 미디어 형식을 결정합니다.

이전에 무선 미디어에 대한 OID_NETWORK_TYPE 전역 쿼리에서 드라이버와 기본 NIC가 둘 이상의 NdisMediumWirelessWan 형식 매체를 지원한다는 것을 나타내는 경우 프로토콜은 NDIS가 바인딩을 설정하고 프로토콜이 헤더 형식을 선택하기 전에 지원되는 미디어 중 하나를 선택해야 합니다.

프로토콜 드라이버가 방금 바인딩된 NDIS 드라이버와 협상하는 데 사용하는 일반 및 중간 특정 OID에 대한 자세한 내용은 NDIS 개체 식별자를 참조하세요.

  • 대상 플랫폼: 유니버설
  • 버전: Windows Vista의 NDIS 6.0 드라이버에는 지원되지 않습니다. 대신 NdisOpenAdapterEx를 사용합니다. Windows Vista 및 Windows XP에서 NDIS 5.1 드라이버에 대해 지원됩니다.

요구 사항

요구 사항
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL PASSIVE_LEVEL

추가 정보