共用方式為


報告封包聯合功能

迷你埠驅動程式會在網路介面卡初始化期間向 NDIS 註冊下列功能:

  • 網路介面卡支援的封包聯合功能。

  • 目前在網路介面卡上啟用的封包聯合功能。

  • 封包聯合會接收目前在網路介面卡上啟用的篩選功能。

注意 您可以透過 *PacketCoalescing INF 關鍵字設定來啟用或停用迷你埠驅動程式對封包聯合的支援。 此設定會顯示在網路介面卡的 [ 進階 ] 屬性頁中。 如需封包聯合 INF 檔案設定的詳細資訊,請參閱 封包聯合的標準化 INF 關鍵字

迷你埠驅動程式會透過 NDIS_RECEIVE_FILTER_CAPABILITIES 結構報告基礎網路介面卡的封包聯合和篩選功能。 如果登錄中的 *PacketCoalescing 關鍵字設定值為 1,則會啟用封包聯合,而迷你埠驅動程式會以下列方式初始化 NDIS_RECEIVE_FILTER_CAPABILITIES 結構:

  1. 迷你埠驅動程式會初始化 Header 成員。 驅動程式會將HeaderType成員設定為 NDIS_OBJECT_TYPE_DEFAULT。

    如果驅動程式支援封包聯合,它會將HeaderRevision成員設定為 NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2,並將Size成員設定為 NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2。

  2. 迷你埠驅動程式會在 SupportedQueueProperties 成員中設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE旗標。

    如果設定此旗標,網路介面卡必須支援篩選硬體中收到的多播封包。 此篩選是以 NDIS 卸載至網路介面卡的多播位址為基礎,方法是 將它傳送 OID_802_3_MULTICAST_LIST OID 集要求。

    注意 通訊協定驅動程式也可以藉由傳送 OID_802_3_ADD_MULTICAST_ADDRESSOID_802_3_DELETE_MULTICAST_ADDRESS 要求來變更多播通訊清單的內容。 NDIS 會將這些要求合併成 OID_802_3_MULTICAST_LIST OID 集合要求。

注意 需要介面卡才能拒絕任何目的地媒體存取控制 (MAC) 位址不符合這些 OID 設定要求所指定的任何多播位址的傳入多播封包。

  1. 迷你埠驅動程式會在 EnabledFilterTypes 成員中設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標。

    注意 如果驅動程式設定此旗標,它也必須在 SupportedQueueProperties 成員中設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE旗標。 否則,NDIS 會傳回 NDIS_STATUS_BAD_CHARACTERISTICS,以失敗呼叫 NdisMSetMiniportAttributes

  2. 如果迷你埠驅動程式設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須支援所有接收篩選測試準則。 驅動程式會在 SupportedFilterTests 成員中設定下列旗標來公告此支援:

    • NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED

    • NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED

    • NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED

    注意 如果迷你埠驅動程式未設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須將 SupportedFilterTests 成員設定為零。

  3. 如果迷你埠驅動程式設定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 成員設定為零。

  4. 如果迷你埠驅動程式設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,迷你埠驅動程式必須支援媒體存取控制內的資料篩選, (MAC) 所接收封包的標頭。 驅動程式會在 SupportedMacHeaderFields 成員中設定下列旗標來公告此支援:

    • NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED

    • NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED

    • NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED

    注意 如果迷你埠驅動程式未設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須將 SupportedMacHeaderFields 成員設定為零。

  5. 如果迷你埠驅動程式設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,迷你埠驅動程式必須支援接收位址解析通訊協定標頭中的資料篩選, (ARP) 封包。 驅動程式會在 SupportedARPHeaderFields 成員中設定下列旗標來公告此支援:

    • NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

    注意 如果迷你埠驅動程式未設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須將 SupportedARPHeaderFields 成員設定為零。

  6. 如果迷你埠驅動程式設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,迷你埠驅動程式必須支援 (在已接收 IP 第 4 版 (IPv4) 封包的第 3 層) 第 3 層 (L3) 標頭內篩選資料。 驅動程式會在 SupportedIPv4HeaderFields 成員中設定下列旗標來公告此支援:

    • NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

    注意 如果迷你埠驅動程式未設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須將 SupportedIPv4HeaderFields 成員設定為零。

  7. 如果迷你埠驅動程式設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,迷你埠驅動程式必須支援在已接收 IP 第 6 版的 L3 標頭內篩選資料, (IPv6) 封包。 驅動程式會在 SupportedIPv6HeaderFields 成員中設定下列旗標來公告此支援:

    • NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

    注意 如果迷你埠驅動程式未設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須將 SupportedIPv6HeaderFields 成員設定為零。

  8. 如果迷你埠驅動程式設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,迷你埠驅動程式必須支援在所接收使用者資料包通訊協定 (UDP) 封包的 OSI 層 4 (L4) 標頭內篩選資料。 驅動程式會在 SupportedIUdpHeaderFields 成員中設定下列旗標來公告此支援:

    • NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

    注意 如果收到的 UDP 封包包含 IPv4 選項或 IPv6 擴充功能標頭,則網路介面卡可以處理封包,就像它失敗 UDP 篩選測試一樣。 如此一來,配接器就可以自動卸載收到的封包。

注意 如果迷你埠驅動程式未設定NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED旗標,驅動程式必須將 SupportedIUdpHeaderFields 成員設定為零。

  1. 迷你埠驅動程式必須針對單一封包聯合篩選準則指定之封包標頭欄位上的測試數目上限。 驅動程式會在 MaxFieldTestsPerPacketCoalescingFilter 成員中指定此值。

    注意 支援封包聯合的網路介面卡必須支援五個以上的封包標頭欄位,這些欄位可以指定給單一封包聯合篩選器。 如果配接器不支援封包聯合,迷你埠驅動程式必須將此值設定為零。

  2. 迷你埠驅動程式必須報告網路介面卡支援的封包聯合篩選數目上限。 驅動程式會在 MaxPacketCoalescingFilters 成員中指定此值。

    注意 支援封包聯合的網路介面卡必須支援十個以上的封包聯合篩選器。 如果配接器不支援封包聯合,迷你埠驅動程式必須將此值設定為零。

當 NDIS 呼叫迷你埠驅動程式的 MiniportInitializeEx 函式時,驅動程式會遵循下列步驟報告基礎網路介面卡的封包聯合和篩選功能:

迷你埠驅動程式用來報告基礎網路介面卡封包聯合和篩選功能的方法,是以報告電源管理功能的 NDIS 6.20 方法為基礎。 如需這個方法的詳細資訊,請參閱 報告電源管理功能

如需配接器初始化程式的詳細資訊,請參閱 初始化 Miniport 配接器