다음을 통해 공유


프로토콜 드라이버의 바인딩 상태

NDIS 프로토콜 드라이버는 드라이버가 관리하는 각 바인딩에 대해 다음 작동 상태를 지원해야 합니다.

  • 바인딩 안 됨

  • 열기

  • 실행 중

  • 닫기

  • 일시 중지

  • 일시 중지됨

  • 다시 시작

다음 그림은 이러한 상태 간의 관계를 보여 줍니다.

NDIS 프로토콜 드라이버의 바인딩 상태 간의 관계를 보여 주는 다이어그램

다음은 프로토콜 드라이버 바인딩 상태를 정의합니다.

언바운드 상태는 바인딩의 초기 상태입니다. 이 상태에서 프로토콜 드라이버는 NDIS가 ProtocolBindAdapterEx 함수를 호출할 때까지 기다립니다. NDIS가 ProtocolBindAdapterEx를 호출하면 바인딩이 열기 상태로 들어갑니다. 바인딩되지 않은 작업이 완료되면 바인딩이 닫기 상태에서 Unbound 상태로 돌아갑니다.

열기 상태에서 프로토콜 드라이버는 바인딩에 대한 리소스를 할당하고 미니포트 어댑터를 열려고 시도합니다. NDIS가 드라이버의 ProtocolBindAdapterEx 함수를 호출하면 바인딩이 열기 상태로 들어갑니다. 프로토콜 드라이버가 미니포트 어댑터에 바인딩하지 못하면 바인딩은 언바운드 상태로 돌아갑니다. 드라이버가 미니포트 어댑터에 성공적으로 바인딩되면 바인딩이 일시 중지됨 상태로 들어갑니다.

실행 중 상태에서 프로토콜 드라이버는 바인딩에 대한 일반 송신 및 수신 처리를 수행합니다. 바인딩이 다시 시작 중 상태이고 드라이버가 송신 및 수신 작업을 수행할 준비가 되면 바인딩이 실행 중 상태로 들어갑니다.

닫기 상태에서 프로토콜 드라이버는 미니포트 어댑터에 대한 바인딩을 닫은 다음 바인딩에 대한 리소스를 해제합니다. NDIS가 프로토콜 드라이버의 ProtocolUnbindAdapterEx 함수를 호출하면 바인딩이 닫기 상태로 들어갑니다. 프로토콜 드라이버가 바인딩되지 않은 작업을 완료하면 바인딩이 Unbound 상태로 들어갑니다.

일시 중지 상태에서 프로토콜 드라이버는 바인딩에 대한 보내기 및 수신 작업을 중지하는 데 필요한 모든 작업을 완료합니다. 바인딩이 실행 중 상태이고 NDIS가 프로토콜 드라이버에 PnP 일시 중지 알림을 보내면 바인딩이 일시 중지 상태로 들어갑니다. 프로토콜 드라이버는 모든 미해결 송신 요청이 완료되기를 기다려야 합니다. 프로토콜 드라이버는 일시 중지 작업에 실패할 수 없습니다. 일시 중지 작업이 완료되면 바인딩이 일시 중지됨 상태로 들어갑니다.

일시 중지됨 상태에서 프로토콜 드라이버는 바인딩에 대한 송신 또는 수신 작업을 수행하지 않습니다. 바인딩이 일시 중지 상태이고 일시 중지 작업이 완료되면 바인딩이 일시 중지됨 상태로 들어갑니다. 바인딩이 열기 상태이고 열린 작업이 성공적으로 완료되면 바인딩이 일시 중지됨 상태로 들어갑니다. NDIS가 프로토콜 드라이버에 바인딩에 대한 PnP 다시 시작 알림을 보내면 바인딩이 다시 시작 상태가 됩니다. NDIS가 드라이버의 ProtocolUnbindAdapterEx 함수를 호출하면 바인딩이 닫기 상태가 됩니다.

다시 시작 상태에서 프로토콜 드라이버는 바인딩에 대한 보내기 및 수신 작업을 다시 시작하는 데 필요한 모든 작업을 완료합니다. 바인딩이 일시 중지됨 상태이고 NDIS가 프로토콜 드라이버에 PnP 다시 시작 알림을 보내면 바인딩이 다시 시작 상태로 들어갑니다. 다시 시작이 실패하면 바인딩이 일시 중지됨 상태로 돌아갑니다. 다시 시작에 성공하면 바인딩이 실행 중 상태로 들어갑니다.

드라이버 스택 관리

NDIS 프로토콜 드라이버