共用方式為


判斷網路適配器的 VMQ 功能

NDIS 提供介面來判斷網路適配器的 VMQ 功能,例如:

  • 網路適配器的一般篩選功能。

  • 支援的 VM 佇列功能。

  • Lookahead 支援允許將網路數據記憶體分割成兩個不同的緩衝區。

    注意 從 NDIS 6.30 開始,不再支援將封包數據分割成個別的先行查看緩衝區。

迷你連接埠驅動程式會在網路適配器初始化期間提供下列資訊給 NDIS:

  • 網路適配器可支援的 VMQ 硬體功能。

  • 目前啟用的 VMQ 功能。

  • 在網路適配器上啟用或停用的全域接收篩選功能。

覆蓋的驅動程式和應用程式可以使用下列 OID 查詢要求來取得網路介面卡的功能。

OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES

OID_RECEIVE_FILTER_CURRENT_CAPABILITIES

OID_RECEIVE_FILTER_GLOBAL_PARAMETERS

NDIS 會處理迷你埠驅動程序的這些 OID 查詢要求。 因此,不會要求迷你埠驅動程序的查詢。 NDIS 會在初始化期間報告目前啟用的網路適配器接收 VMQ 功能。 因此,上層驅動程式不需要查詢這些 OID。

NDIS_RECEIVE_FILTER_CAPABILITIES 結構會指定網路適配器的篩選功能。 此結構有以下幾種使用方式:

NDIS_RECEIVE_FILTER_CAPABILITIES 結構包含下列資訊:

EnabledFilterTypes
支援的接收篩選類型。 NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED 標誌表示已啟用虛擬機器佇列(VMQ)篩選器。

啟用佇列類型
支援的接收佇列類型。 NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED旗標表示已啟用虛擬機(VM)佇列。

NumQueues
網路適配器支援的接收佇列數目。 若要支援 VMQ,此數字必須等於或小於 NIC 支援的單播 MAC 位址數目。 此數位不得包含預設佇列。

附註 網路適配器支援的單播 MAC 位址或 VM 佇列數目不包含相關聯 NIC 的 MAC 位址。

支持的佇列屬性
網路適配器支援的佇列屬性。 NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED旗標表明網路介面卡符合支援 VMQ 篩選的最低需求。 支援 VMQ 的 NIC 必須為每個接收佇列提供一個 MSI-X 資料表項目。 因此,VMQ 迷你埠驅動程序必須設定NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED旗標。

支援的篩選測試
迷你埠驅動程式支援的篩選測試作業。 例如,網路適配器支持測試選取的標頭字段,以判斷它是否等於指定的值。 VMQ 小型端口驅動程式必須設定NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED旗標。

支援的標頭
迷你埠驅動程式可以檢查的網路封包標頭類型。 例如,網路適配器可以檢查網路封包的 MAC 標頭。 MAC 標頭包含封包類型、目的地和來源 MAC 位址、VLAN 識別元,以及優先順序標記字段。 VMQ 迷你埠驅動程序必須設定NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED旗標。

支援的Mac標頭欄位
迷你埠驅動程式可以檢查的 MAC 標頭欄位類型。 VMQ 微型端口驅動程序必須設定 NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED 旗標。

MaxMacHeaderFilters
迷你埠驅動程序支援的 MAC 標頭篩選數目上限。 至少應有與 VM 佇列數量相等或更多的標頭篩選器。

MaxQueueGroups
此成員保留給 NDIS。

MaxQueuesPerQueueGroup
此成員保留給 NDIS。

MinLookaheadSplitSize
網路適配器支援的前視封包區段的最小大小,單位為位元組。

注意 從 NDIS 6.30 開始,不再支持將資料封包分割成個別的前瞻緩衝區。 支援 NDIS 6.30 或更新版本的迷你埠驅動程式必須將這個成員設定為零。

MaxLookaheadSplitSize
以位元組為單位,網路介面卡支援的前視封包片段的最大大小。

注意 從 NDIS 6.30 開始,不再支援將封包數據分割成個別的前視緩衝區。 支援 NDIS 6.30 或更新版本的迷你埠驅動程式必須將這個成員設定為零。

成功返回 OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES OID 查詢後,InformationBuffer 成為 NDIS_OID_REQUEST 結構的一部分,並包含一個指向 NDIS_RECEIVE_FILTER_CAPABILITIES 結構的指標。 這些功能可能包括目前因 INF 檔案設定或透過 進階 屬性頁面而被停用的 VMQ 硬體功能。 如需 VMQ INF 檔案設定的詳細資訊,請參閱 VMQ Standard INF 項目

NDIS 迷你埠驅動程式在初始化的過程中,於 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構的 HardwareReceiveFilterCapabilities 成員中,提供接收篩選硬體能力。

成功地完成 OID_RECEIVE_FILTER_CURRENT_CAPABILITIES OID 查詢後,NDIS_OID_REQUEST 結構的 InformationBuffer 成員包含一個指向 NDIS_RECEIVE_FILTER_CAPABILITIES 結構的指標。 這些功能包括目前啟用的 VMQ 功能。

NDIS 迷你埠驅動程式會在 CurrentReceiveFilterCapabilities 中提供目前啟用的接收篩選功能,NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構的成員。

NDIS 會報告目前啟用的基礎網路適配器接收篩選功能,以在系結作業期間,將 ReceiveFilterCapabilities 中的通訊協定驅動程式NDIS_BIND_PARAMETERS 結構的成員。

NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 結構用於 OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 查詢 OID 中,以取得目前的全域接收篩選設定。

NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS包含下列資訊:

EnabledFilterTypes
啟用的接收篩選類型。 NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED旗標會指定已啟用虛擬機佇列 (VMQ) 篩選器。

EnabledQueueTypes
啟用的接收佇列類型。 NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED旗標表示已啟用虛擬機器(VM)佇列。

在從 OID_RECEIVE_FILTER_GLOBAL_PARAMETERS OID 查詢成功返回後,NDIS_OID_REQUEST 結構中的 InformationBuffer 成員包含一個指向 NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 結構的指標。 NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 結構會指定網路適配器上啟用或停用的接收篩選功能。

NDIS 通訊協定驅動程式會使用 OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 來查詢網路介面卡上用於接收資料篩選的目前全域組態參數。 例如,通訊協定驅動程式可以使用這個 OID 來判斷是否啟用或停用接收篩選或接收佇列的類型。