Compartir a través de


Información general sobre la interfaz del generador TLV de WDI

Modelo de función sobrecargada de C++

En este modelo, solo hay una llamada de función para generar una matriz de bytes de TLV a partir de la estructura de datos.

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);

El segundo parámetro puede ser muy útil. A veces, el búfer de TLV se empaqueta en una estructura de datos más grande y este parámetro permite reservar previamente el espacio al principio del búfer para ese encabezado. El valor correcto para cbHeaderLength suele sizeof(WDI_MESSAGE_HEADER)ser .

En el caso de los mensajes que no tienen datos asociados, todavía hay sobrecargadas Generar API, pero el primer parámetro es opcional y simplemente se puede pasar como (EmptyMessageStructureType*)NULL.

Cuando haya terminado con los datos de TLV contenidos en pOutput, debe volver a llamar a la biblioteca para liberar el búfer.

    FreeGenerated(pOutput);
    pOutput = NULL;

Modelo de función de estilo C

En este modelo, hay una rutina Generate específica para cada mensaje o estructura de nivel superior porque C no admite funciones sobrecargadas. De lo contrario, se comporta igual que el modelo de C++.

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

Cuando haya terminado con la matriz de bytes TLV, vuelva a llamar para liberar la memoria de la misma manera que el modelo de C++.

    FreeGenerated(pOutput);
    pOutput = NULL;