다음을 통해 공유


어댑터에 바인딩

NDIS는 프로토콜 드라이버의 ProtocolBindAdapterEx 함수를 호출하여 드라이버가 바인딩할 수 있는 기본 어댑터를 사용할 수 있게 될 때마다 바인딩을 엽니다. NDIS가 ProtocolBindAdapterEx를 호출하면 바인딩이 열기 상태로 들어갑니다. 열기 상태에서 프로토콜 드라이버는 바인딩에 대한 리소스를 할당하고 어댑터를 엽니다.

NDIS는 바인딩 작업에 대한 NDIS 컨텍스트와 NDIS_BIND_PARAMETERS 구조체에 대한 포인터를 ProtocolBindAdapterEx에 전달합니다. 이 구조에는 다음과 같은 어댑터에 대한 정보가 포함됩니다.

  • 어댑터의 이름입니다.

  • 레지스트리의 프로토콜 서비스 항목에서 이 바인딩과 관련된 매개 변수의 레지스트리 위치입니다.

  • 어댑터의 물리적 디바이스 개체입니다.

어댑터를 열기 위해 프로토콜 드라이버는 NdisOpenAdapterEx 함수를 호출합니다 . 프로토콜 드라이버는 다음을 NdisOpenAdapterEx에 전달합니다.

  • NDIS가 NdisRegisterProtocolDriver 함수의 NdisProtocolHandle 매개 변수에서 드라이버로 반환한 핸들입니다.

  • 이 바인딩에 대한 프로토콜 드라이버의 컨텍스트입니다.

  • NDIS_OPEN_PARAMETERS 형식의 구조체에 대한 포인터입니다.

NDIS_OPEN_PARAMETERSNdisOpenAdapterEx 가 열어야 하는 어댑터의 이름, 프로토콜 드라이버가 지원하는 중간 형식 배열 및 필요에 따라 드라이버가 이 바인딩에서 받을 수 있는 프레임 형식 배열과 같은 정보를 포함합니다.

프로토콜 드라이버가 ProtocolBindAdapterEx에서 NDIS_STATUS_PENDING 반환하는 경우 바인딩 요청을 완료하려면 최종 상태로 NdisCompleteBindAdapterEx 를 호출해야 합니다.

NDIS가 NdisOpenAdapterEx에서 NDIS_STATUS_PENDING 반환하는 경우 NDIS는 나중에 열린 요청이 완료된 후 프로토콜 드라이버의 ProtocolOpenAdapterCompleteEx 함수를 최종 상태로 호출합니다.

드라이버가 어댑터에 대한 바인딩을 성공적으로 열면 바인딩이 일시 중지된 상태입니다.

프로토콜 드라이버는 NdisCloseAdapterEx 함수를 호출하여 어댑터를 닫습니다. 드라이버는 ProtocolBindAdapterEx 함수 또는 ProtocolUnbindAdapterEx 함수에서 NdisCloseAdapterEx 호출할 수 있습니다.

어댑터를 연 후 바인딩 요청을 완료하기 전에 ProtocolBindAdapterEx 에서 오류가 발생하고 어댑터에 대한 바인딩을 닫아야 하는 경우 NdisCloseAdapterEx를 호출할 수 있습니다. 어댑터를 닫는 방법에 대한 자세한 내용은 어댑터에서 바인딩 해제를 참조하세요.