Compartir a través de


función WDF_WMI_BUFFER_APPEND_STRING (wdfwmi.h)

[Solo se aplica a KMDF]

La función WDF_WMI_BUFFER_APPEND_STRING copia una cadena Unicode especificada en un búfer especificado en el formato que requiere WMI.

Sintaxis

NTSTATUS WDF_WMI_BUFFER_APPEND_STRING(
  [out] PVOID            Buffer,
  [in]  ULONG            BufferLength,
  [in]  PCUNICODE_STRING String,
  [out] PULONG           RequiredSize
);

Parámetros

[out] Buffer

Puntero a un búfer de destino que recibe la cadena.

[in] BufferLength

Longitud, en bytes, del búfer de destino que recibe la cadena.

[in] String

Puntero a una estructura UNICODE_STRING que contiene la cadena que se va a copiar.

[out] RequiredSize

Puntero a una ubicación que recibe el número de bytes necesarios para almacenar la cadena especificada en el búfer de destino.

Valor devuelto

WDF_WMI_BUFFER_APPEND_STRING devuelve STATUS_SUCCESS si la operación se realiza correctamente. Si el búfer de destino es demasiado pequeño para contener la cadena Unicode que especifica el parámetro String , la función devuelve STATUS_BUFFER_TOO_SMALL.

Comentarios

WMI requiere que las cadenas que devuelve una función de devolución de llamada EvtWmiInstanceQueryInstance van precedidas de un recuento de bytes. La función WDF_WMI_BUFFER_APPEND_STRING calcula el recuento de bytes, lo almacena en el búfer de destino y, a continuación, copia la cadena de la estructura UNICODE_STRING en el búfer de destino.

Cuando WDF_WMI_BUFFER_APPEND_STRING devuelve, la ubicación a la que apunta el parámetro RequiredSize contiene el número total de bytes escritos en el búfer. Para buscar la primera dirección del búfer que sigue a la cadena, el controlador puede pasar el valor RequiredSize a la macro WDF_PTR_ADD_OFFSET que se define en Wdfcore.h.

Ejemplos

El ejemplo de código siguiente es del controlador de ejemplo serie . Este ejemplo es una función de devolución de llamada EvtWmiInstanceQueryInstance que obtiene el nombre simbólico de un dispositivo y copia el nombre en el búfer de salida de la función de devolución de llamada.

NTSTATUS
EvtWmiQueryPortName(
    IN  WDFWMIINSTANCE WmiInstance,
    IN  ULONG OutBufferSize,
    IN  PVOID OutBuffer,
    OUT PULONG BufferUsed
    )
{
    WDFDEVICE device;
    PSERIAL_DEVICE_EXTENSION pDevExt;
    WCHAR pRegName[SYMBOLIC_NAME_LENGTH];
    UNICODE_STRING string;
    USHORT nameSize = sizeof(pRegName);
    NTSTATUS status;

    PAGED_CODE();

    device = WdfWmiInstanceGetDevice(WmiInstance);
    pDevExt = SerialGetDeviceExtension(device);

    status = SerialReadSymName(
                               device,
                               pRegName,
                               &nameSize
                               );
    if (!NT_SUCCESS(status)) {
        return status;
    }
    RtlInitUnicodeString(
                         &string,
                         pRegName
                         );
    return WDF_WMI_BUFFER_APPEND_STRING(
                                        OutBuffer,
                                        OutBufferSize,
                                        &string,
                                        BufferUsed
                                        );
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfwmi.h (incluir Wdf.h)
Library None

Consulte también

EvtWmiInstanceQueryInstance

UNICODE_STRING