WDF_WMI_BUFFER_APPEND_STRING (wdfwmi.h)

[Berlaku untuk KMDF saja]

Fungsi WDF_WMI_BUFFER_APPEND_STRING menyalin string Unicode tertentu ke dalam buffer tertentu dalam format yang diperlukan WMI.

Sintaks

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

Parameter

[out] Buffer

Penunjuk ke buffer tujuan yang menerima string.

[in] BufferLength

Panjangnya, dalam byte, dari buffer tujuan yang menerima string.

[in] String

Penunjuk ke struktur UNICODE_STRING yang berisi string yang akan disalin.

[out] RequiredSize

Penunjuk ke lokasi yang menerima jumlah byte yang diperlukan untuk menyimpan string yang ditentukan di buffer tujuan.

Nilai kembali

WDF_WMI_BUFFER_APPEND_STRING mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika buffer tujuan terlalu kecil untuk menahan string Unicode yang ditentukan parameter String , fungsi akan mengembalikan STATUS_BUFFER_TOO_SMALL.

Keterangan

WMI mengharuskan string yang dikembalikan fungsi panggilan balik EvtWmiInstanceQueryInstance didahului oleh jumlah byte. Fungsi WDF_WMI_BUFFER_APPEND_STRING menghitung jumlah byte, menyimpannya di buffer tujuan, lalu menyalin string dari struktur UNICODE_STRING ke dalam buffer tujuan.

Saat WDF_WMI_BUFFER_APPEND_STRING kembali, lokasi yang ditunjuk parameter RequiredSize berisi jumlah total byte yang ditulis ke buffer. Untuk menemukan alamat buffer pertama yang mengikuti string, driver Anda dapat meneruskan nilai RequiredSize ke makro WDF_PTR_ADD_OFFSET yang ditentukan dalam Wdfcore.h.

Contoh

Contoh kode berikut berasal dari driver sampel Serial . Contoh ini adalah fungsi panggilan balik EvtWmiInstanceQueryInstance yang mendapatkan nama simbolis perangkat dan menyalin nama ke dalam buffer output fungsi panggilan balik.

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

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfwmi.h (termasuk Wdf.h)
Pustaka Tidak ada

Lihat juga

EvtWmiInstanceQueryInstance

UNICODE_STRING