다음을 통해 공유


수신된 이더넷 프레임 표시

Windows TCP/IP 프로토콜 드라이버는 이더넷 프레임을 수신하기 위한 일련의 요구 사항을 적용합니다. 시작된 모든 드라이버는 이더넷 프레임 또는 수정의 표시를 수신 기본 드라이버의 표시를 수신 TCP/IP가 부과하는 일반적인 요구 사항을 지원해야 합니다. 이러한 드라이버에는 이더넷 미니포트 드라이버, MUX 중간 드라이버 및 필터 드라이버가 포함됩니다.

참고 드라이버가 이러한 요구 사항을 따르지 않는 경우 드라이버(예: TCP/IP 전송, MUX 중간 드라이버 및 필터 드라이버)를 과도하게 사용하면 예측할 수 없을 정도로 동작할 수 있습니다.

이더넷 수신 표시를 시작하는 드라이버는 다음 요구 사항을 지원해야 합니다.

  • 드라이버는 수신된 이더넷 프레임에 대한 NET_BUFFER_LIST 구조를 할당해야 합니다. 각 NET_BUFFER_LIST 구조에는 특정 사용에 필요한 NET_BUFFER_LIST NetBufferListInfo 멤버에 정의된 OOB(out-of-band) 데이터가 포함되어야 합니다.

  • 드라이버는 프레임에 대한 NET_BUFFER 구조를 할당하고 NET_BUFFER_LIST 구조체에 연결해야 합니다. 이더넷 미니포트는 수신된 데이터를 나타낼 때 정확히 하나의 NET_BUFFER 구조를 NET_BUFFER_LIST 구조체에 할당해야 합니다. 이 제한은 이더넷 수신 경로에만 적용됩니다. 네이티브 802.11 무선 LAN 인터페이스와 같은 다른 미디어 유형에는 적용되지 않습니다. 또는 일반적으로 NDIS입니다.

  • NDIS 6.1부터 특정 시나리오에서 NET_BUFFER 구조는 수신된 이더넷 프레임에 대한 여러 MDL(메모리 설명자 목록)과 연결할 수 있습니다. NET_BUFFER_LIST 구조에는 단일 NET_BUFFER 구조가 포함되어야 하지만 여러 MDL을 사용하면 드라이버가 수신된 패킷 데이터를 별도의 버퍼로 분할할 수 있습니다.

    예를 들어 헤더 데이터 분할 인터페이스를 지원하는 이더넷 드라이버는 단일 NET_BUFFER 구조와 연결된 여러 MDL의 연결된 목록을 사용하여 수신된 이더넷 프레임을 분할합니다. 자세한 내용은 헤더 데이터 분할을 참조하세요.

    단순성과 성능상의 이유로 헤더-데이터 분할을 지원하지 않는 드라이버는 각 NET_BUFFER 구조에 대해 하나의 MDL만 사용하는 것이 좋습니다.

    참고 Windows Vista용 NDIS 6.0에서 각 NET_BUFFER 구조에는 MDL이 하나만 포함되어야 합니다.

  • 첫 번째 MDL에 lookahead 크기에 지정된 NDIS 이상의 바이트를 포함하지 않는 한 드라이버는 수신된 이더넷 프레임을 IP 헤더, IPv4 옵션, IPsec 헤더, IPv6 확장 헤더 또는 상층 프로토콜 헤더의 중간에 분할해서는 안 됩니다.

NDIS 프로토콜 및 필터 드라이버는 이러한 분할 프레임이 이전 목록 항목에 정의된 제한을 준수하는 경우 수신 표시에서 분할 이더넷 프레임을 지원해야 합니다. 이 제한 사항은 프로토콜 및 필터 드라이버가 향후 Windows 버전과 호환되도록 합니다.