Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
[Hanya berlaku untuk KMDF]
Fungsi panggilan balik peristiwa
Sintaksis
EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtWdfDeviceProcessQueryInterfaceRequest;
NTSTATUS EvtWdfDeviceProcessQueryInterfaceRequest(
[in] WDFDEVICE Device,
[in] LPGUID InterfaceType,
[in, out] PINTERFACE ExposedInterface,
[in, out] PVOID ExposedInterfaceSpecificData
)
{...}
Parameter
[in] Device
Handel ke objek perangkat kerangka kerja.
[in] InterfaceType
Penunjuk ke GUID yang mengidentifikasi antarmuka yang ditentukan driver.
[in, out] ExposedInterface
Penunjuk ke struktur ANTARMUKA
[in, out] ExposedInterfaceSpecificData
Penunjuk ke informasi tambahan, opsional, ditentukan driver, khusus antarmuka. Driver berbasis kerangka kerja menentukan nilai ini dengan menyediakan nilai parameter Antarmuka
Mengembalikan nilai
Jika fungsi panggilan balik EvtDeviceProcessQueryInterfaceRequest menerima GUID yang didukungnya, dan jika fungsi tidak mengalami kesalahan, fungsi harus mengembalikan STATUS_SUCCESS atau nilai status lain yang NT_SUCCESS( status) sama dengan TRUE. Kerangka kerja terus meneruskan permintaan ke tumpukan untuk melihat apakah driver tambahan juga mendukung antarmuka.
Fungsi panggilan balik EvtDeviceProcessQueryInterfaceRequest harus mengembalikan STATUS_NOT_SUPPORTED jika menentukan bahwa, untuk kasus tertentu, fungsi ini tidak akan melayani antarmuka. Kerangka kerja terus meneruskan permintaan ke tumpukan untuk melihat apakah driver lain mendukung antarmuka. Untuk informasi selengkapnya tentang situasi ini, lihat bagian Keterangan berikut ini.
Jika fungsi panggilan balik mengalami kesalahan, fungsi tersebut harus mengembalikan nilai status yang NT_SUCCESS( status) sama dengan FALSE. Kerangka kerja gagal permintaan driver lain untuk antarmuka dan tidak meneruskan permintaan ke tumpukan.
Komentar
Driver berbasis kerangka kerja mendaftarkan fungsi panggilan balik peristiwa EvtDeviceProcessQueryInterfaceRequest dengan memanggil WdfDeviceAddQueryInterface.
Jika antarmuka yang ditentukan driver hanya mendukung komunikasi satu arah dan mengatur ImportInterface anggota struktur WDF_QUERY_INTERFACE_CONFIG yang menjelaskan antarmuka untuk FALSE, fungsi panggilan balik EvtDeviceProcessQueryInterfaceReque st bersifat opsional. Ketika driver lain memanggil
Driver Anda harus menyediakan fungsi panggilan balik peristiwa EvtDeviceProcessQueryInterfaceRequest jika driver menentukan antarmuka yang mendukung komunikasi dua arah (dan mengatur ImportInterface anggota struktur WDF_QUERY_INTERFACE_CONFIG untuk TRUE). Fungsi panggilan balik diperlukan karena, jika ImportInterface TRUE dan panggilan driver lain WdfFdoQueryForInterface, kerangka kerja tidak menyalin antarmuka yang ditentukan driver ke dalam struktur antarmuka driver yang meminta. Sebagai gantinya, fungsi panggilan balik harus memperbarui struktur antarmuka driver yang meminta.
Fungsi panggilan balik dapat mengubah antarmuka. Secara khusus, ia dapat:
- Ubah nilai apa pun di setiap anggota antarmuka.
-
Alokasikan konteks khusus instans dinamis dengan memodifikasi
Context anggota struktur ANTARMUKA.
Untuk informasi selengkapnya tentang antarmuka yang ditentukan driver, lihat Menggunakan Antarmuka Driver-Defined.
Contoh
Untuk menentukan fungsi panggilan balik EvtDeviceProcessQueryInterfaceRequest, Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi 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 fungsi panggilan balik EvtDeviceProcessQueryInterfaceRequest yang diberi nama MyDeviceProcessQueryInterfaceRequest, gunakan jenis EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST seperti yang ditunjukkan dalam contoh kode ini:
EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST MyDeviceProcessQueryInterfaceRequest;
Kemudian, terapkan fungsi panggilan balik Anda sebagai berikut:
_Use_decl_annotations_
NTSTATUS
MyDeviceProcessQueryInterfaceRequest (
WDFDEVICE Device,
LPGUID InterfaceType,
PINTERFACE ExposedInterface,
PVOID ExposedInterfaceSpecificData
)
{...}
Jenis fungsi EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST didefinisikan dalam file header WdfQueryInterface.h. Untuk mengidentifikasi kesalahan dengan lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver KMDF. Untuk informasi tentang Use_decl_annotations, lihat Anotasi Perilaku Fungsi.
Persyaratan
| Syarat | Nilai |
|---|---|
| Platform Target |
Universal |
| versi KMDF Minimum | 1.0 |
| Header |
wdfqueryinterface.h (termasuk Wdf.h) |
| IRQL | PASSIVE_LEVEL |
Lihat juga
ANTARMUKA