Partager via


fonction WDF_WMI_BUFFER_APPEND_STRING (wdfwmi.h)

[S’applique uniquement à KMDF]

La fonction WDF_WMI_BUFFER_APPEND_STRING copie une chaîne Unicode spécifiée dans une mémoire tampon spécifiée au format WMI requis.

Syntaxe

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

Paramètres

[out] Buffer

Pointeur vers une mémoire tampon de destination qui reçoit la chaîne.

[in] BufferLength

Longueur, en octets, de la mémoire tampon de destination qui reçoit la chaîne.

[in] String

Pointeur vers une structure de UNICODE_STRING qui contient la chaîne à copier.

[out] RequiredSize

Pointeur vers un emplacement qui reçoit le nombre d’octets requis pour stocker la chaîne spécifiée dans la mémoire tampon de destination.

Valeur retournée

WDF_WMI_BUFFER_APPEND_STRING retourne STATUS_SUCCESS si l’opération réussit. Si la mémoire tampon de destination est trop petite pour contenir la chaîne Unicode spécifiée par le paramètre String , la fonction retourne STATUS_BUFFER_TOO_SMALL.

Remarques

WMI exige que les chaînes qu’une fonction de rappel EvtWmiInstanceQueryInstance retourne soient précédées d’un nombre d’octets. La fonction WDF_WMI_BUFFER_APPEND_STRING calcule le nombre d’octets, le stocke dans la mémoire tampon de destination, puis copie la chaîne de la structure UNICODE_STRING dans la mémoire tampon de destination.

Lorsque WDF_WMI_BUFFER_APPEND_STRING retourne, l’emplacement vers lequel pointe le paramètre RequiredSize contient le nombre total d’octets qui ont été écrits dans la mémoire tampon. Pour trouver la première adresse de mémoire tampon qui suit la chaîne, votre pilote peut passer la valeur RequiredSize à la macro WDF_PTR_ADD_OFFSET définie dans Wdfcore.h.

Exemples

L’exemple de code suivant provient de l’exemple de pilote série . Cet exemple est une fonction de rappel EvtWmiInstanceQueryInstance qui obtient le nom symbolique d’un appareil et copie le nom dans la mémoire tampon de sortie de la fonction de rappel.

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

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfwmi.h (inclure Wdf.h)
Bibliothèque None

Voir aussi

EvtWmiInstanceQueryInstance

UNICODE_STRING