Fungsi WdfRegistryQueryUnicodeString (wdfregistry.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfRegistryQueryUnicodeString mengambil data string yang saat ini ditetapkan ke nilai string registri tertentu dan menyalin string ke struktur UNICODE_STRING tertentu.
Sintaks
NTSTATUS WdfRegistryQueryUnicodeString(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[out, optional] PUSHORT ValueByteLength,
[in, out] PUNICODE_STRING Value
);
Parameter
[in] Key
Handel ke objek kunci registri yang mewakili kunci registri yang dibuka.
[in] ValueName
Penunjuk ke struktur UNICODE_STRING yang berisi nama untuk nilai registri.
[out, optional] ValueByteLength
Penunjuk ke lokasi yang menerima jumlah byte yang terkandung dalam string Unicode yang dituju Nilai , termasuk byte NULL yang mengakhiri. Penunjuk ini bersifat opsional dan dapat berupa NULL
[in, out] Value
Penunjuk ke struktur UNICODE_STRING yang menerima string data untuk kunci yang ditentukan Kunci . Jika parameter ini NULL dan ValueByteLength bukan NULL, WdfRegistryQueryUnicodeString hanya mengembalikan ukuran string.
Nilai kembali
WdfRegistryQueryUnicodeString mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
WdfRegistryQueryUnicodeString tidak dipanggil di IRQL = PASSIVE_LEVEL. |
|
Parameter yang tidak valid ditentukan. |
|
Memori tidak cukup untuk menyelesaikan operasi. |
|
Driver tidak membuka kunci registri dengan akses KEY_QUERY_VALUE, KEY_READ, atau KEY_ALL_ACCESS. |
|
Jenis data nilai registri yang ditentukan parameter ValueName tidak REG_SZ. |
|
Buffer yang dirujuk parameter Nilai terlalu kecil, dan hanya sebagian data yang ditulis ke buffer. |
|
Buffer yang dirujuk parameter Nilai terlalu kecil, dan tidak ada data yang ditulis ke buffer. |
|
Nilai registri tidak tersedia. |
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Untuk informasi selengkapnya tentang objek kunci registri, lihat Menggunakan Registri di Driver Framework-Based.
Contoh
Contoh kode berikut, yang berasal dari driver sampel Serial , mengambil string Unicode yang mewakili data string yang ditetapkan ke nilai PortName di bawah kunci perangkat keras perangkat.
NTSTATUS
SerialReadSymName(
IN WDFDEVICE Device,
__out PWCHAR RegName,
IN OUT PUSHORT LengthOfRegName // In characters
)
{
NTSTATUS status;
WDFKEY hKey;
UNICODE_STRING value;
UNICODE_STRING valueName;
USHORT requiredLength;
value.Buffer = RegName;
value.MaximumLength = *LengthOfRegName;
value.Length = 0;
status = WdfDeviceOpenRegistryKey(
Device,
PLUGPLAY_REGKEY_DEVICE,
STANDARD_RIGHTS_ALL,
WDF_NO_OBJECT_ATTRIBUTES,
&hKey
);
if (NT_SUCCESS (status)) {
RtlInitUnicodeString(
&valueName,
L"PortName"
);
status = WdfRegistryQueryUnicodeString (
hKey,
&valueName,
&requiredLength,
&value
);
WdfRegistryClose(hKey);
}
return status;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfregistry.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |