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 |