Bagikan melalui


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
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryMemory tidak dipanggil di IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Parameter yang tidak valid ditentukan.
STATUS_INSUFFICIENT_RESOURCES
Objek memori tidak dapat dialokasikan.
STATUS_ACCESS_DENIED
Driver tidak membuka kunci registri dengan akses KEY_QUERY_VALUE, KEY_READ, atau KEY_ALL_ACCESS.
STATUS_OBJECT_NAME_NOT_FOUND
Nilai registri tidak tersedia.
STATUS_RESOURCE_DATA_NOT_FOUND
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

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue