NdisIfRegisterInterface 함수(ndis.h)

NdisIfRegisterInterface 함수는 NDIS 네트워크 인터페이스를 등록합니다.

구문

NDIS_STATUS NdisIfRegisterInterface(
  [in] NDIS_HANDLE         NdisProviderHandle,
  [in] NET_LUID            NetLuid,
  [in] NDIS_HANDLE         ProviderIfContext,
  [in] PNET_IF_INFORMATION pIfInfo,
       PNET_IFINDEX        pfIndex
);

매개 변수

[in] NdisProviderHandle

인터페이스를 등록하는 네트워크 인터페이스 공급자를 식별하는 핸들입니다. 호출자는 에 대한 이전 호출에서 이 핸들을 얻었습니다. NdisIfRegisterProvider 함수입니다.

[in] NetLuid

인터페이스와 연결된 호출자가 제공한 NET_LUID 값입니다. 인터페이스 공급자는 NDIS_MAKE_NET_LUID 매크로를 사용하여 이 NET_LUID 값을 만들었습니다. 인터페이스 공급자는 컴퓨터를 다시 시작한 후 영구 스토리지에서 NET_LUID 값을 복구하고 특정 인터페이스를 등록할 때마다 동일한 NET_LUID 값을 제공해야 합니다.

[in] ProviderIfContext

인터페이스와 연결된 호출자가 할당한 컨텍스트 영역에 대한 핸들입니다. NDIS는 호출자가 NdisIfRegisterProvider에 등록한 콜백 함수에 이 핸들을 전달합니다.

[in] pIfInfo

인터페이스에 대한 정보를 제공하는 호출자가 할당한 NET_IF_INFORMATION 구조체에 대한 포인터입니다. 이 구조체에는 인터페이스가 존재하는 동안 일정하게 유지되는 정보가 포함되어 있습니다.

pfIndex

호출자가 제공하는 인터페이스 인덱스 변수에 대한 포인터입니다. NDIS가 인터페이스를 성공적으로 등록하면 NDIS는 해당 인터페이스에 대한 인터페이스 인덱스를 할당하고 pIfIndex 에서 값을 설정합니다. 인터페이스 인덱스는 로컬 컴퓨터에서 고유한 24비트 값입니다. 공급자가 동일한 NET_LUID 값을 가진 인터페이스를 등록할 때마다 NDIS는 동일한 인터페이스 인덱스를 반환하지 않을 수 있습니다. 인터페이스 인덱스 값 0은 예약되어 있으며 NDIS는 인터페이스에 할당하지 않습니다. 인터페이스 인덱스와 NET_LUID 인덱스와 혼동하지 마세요.

반환 값

NdisIfRegisterInterface는 다음 상태 값 중 하나를 반환합니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
작업이 성공적으로 완료되었습니다.
NDIS_STATUS_RESOURCES
리소스가 부족하여 작업이 실패했습니다.
NDIS_STATUS_INVALID_PARAMETER
일부 입력 매개 변수가 잘못되어 NdisIfRegisterInterface가 실패했습니다.
NDIS_STATUS_DUPLICATE_OBJECTID
NetLuid 매개 변수가 지정한 것과 동일한 NET_LUID 값으로 등록된 인터페이스가 이미 있으므로 NdisIfRegisterInterface가 실패했습니다.

설명

NDIS 인터페이스 공급자는 NdisIfRegisterInterface 함수를 호출하여 네트워크 인터페이스를 등록합니다. 이 함수를 호출한다고 해서 인터페이스가 활성 상태임을 의미하지는 않습니다.

컴퓨터가 다시 시작될 때마다 NDIS는 등록된 네트워크 인터페이스의 빈 목록으로 시작합니다. 인터페이스 공급자는 인터페이스가 시작되거나 검색될 때마다 NdisIfRegisterInterface 함수를 호출하고 인터페이스의 함수를 호출합니다.
NET_LUID 알려져 있습니다.

인터페이스를 검색하거나 시작하는 메서드는 애플리케이션에 따라 다릅니다. 예를 들어 LBFO MUX 중간 드라이버가 인터페이스 공급자인 경우 NDIS가 첫 번째 기본 미니포트 어댑터에 대해 드라이버의 ProtocolBindAdapterEx 함수를 호출할 때 해당 드라이버가 내부 인터페이스를 등록할 수 있습니다.

인터페이스 공급자는 영구 스토리지에 인터페이스에 대한 정보를 저장하고 특정 애플리케이션에 필요한 대로 인터페이스를 복원할 수 있습니다. 예를 들어 공급자는 NET_LUID 인터페이스에 대한 추가 정보를 저장할 수 있으며 컴퓨터를 다시 시작한 후 인터페이스를 다시 등록할 수 있습니다.

NdisIfRegisterInterface가 성공하면 NDIS는 알려진 인터페이스 목록에 인터페이스를 추가하고 이 인터페이스에 대한 새 인터페이스 인덱스를 할당합니다. 인터페이스 공급자는 가능한 한 활성화된 인터페이스와 사용하지 않도록 설정된 인터페이스를 모두 등록해야 합니다. 사용하도록 설정된 모든 인터페이스를 등록해야 합니다.

공급자가 동일한 NET_LUID 값으로 인터페이스를 등록할 때마다 NDIS는 동일한 인터페이스 인덱스를 반환하지 않을 수 있습니다. 예를 들어 NDIS는 컴퓨터를 다시 시작한 후 또는 인터페이스가 등록 취소되고 다시 등록될 때 인터페이스가 다시 등록될 때 반드시 동일한 인터페이스 인덱스를 할당하지는 않습니다. 인터페이스 인덱스 값 0은 예약되어 있으며 NDIS는 인터페이스에 할당하지 않습니다.

컴퓨터의 알려진 인터페이스 목록에서 인터페이스를 제거해야 함을 나타내기 위해 인터페이스 공급자는 다음을 호출합니다.예를 들어 인터페이스가 제거되었으므로 NdisIfDeregisterInterface 함수입니다. .

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 데스크톱
머리글 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 Irql_Interfaces_Function(ndis)

추가 정보

NDIS_MAKE_NET_LUID

NET_IF_INFORMATION

NET_LUID

NdisIfDeregisterInterface

NdisIfRegisterProvider

ProtocolBindAdapterEx