Fungsi WdfRegistryQueryMemory (wdfregistry.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfRegistryQueryMemory mengambil data yang saat ini ditetapkan ke nilai registri tertentu, menyimpan data dalam buffer yang dialokasikan kerangka kerja, dan membuat objek memori kerangka kerja untuk mewakili buffer.
Sintaks
NTSTATUS WdfRegistryQueryMemory(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
[out] WDFMEMORY *Memory,
[out, optional] PULONG ValueType
);
Parameter
[in] Key
Handel ke objek kunci registri yang mewakili kunci registri yang dibuka.
[in] ValueName
Penunjuk ke struktur UNICODE_STRING yang berisi nama nilai.
[in] PoolType
Nilai yang diketik POOL_TYPE yang menentukan jenis memori yang akan dialokasikan untuk buffer data.
[in, optional] MemoryAttributes
Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang berisi atribut objek untuk objek memori baru. Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.
[out] Memory
Penunjuk ke lokasi yang menerima handel ke objek memori baru.
[out, optional] ValueType
Penunjuk ke lokasi yang menerima jenis data. Untuk daftar nilai jenis data, lihat Tipe anggota KEY_VALUE_BASIC_INFORMATION. Penunjuk ini bersifat opsional dan dapat berupa NULL.
Nilai kembali
WdfRegistryQueryMemory mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
WdfRegistryQueryMemory tidak dipanggil di IRQL = PASSIVE_LEVEL. |
|
Parameter yang tidak valid ditentukan. |
|
Objek memori tidak dapat dialokasikan. |
|
Driver tidak membuka kunci registri dengan akses KEY_QUERY_VALUE, KEY_READ, atau KEY_ALL_ACCESS. |
|
Nilai registri tidak tersedia. |
|
Nilai registri ada di bawah kunci yang ditentukan, tetapi kosong. |
Untuk daftar nilai pengembalian lain yang mungkin dikembalikan oleh metode WdfRegistryQueryMemory , lihat Kesalahan Pembuatan Objek Kerangka Kerja.
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Ketika driver memanggil WdfRegistryQueryMemory, kerangka kerja mengalokasikan buffer yang cukup besar untuk menyimpan data nilai registri yang ditentukan. Setelah WdfRegistryQueryMemory kembali, driver dapat memanggil WdfMemoryGetBuffer untuk mendapatkan pointer ke buffer dan ukuran buffer.
Untuk informasi selengkapnya tentang objek kunci registri, lihat Menggunakan Registri di Driver Framework-Based.
Contoh
Contoh kode berikut mengambil data yang ditetapkan ke nilai MyValueName lalu mendapatkan alamat dan ukuran data.
WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");
status = WdfRegistryQueryMemory(
Key,
&valueName1,
PagedPool,
NULL,
&memory,
&type
);
pBuf = (PUCHAR)WdfMemoryGetBuffer(
memory,
&size
);
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) |
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