共用方式為


指示對操作 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_PARAMETERS 的 OID 方法要求,或透過獨立硬體廠商 (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 優先順序層級(動作)。 如果網路介面卡在傳輸或 輸出的封包中檢測到符合條件的模式,則會將相關聯的優先順序層級指派給該封包。 適配器也會根據優先等級,將其他 NDIS QoS 原則套用至封包。

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

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

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

    注意 設定 NDIS_QOS_PARAMETERS_Xxx_CHANGED 旗標是可選擇的。 NDIS 一律會假設 NDIS_QOS_PARAMETERS 的成員是最新的,即便它們自從先前 NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE 狀態指示以來並未改變。

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

  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來發出狀態指示。 驅動程式必須將指標傳遞至 NDIS_STATUS_INDICATION 結構內的 StatusIndication 參數。

設定旗標成員的指南

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

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

  • NumTrafficClasses

  • 優先權分配表

  • Tc頻寬分配表

  • TsaAssignmentTable

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

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

  • NumTrafficClasses

  • 優先權分配表

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

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

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

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

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

  • NumClassificationElements

  • 分類元素大小

  • FirstClassificationElementOffset

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

  • NumClassificationElements

  • 分類元素大小

  • FirstClassificationElementOffset

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