RTL_QUERY_REGISTRY_ROUTINE fungsi panggilan balik (wdm.h)

Rutinitas QueryRoutine menyediakan informasi tentang nilai registri yang diminta dalam panggilan sebelumnya ke rutinitas RtlQueryRegistryValues .

Sintaks

RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;

NTSTATUS RtlQueryRegistryRoutine(
  [in]           PWSTR ValueName,
  [in]           ULONG ValueType,
  [in]           PVOID ValueData,
  [in]           ULONG ValueLength,
  [in, optional] PVOID Context,
  [in, optional] PVOID EntryContext
)
{...}

Parameter

[in] ValueName

Menentukan kunci registri yang terkait dengan nilai registri yang diminta. Parameter ini adalah penunjuk ke string Unicode yang dihentikan null yang berisi kunci.

[in] ValueType

Menentukan jenis nilai registri yang disimpan dengan kunci registri yang ditentukan. Untuk informasi selengkapnya jenis nilai registri, lihat definisi parameter Jenis di KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Penunjuk ke nilai data yang terkait dengan kunci registri yang ditentukan. Driver harus memperlakukan nilai ini sebagai baca-saja. Untuk informasi selengkapnya tentang jenis data nilai yang dituju valueData , lihat definisi parameter Jenis di KEY_VALUE_BASIC_INFORMATION.

[in] ValueLength

Menentukan panjang, dalam byte, dari nilai yang dituju valueData .

[in, optional] Context

Menentukan nilai parameter Konteks yang ditentukan driver dalam panggilan sebelumnya ke RtlQueryRegistryValues.

[in, optional] EntryContext

Menentukan nilai EntryContext dalam elemen array QueryTable yang ditentukan driver dalam panggilan sebelumnya ke RtlQueryRegistryValues.

Nilai kembali

QueryRoutine mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika tidak, kode status kesalahan akan dikembalikan. Gunakan hanya kode status yang ditentukan dalam file header Ntstatus.h.

Keterangan

Driver mode kernel mengimplementasikan rutinitas QueryRoutine . Rutinitas ini dipanggil oleh rutinitas RtlQueryRegistryValues .

Untuk mendapatkan informasi tentang satu atau beberapa nilai registri, driver memanggil RtlQueryRegistryValues dan meneruskan pointer, sebagai parameter input, ke array struktur RTL_QUERY_REGISTRY_TABLE . Setiap struktur dalam array ini berisi penunjuk ke rutinitas QueryRoutine yang diimplementasikan driver dan permintaan informasi tentang nilai registri tertentu. Untuk setiap struktur dalam array, RtlQueryRegistryValues memanggil rutinitas QueryRoutine yang ditentukan dan meneruskan ke rutinitas ini sekumpulan parameter yang berisi informasi yang diminta tentang nilai registri yang ditentukan.

Untuk informasi selengkapnya tentang struktur RTL_QUERY_REGISTRY_TABLE , lihat RtlQueryRegistryValues.

Contoh

Untuk menentukan rutinitas panggilan balik QueryRoutine , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis rutinitas panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk pengandar. Mendeklarasikan fungsi menggunakan jenis fungsi panggilan balik membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan rutinitas panggilan balik QueryRoutine yang diberi nama MyQueryRoutine, gunakan jenis RTL_QUERY_REGISTRY_ROUTINE seperti yang ditunjukkan dalam contoh kode ini:

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

Kemudian, terapkan rutinitas panggilan balik Anda sebagai berikut:

_Use_decl_annotations_
NTSTATUS
  MyQueryRoutine(
    PWSTR ValueName,
    ULONG ValueType,
    PVOID ValueData,
    ULONG ValueLength,
    PVOID Context,
    PVOID EntryContext
    )
  {
      // Function body
  }

Jenis fungsi RTL_QUERY_REGISTRY_ROUTINE ditentukan dalam file header Wdm.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan _Use_decl_annotations_ anotasi ke definisi fungsi Anda. Anotasi _Use_decl_annotations_ memastikan bahwa anotasi yang diterapkan ke jenis fungsi RTL_QUERY_REGISTRY_ROUTINE dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver WDM. Untuk informasi tentang _Use_decl_annotations_, lihat Perilaku Fungsi Anotasi.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
IRQL Dipanggil pada PASSIVE_LEVEL.

Lihat juga

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues