Bagikan melalui


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
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryUnicodeString tidak dipanggil di IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Parameter yang tidak valid ditentukan.
STATUS_INSUFFICIENT_RESOURCES
Memori tidak cukup untuk menyelesaikan operasi.
STATUS_ACCESS_DENIED
Driver tidak membuka kunci registri dengan akses KEY_QUERY_VALUE, KEY_READ, atau KEY_ALL_ACCESS.
STATUS_OBJECT_TYPE_MISMATCH
Jenis data nilai registri yang ditentukan parameter ValueName tidak REG_SZ.
STATUS_BUFFER_OVERFLOW
Buffer yang dirujuk parameter Nilai terlalu kecil, dan hanya sebagian data yang ditulis ke buffer.
STATUS_BUFFER_OVERFLOW
Buffer yang dirujuk parameter 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, 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)

Lihat juga

RtlInitUnicodeString

UNICODE_STRING

WdfRegistryClose

WdfRegistryQueryMemory

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryValue