共用方式為


指出操作 NDIS QoS 參數的變更

支援 NDIS 服務品質 (QoS) 的迷你埠驅動程式會在驅動程式的作業 NDIS QoS 參數第一次或稍後變更時發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示。 迷你埠驅動程式會使用這些操作參數來設定網路適配器,以執行 QoS 封包傳輸。

迷你埠驅動程序必須遵循下列指導方針,才能發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示:

  • 迷你埠驅動程式在解決其操作 NDIS QoS 參數並設定網路適配器之後,必須發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示。

    注意 如果迷你埠驅動程式是以登錄中專屬的本機 NDIS QoS 參數布建,驅動程式必須在呼叫 MiniportInitializeEx 期間或立即發出NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE狀態指示。 在此情況下,驅動程式會使用其專屬的本機 NDIS QoS 參數設定,初始化 NDIS_QOS_PARAMETERS 結構。

    如需驅動程式如何解析其運作 NDIS QoS 參數設定的詳細資訊,請參閱 解析操作 NDIS QoS 參數

  • 在此初始狀態指示之後,迷你埠驅動程序應該在操作 NDIS QoS 參數變更時發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示。 例如,作業 NDIS QoS 參數可能會在下列情況下變更:

    • 作業 NDIS QoS 參數會因為本機 NDIS QoS 參數的變更而變更。 這些參數可以透過OID_QOS_PARAMETERSOID 方法要求,或透過獨立硬體廠商 (IHV) 開發的管理應用程式來變更。

    • 作業 NDIS QoS 參數會因為與遠端對等的 QoS 設定發生衝突而變更。

      迷你埠驅動程式會使用 IEEE 802.1Qaz 資料中心橋接交換 (DCBX) 通訊協定來探索遠端對等的 QoS 參數。 如果已啟用DCBX願意狀態,驅動程式必須遵循為DCBX狀態引擎定義的程式,解決其QoS參數與遠端對等的QoS參數之間的差異。 如需此狀態引擎的詳細資訊,請參閱 IEEE 802.1Qaz 草稿標準。

      如需本機DCBX願意狀態的詳細資訊,請參閱 管理本機DCBX願意狀態

    注意 當迷你埠驅動程式收到本機或遠端 NDIS QoS 參數時,如果操作 NDIS QoS 參數沒有變更,就不應該發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示。 如果驅動程式發出這個不必要的狀態指示,NDIS 可能不會將指示傳遞至過度顯示驅動程式。

  • 迷你埠驅動程式在需要覆寫用來解決操作 NDIS QoS 參數的本機 NDIS QoS 參數時,應該發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示。

    迷你埠驅動程式會發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示,通知 NDIS 和超載驅動程式,其已覆寫本機 NDIS QoS 參數。 針對這種類型的指示,驅動程式必須在 NDIS_QOS_PARAMETERS 結構的 Flags 成員設定適當的NDIS_QOS_PARAMETERS_Xxx_CHANGED旗標,以指定覆寫本機 NDIS QoS 參數的原因。

    如需迷你埠驅動程式如何管理本機 QoS 參數的詳細資訊,請參閱 設定本機 NDIS QoS 參數

    如需迷你埠驅動程式如何解析其操作 QoS 參數的詳細資訊,請參閱 解析操作 NDIS QoS 參數

注意 迷你埠驅動程序必須發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示,其 NDIS QoS 功能目前是否透過 *QOS 關鍵詞標準化 INF 關鍵詞啟用。 如需詳細資訊,請參閱 NDIS QoS 的標準化 INF 關鍵詞。

發出NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE狀態指示的指導方針

迷你埠驅動程式會在發出 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示時,遵循下列步驟:

  1. 迷你埠驅動程式會配置足以包含下列大小的緩衝區:

    • NDIS_QOS_PARAMETERS 結構,其中包含 NDIS QoS 組態設定,以及 NDIS QoS 流量類別的全域操作參數。

    • NDIS_QOS_CLASSIFICATION_ELEMENT 結構的陣列 每個結構都會指定由封包數據模式(條件)和相關聯的 IEEE 802.1p 優先順序層級 (action) 所定義的流量分類。 如果網路適配器在傳輸或 輸出中找到符合條件的模式,則會將相關聯的優先順序層級指派給封包。 適配卡也會根據優先順序層級,將其他 NDIS QoS 原則套用至封包。

  2. 迷你埠會使用操作 NDIS QoS 參數,初始化 NDIS_QOS_PARAMETERS 結構。 驅動程式必須提供一組完整的操作參數,包括可能未在網路適配器上設定的參數。

    當迷你埠驅動程式初始化 Header 成員時,它會將 HeaderType 成員設定為 NDIS_OBJECT_TYPE_QOS_PARAMETERS。 迷你埠驅動程式會將 HeaderRevision 成員設定為 NDIS_QOS_PARAMETERS_REVISION_1,並將 Size 成員設定為 NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1。

    如果對應的成員包含自迷你埠驅動程式發出NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE狀態指示之後已變更的數據,迷你埠驅動程序會設定旗標成員中適當的NDIS_QOS_PARAMETERS_Xxx_CHANGED旗標。

    注意 設定 NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標是選擇性的。 NDIS 一律假設即使NDIS_QOS_PARAMETERS的成員尚未從先前 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE的狀態指示變更,也是最新的。

    如需如何設定 Flags 成員的詳細資訊,請參閱設定旗標成員指導方針。

  3. 迷你埠驅動程式會針對作業 NDIS QoS 參數的每個流量分類,初始化 NDIS_QOS_CLASSIFICATION_ELEMENT 結構。 驅動程式會在緩衝區中 NDIS_QOS_PARAMETERS 結構的結尾新增這些專案。

    注意 迷你埠驅動程式不得在任何NDIS_QOS_CLASSIFICATION_ELEMENT結構的 Flags 成員設定NDIS_QOS_CLASSIFICATION_ENFORCED_BY_MINIPORT旗標。

    驅動程式會將 NDIS_QOS_PARAMETERS 結構的 NumClassificationElements 成員設定為陣列中的分類元素數目。 驅動程式會將 FirstClassificationElementOffset 成員設定為緩衝區開頭第一個專案的位元組位移。 驅動程式也會將 ClassificationElementSize 成員設定為陣列中每個元素的長度,以位元組為單位。

    注意 從 NDIS 6.30 開始,迷你埠驅動程式必須將 ClassificationElementSize 成員設定sizeof(NDIS_QOS_CLASSIFICATION_ELEMENT

  4. 迷你埠驅動程式會以下列方式初始化 狀態指示的NDIS_STATUS_INDICATION 結構:

    • StatusCode 成員必須設定為 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE。

    • StatusBuffer 成員必須設定為包含操作 NDIS QoS 參數之緩衝區的指標。

    • StatusBufferSize 成員必須設定為緩衝區的長度,以位元組為單位。

  5. 迷你埠驅動程式會呼叫 NdisMIndicateStatusEx 來發出狀態指示。 驅動程式必須將指標傳遞至 statusIndication 參數NDIS_STATUS_INDICATION結構。

設定旗標成員的指導方針

迷你埠驅動程式會在 NDIS_QOS_PARAMETERS 結構的 Flags 成員設定下列旗標,以指定網路適配器上已設定或變更哪些操作 NDIS QoS 參數:

NDIS_QOS_PARAMETERS_ETS_CONFIGURED
如果設定此旗標,迷你埠驅動程式已使用下列成員中包含的 ETS 參數來設定網路適配器:

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

注意 迷你埠驅動程序必須支援ETS,才能支援DCB的NDIS QoS。 不過,此旗標的設定不會指定網路適配器是否支援ETS。 相反地,此旗標的設定只會指定是否要在網路適配器上設定ETS參數。

NDIS_QOS_PARAMETERS_ETS_CHANGED
如果設定此旗標,下列成員中已變更一或多個ETS 參數:

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

NDIS_QOS_PARAMETERS_PFC_CONFIGURED
如果已設定此旗標,迷你埠驅動程式已使用 PfcEnable 成員中包含的 PFC 設定來設定網路適配器。

注意 迷你埠驅動程序必須支援 PFC,才能支援 DCB 的 NDIS QoS。 此旗標的設定未指定網路適配器是否支援 PFC。 相反地,此旗標的設定只會指定網路適配器上是否啟用 PFC 參數。

NDIS_QOS_PARAMETERS_PFC_CHANGED
如果設定此旗標,PfcEnable 成員中已變更一或多個 PFC 設定。

NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED
如果設定此旗標,迷你埠驅動程式已使用下列成員中指定的 QoS 流量分類參數來設定網路適配器:

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED
如果設定此旗標,下列成員中已變更一或多個 QoS 流量分類參數:

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

注意 如果NDIS_QOS_PARAMETERS結構包含 NDIS QoS 參數設定,則必須設定NDIS_QOS_PARAMETERS_Xxx_CONFIGURED旗標。 無論設定是否已變更,迷你埠驅動程式都必須設定這些旗標。 不過,驅動程式必須 設定NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標,只針對已變更的設定。