共用方式為


WDI TLV 產生器介面概觀

C++ 多載函式模型

在此模型中,只有一個函式呼叫可從您的資料結構產生 TLV 位元組陣列。

WDI_INDICATION_BSS_ENTRY_LIST_PARAMETERS BssEntryList = ...;
BYTE* pOutput = NULL;
ULONG length = 0;
NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS;

ndisStatus = Generate(
    &BssEntryList,
    cbHeaderLength,
    &Context,
    &length,
    &pOutput);

第二個參數非常有用。 有時候,TLV 緩衝區會封裝成較大的資料結構,而此參數可讓您預先保留該標頭緩衝區開頭的空間。 cbHeaderLength的正確值通常是 sizeof(WDI_MESSAGE_HEADER)

對於沒有相關聯資料的訊息,仍有多載的產生 API,但第一個參數是選擇性的,而且可能只是以 的形式 (EmptyMessageStructureType*)NULL 傳入。

當您完成 pOutput中包含的 TLV 資料時,您必須回呼程式庫以釋放緩衝區。

    FreeGenerated(pOutput);
    pOutput = NULL;

C 樣式函式模型

在此模型中,每個最上層訊息或結構都有特定的 Generate 常式,因為 C 不支援多載函式。 否則,其行為與 C++ 模型相同。

ndisStatus = GenerateWdiGetAdapterCapabilities(
    &adapterCapabilities,
    (ULONG)sizeof(WFC_COMMAND_HEADER),
    &Context,
    &length,
    &pOutput);

當您使用 TLV 位元組陣列完成時,請回呼以與 C++ 模型相同的方式釋放記憶體。

    FreeGenerated(pOutput);
    pOutput = NULL;