미니포트 드라이버는 네트워크 어댑터를 초기화하는 동안 NDIS에 다음 기능을 등록합니다.
네트워크 어댑터가 지원하는 패킷 병합 기능입니다.
네트워크 어댑터에서 현재 사용하도록 설정된 패킷 병합 기능입니다.
패킷 병합은 네트워크 어댑터에서 현재 사용하도록 설정된 필터링 기능을 수신합니다.
참고 패킷 병합에 대한 미니포트 드라이버 지원은 *PacketCoalescing INF 키워드 설정을 통해 사용하거나 사용하지 않도록 설정할 수 있습니다. 이 설정은 네트워크 어댑터의 고급 속성 페이지에 표시됩니다. 패킷 병합 INF 파일 설정에 대한 자세한 내용은 패킷 병합대한 표준화된 INF 키워드를 참조하세요.
미니포트 드라이버는 NDIS_RECEIVE_FILTER_CAPABILITIES 구조를 통해 기본 네트워크 어댑터의 패킷 병합 및 필터링 기능을 보고합니다. 레지스트리의 *PacketCoalescing 키워드 설정에 값이 1이면 패킷 병합이 활성화되고 미니포트 드라이버는 다음과 같은 방식으로 NDIS_RECEIVE_FILTER_CAPABILITIES 구조를 초기화합니다.
미니포트 드라이버는 헤더 멤버를 초기화합니다. 드라이버는 Type 멤버를 헤더에 NDIS_OBJECT_TYPE_DEFAULT로 설정합니다.
드라이버가 패킷 병합을 지원하는 경우, Header의 Revision 멤버를 NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2로 설정하고, Size 멤버를 NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2로 설정합니다.
미니포트 드라이버는 NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE 플래그를 SupportedQueueProperties 멤버에 설정합니다.
이 플래그가 설정된 경우 네트워크 어댑터는 하드웨어에서 수신된 멀티캐스트 패킷의 필터링을 지원해야 합니다. 이 필터링은 NDIS가 OID 집합 요청을 OID_802_3_MULTICAST_LIST 전송하여 네트워크 어댑터에 오프로드한 멀티캐스트 주소를 기반으로 합니다.
참고 프로토콜 드라이버는 OID_802_3_ADD_MULTICAST_ADDRESS 및 OID_802_3_DELETE_MULTICAST_ADDRESS 요청을 전송하여 멀티캐스트 주소 목록의 내용을 변경할 수도 있습니다. NDIS는 이러한 요청을 OID_802_3_MULTICAST_LIST OID 집합 요청으로 결합합니다.
참고 어댑터는 대상 MAC(미디어 액세스 제어) 주소가 이러한 OID 집합 요청에 지정된 멀티캐스트 주소와 일치하지 않는 들어오는 멀티캐스트 패킷을 거부해야 합니다.
미니포트 드라이버는 EnabledFilterTypes 멤버에서 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정합니다.
참고 드라이버가 이 플래그를 설정하는 경우, 반드시 SupportedQueueProperties 멤버에서도 NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE 플래그를 설정해야 합니다. 그렇지 않으면 NDIS는 NDIS_STATUS_BAD_CHARACTERISTICS 반환하여NdisMSetMiniportAttributes 호출에 실패합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 드라이버는 모든 수신 필터 테스트 조건을 지원해야 합니다. 드라이버는 SupportedFilterTests 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED
NDIS_수신_필터_테스트_헤더_필드_마스크_동일_지원
NDIS_수신_필터_테스트_헤더_필드_동등하지_않음_지원됨
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않으면 드라이버는 SupportedFilterTests 멤버를 0으로 설정해야 합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 미니포트 드라이버는 MAC(미디어 액세스 제어), IP 버전 4(IPv4) 및 IP 버전 6(IPv6) 헤더의 다양한 필드 내에서 데이터 필터링을 지원해야 합니다. 드라이버는 SupportedHeaders 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED (지원됨)
NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않을 경우, 드라이버는 SupportedHeaders 멤버를 0으로 설정해야 합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 미니포트 드라이버는 수신된 패킷의 MAC(미디어 액세스 제어) 헤더 내에서 데이터 필터링을 지원해야 합니다. 드라이버는 SupportedMacHeaderFields 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
NDIS_수신_필터_MAC_헤더_대상_주소_지원
NDIS_수신_필터_맥_헤더_프로토콜_지원
NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않으면 드라이버는 SupportedMacHeaderFields 멤버를 0으로 설정해야 합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 미니포트 드라이버는 수신된 ARP(주소 확인 프로토콜) 패킷의 헤더 내에서 데이터 필터링을 지원해야 합니다. 드라이버는 SupportedARPHeaderFields 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED
NDIS_수신_필터_ARP_헤더_TPA_지원 (NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED)
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않으면 드라이버는 SupportedARPHeaderFields 멤버를 0으로 설정해야 합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 미니포트 드라이버는 수신된 IP 버전 4(IPv4) 패킷의 OSI(Open Systems Interconnection) 계층 3(L3) 헤더 내에서 데이터 필터링을 지원해야 합니다. 드라이버는 SupportedIPv4HeaderFields 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
- NDIS_수신_필터_IPV4_헤더_프로토콜_지원
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않으면 드라이버는 SupportedIPv4HeaderFields 멤버를 0으로 설정해야 합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 미니포트 드라이버는 수신된 IP 버전 6(IPv6) 패킷의 L3 헤더 내에서 데이터 필터링을 지원해야 합니다. 드라이버는 SupportedIPv6HeaderFields 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
- NDIS_수신_필터_IPV6_헤더_프로토콜_지원
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않으면 드라이버는 SupportedIPv6HeaderFields 멤버를 0으로 설정해야 합니다.
미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하는 경우 미니포트 드라이버는 수신된 UDP(User Datagram Protocol) 패킷의 OSI 계층 4(L4) 헤더 내에서 데이터 필터링을 지원해야 합니다. 드라이버는 SupportedIUdpHeaderFields 멤버에서 다음 플래그를 설정하여 이 지원을 보급합니다.
- NDIS_수신_필터_UDP_헤더_목적지_포트_지원됨
참고 수신된 UDP 패킷에 IPv4 옵션 또는 IPv6 확장 헤더가 포함된 경우 네트워크 어댑터는 UDP 필터 테스트에 실패한 것처럼 패킷을 처리할 수 있습니다. 이러한 방식으로 어댑터는 수신된 패킷을 자동으로 삭제할 수 있습니다.
참고 미니포트 드라이버가 NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 플래그를 설정하지 않으면 드라이버는 SupportedIUdpHeaderFields 멤버를 0으로 설정해야 합니다.
미니포트 드라이버는 단일 패킷 병합 필터에 대해 지정할 수 있는 패킷 헤더 필드에 대한 최대 테스트 수를 보고해야 합니다. 드라이버는 maxFieldTestsPerPacketCoalescingFilter 멤버에 이 값을 지정합니다.
패킷 병합을 지원하는 네트워크 어댑터는 단일 패킷 병합 필터에 대해 지정할 수 있는 5개 이상의 패킷 헤더 필드를 지원해야 합니다. 어댑터가 패킷 병합을 지원하지 않는 경우 미니포트 드라이버는 이 값을 0으로 설정해야 합니다.
미니포트 드라이버는 네트워크 어댑터에서 지원하는 패킷 병합 필터의 최대 수를 보고해야 합니다. 드라이버는 MaxPacketCoalescingFilters 멤버에서 이 값을 지정합니다.
패킷 병합을 지원하는 네트워크 어댑터는 10개 이상의 패킷 병합 필터를 지원해야 합니다. 어댑터가 패킷 병합을 지원하지 않는 경우 미니포트 드라이버는 이 값을 0으로 설정해야 합니다.
NDIS가 미니포트 드라이버의 MiniportInitializeEx 함수를 호출하는 경우 드라이버는 다음 단계에 따라 기본 네트워크 어댑터의 패킷 병합 및 필터링 기능을 보고합니다.
미니포트 드라이버는 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 구조를 초기화합니다.
레지스트리의 *PacketCoalescing 키워드 설정에 값이 1인 경우 미니포트 드라이버는 HardwareReceiveFilterCapabilities 멤버를 이전에 초기화된 NDIS_RECEIVE_FILTER_CAPABILITIES 구조체에 대한 포인터로 설정합니다.
레지스트리의 *PacketCoalescing 키워드 설정 값이 0이면 미니포트 드라이버는 패킷 병합에 대한 지원을 보급하지 않습니다. HardwareReceiveFilterCapabilities 멤버를 NULL로 설정해야 합니다.
드라이버는 NdisMSetMiniportAttributes 호출하고 MiniportAttributes 매개 변수를 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 구조체에 대한 포인터로 설정합니다.
기본 네트워크 어댑터의 패킷 병합 및 필터링 기능을 보고하기 위해 미니포트 드라이버에서 사용하는 메서드는 전원 관리 기능을 보고하기 위한 NDIS 6.20 메서드를 기반으로 합니다. 이 방법에 대한 자세한 내용은 보고 전원 관리 기능참조하세요.
어댑터 초기화 프로세스에 대한 자세한 내용은 미니포트 어댑터초기화를 참조하세요.