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.

Observaciones

WMI requiere que las cadenas que una función de devolución de llamada EvtWmiInstanceQueryInstance devuelva 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 que se escribieron 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 de WDF_PTR_ADD_OFFSET definida en Wdfcore.h.

Ejemplos

El ejemplo de código siguiente procede del controlador de ejemplo serie de. Este ejemplo es un EvtWmiInstanceQueryInstance función de devolución de llamada 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 Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
encabezado de wdfwmi.h (incluya Wdf.h)
biblioteca de Ninguno

Consulte también

EvtWmiInstanceQueryInstance

UNICODE_STRING