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
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