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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk