共用方式為


WDI TLV 版本控制

為了維持回溯相容性,WDI 和迷你埠都會使用 TLV 資料流程作為版本控制界限。 TLV 位元組資料流程的產生者必須一律產生回溯相容的 TLV,且不包含任何新加入的欄位。 這可藉由將 PeerVersion 新增至 CoNtext 參數來完成。 此欄位應該由初始化期間收到的 WdiVersion 呼叫端初始化。

以下是 CoNtext 參數的類型定義,它會傳遞至每個剖析和產生 API。

typedef struct _TLV_CONTEXT
{
    ULONG_PTR   AllocationContext;
    ULONG       PeerVersion;
} TLV_CONTEXT, *PTLV_CONTEXT;
typedef const TLV_CONTEXT * PCTLV_CONTEXT;

Parse 和 Generate API 未修改AllocationCoNtext,而且會繼續傳遞至迷你埠提供的運算子 new 回呼。 如需詳細資訊,請參閱 WDI TLV 產生器/剖析器記憶體介面

如果 WDI 型單一二進位驅動程式針對舊版 WDI 執行,迷你埠中的產生器會使用 PeerVersion 來產生較舊的位元組資料流程。 相反地,剖析器會根據 PeerVersion 取用較舊的位元組資料流程,並將它轉換成新的資料結構。

如果迷你埠驅動程式未使用 TLV 剖析器產生器程式庫,而是改為寫入自己的 TLV 剖析器和產生器,而且想要讓單一二進位檔只執行較舊的作業系統版本 (,因此舊版 WDI) ,它們也必須包含這項功能。 其剖析器必須接受舊版 WDI 所產生的 TLV 文法,而且其產生器只能根據較舊的文法產生 TLV。

XML 已增強以支援此版本控制,且 containerRefs 上允許兩個屬性: versionAddedversionRemoved。 這是驅動剖析器和產生器,以根據對等版本調整位元組資料流程。

注意 剖析器和產生器假設它們一律與WDI_VERSION_LATEST連結。 當呼叫NdisMRegisterWdiMiniportDriver而不是使用特定版本時,迷你埠應該一律會針對NDIS_MINIPORT_DRIVER_WDI_CHARACTERISTICS::WdiVersion傳遞 WDI_VERSION_1_0 WDI_VERSION_LATEST,因為 TLV 剖析器產生器產生器會產生問題,因為另一端可能會傳送非預期的位元組資料流程。