미니포트 드라이버

NDIS 미니포트 드라이버에는 다음과 같은 두 가지 기본 함수가 있습니다.

  • NIC를 통해 데이터를 보내고 받는 것을 포함하여 NIC(네트워크 인터페이스 카드) 관리

  • 필터 드라이버, 중간 드라이버 및 프로토콜 드라이버와 같은 상위 수준 드라이버와 상호 작용합니다.

미니포트 드라이버는 NDIS 라이브러리를 통해 NIC 및 상위 수준 드라이버와 통신합니다. NDIS 라이브러리는 미니포트 드라이버가 호출해야 하는 모든 운영 체제 함수를 캡슐화하는 전체 함수 집합(NdisMXxx 및 기타 Ndis Xxx 함수)을 내보냅니다. 미니포트 드라이버는 미니포트 드라이버에 액세스하려면 NDIS가 자체적으로 또는 상위 수준 드라이버를 대신하여 호출하는 진입점 집합(MiniportXxx 함수)을 내보내야 합니다.

참고 항목

NDIS 드라이버 스택 및 4개의 NDIS 드라이버 유형 간의 관계를 보여 주는 다이어그램에 대한 자세한 내용은 NDIS 드라이버 스택을 참조하세요.

다음 송신 및 수신 작업은 NDIS 및 상위 수준 드라이버와 미니포트 드라이버의 상호 작용을 보여 줍니다.

  • 전송 드라이버에 전송할 패킷이 있는 경우 NDIS 라이브러리에서 내보낸 NdisXxx 함수를 호출합니다. 그런 다음 NDIS는 미니포트 드라이버에서 내보낸 적절한 MiniportXxx 함수를 호출하여 패킷을 미니포트 드라이버에 전달합니다. 그런 다음 미니포트 드라이버는 적절한 Ndis Xxx 함수를 호출하여 전송을 위해 패킷을NIC에 전달합니다.

  • NIC가 자체 주소가 지정된 패킷을 받으면 NDIS 또는 NIC의 미니포트 드라이버에서 처리하는 하드웨어 인터럽트를 게시할 수 있습니다. NDIS는 적절한 MiniportXxx 함수를 호출하여 NIC의 미니포트 드라이버에 알깁니다. 미니포트 드라이버는 NIC에서 데이터 전송을 설정한 다음, 적절한 Ndis Xxx 함수를 호출하여 수신된 패킷이 상위 수준 드라이버에 바인딩됨을나타냅니다.

연결리스 및 연결 지향 미니포트 드라이버

NDIS는 연결 없는 환경과 연결 지향 환경 모두에 대한 미니포트 드라이버를 지원합니다.

연결 없는 미니포트 드라이버는 이더넷과 같은 연결 없는 네트워크 미디어에 대한 NIC를 제어합니다. 연결 없는 미니포트 드라이버는 역직렬화 및 직렬화된 드라이버로 더 구분됩니다.

모든 NDIS 6.0 이상 드라이버는 역직렬화됩니다.

  • 역직렬화된 드라이버는 자체 MiniportXxx 함수의 작업을 직렬화하고 내부적으로 들어오는 모든 송신 패킷을 큐에 대기합니다. 이로 인해 드라이버의 중요한 섹션(한 번에 하나의 스레드만 실행할 수 있는 코드)이 작게 유지되는 경우 전체 이중 성능이 훨씬 향상됩니다.

  • 직렬화된 드라이버는 NDIS를 사용하여 MiniportXxx 함수에 대한 호출을 직렬화하고 송신 큐를 관리합니다.

연결 지향 미니포트 드라이버는 ISDN과 같은 연결 지향 네트워크 미디어의 NIC를 제어합니다. 연결 지향 미니포트 드라이버는 항상 역직렬화됩니다. 항상 자체 MiniportXxx 함수의 작업을 직렬화하고 내부적으로 들어오는 모든 송신 패킷을 큐에 대기합니다.

NDIS 미니포트 드라이버는 NDIS가 아닌 아래쪽 가장자리를 가질 수 있습니다(다음 그림 참조).

NDIS가 아닌 아래쪽 가장자리가 있는 NDIS 미니포트 드라이버를 보여 주는 다이어그램

미니포트 드라이버는 NDIS가 아닌 아래쪽 가장자리를 통해 버스의 클래스 인터페이스(예: USB)를 사용하여 버스의 디바이스를 제어합니다. 미니포트 드라이버는 I/O 요청 패킷(IRP)을 버스로 보내거나 버스에 연결된 원격 디바이스로 직접 전송하여 디바이스와 통신합니다. 위쪽 가장자리에서 미니포트 드라이버는 표준 NDIS 미니포트 드라이버 인터페이스를 노출하여 미니포트 드라이버가 지나치게 많은 NDIS 드라이버와 통신할 수 있도록 합니다.

NDIS 미니포트 드라이버

NDIS 미니포트 드라이버 참조