Fungsi WdfRegistryQueryValue (wdfregistry.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfRegistryQueryValue mengambil data yang saat ini ditetapkan ke nilai registri tertentu.

Sintaks

NTSTATUS WdfRegistryQueryValue(
  [in]            WDFKEY           Key,
  [in]            PCUNICODE_STRING ValueName,
  [in]            ULONG            ValueLength,
  [out, optional] PVOID            Value,
  [out, optional] PULONG           ValueLengthQueried,
  [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] ValueLength

Panjang, dalam byte, dari buffer yang dirujuk Nilai .

[out, optional] Value

Penunjuk ke buffer yang dialokasikan driver yang menerima data nilai registri. Jika pointer ini NULL, WdfRegistryQueryValue mengambil panjang data tetapi bukan data.

[out, optional] ValueLengthQueried

Penunjuk ke lokasi yang menerima panjang data nilai registri. Penunjuk ini bersifat opsional dan dapat berupa NULL.

[out, optional] ValueType

Penunjuk ke lokasi yang menerima jenis data nilai registri. Untuk daftar nilai jenis data, lihat Tipe anggota KEY_VALUE_BASIC_INFORMATION. Penunjuk ini bersifat opsional dan dapat berupa NULL.

Nilai kembali

WdfRegistryQueryValue mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryValue tidak dipanggil di IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Parameter yang tidak valid ditentukan.
STATUS_ACCESS_DENIED
Driver tidak membuka kunci registri dengan akses KEY_QUERY_VALUE, KEY_READ, atau KEY_ALL_ACCESS.
STATUS_BUFFER_OVERFLOW
Buffer yang dirujuk parameter Nilai terlalu kecil, dan hanya sebagian data yang ditulis ke buffer.
STATUS_BUFFER_OVERFLOW
Buffer Nilai terlalu kecil, dan tidak ada data yang ditulis ke buffer.
STATUS_OBJECT_NAME_NOT_FOUND
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 membuka kunci perangkat keras perangkat dan mengambil data yang ditetapkan ke nilai NumberOfToasters , yang disimpan di bawah kunci perangkat keras perangkat.

WCHAR  comPort[FM_COM_PORT_STRING_LENGTH];
ULONG  length;
NTSTATUS  status;
ULONG  length, valueType, value;
DECLARE_CONST_UNICODE_STRING(valueName, L"NumberOfToasters");
WDFKEY  hKey;

status = WdfDeviceOpenRegistryKey(
                                  Device,
                                  PLUGPLAY_REGKEY_DEVICE,
                                  KEY_QUERY_VALUE,
                                  NULL, 
                                  &hKey
                                  );
if (!NT_SUCCESS (status)) {
    goto Error;
}
status = WdfRegistryQueryValue(
                               hKey,
                               &valueName,
                               sizeof(ULONG),
                               &value,
                               &length,
                               &valueType
                               );

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

UNICODE_STRING

WdfDeviceOpenRegistryKey

WdfRegistryQueryMemory

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString