Fungsi SpbControllerSetIoOtherCallback (spbcx.h)
Metode SpbControllerSetIoOtherCallback mendaftarkan fungsi panggilan balik driver pengontrol SPB EvtSpbControllerIoOther .
Sintaks
void SpbControllerSetIoOtherCallback(
[in] WDFDEVICE FxDevice,
[in] PFN_SPB_CONTROLLER_OTHER EvtSpbControllerIoOther,
[in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);
Parameter
[in] FxDevice
Handel WDFDEVICE ke objek perangkat yang mewakili pengontrol SPB.
[in] EvtSpbControllerIoOther
Penunjuk ke fungsi panggilan balik EvtSpbControllerIoOther . Driver pengontrol SPB mengimplementasikan fungsi ini. Ekstensi kerangka kerja SPB (SpbCx) memanggil fungsi ini untuk meneruskan permintaan kontrol I/O ke driver pengontrol. Untuk informasi selengkapnya tentang jenis permintaan I/O yang diteruskan ke fungsi ini, lihat bagian Keterangan berikut.
[in, optional] EvtIoInCallerContext
Penunjuk ke fungsi panggilan balik EvtIoInCallerContext yang dipanggil ketika permintaan kontrol I/O pertama kali tiba di antrean I/O pengontrol, dan permintaan berisi kode IOCTL yang tidak dikenali oleh ekstensi kerangka kerja SPB (SpbCx). Panggilan balik ini berjalan dalam konteks proses pencetus permintaan, dan dapat melakukan praproses permintaan yang nantinya akan diproses oleh panggilan balik EvtSpbControllerIoOther . Parameter ini bersifat opsional dan dapat ditentukan sebagai NULL jika tidak ada praproscesing seperti itu yang diperlukan. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
Nilai kembali
Tidak ada
Keterangan
Metode ini menyediakan cara bagi driver pengontrol SPB Anda untuk mendeklarasikan dukungannya untuk kode kontrol I/O kustom (IOCTL) yang khusus untuk bus atau khusus driver. Jika driver pengontrol SPB tidak memanggil metode ini, SpbCx menolak semua permintaan kontrol I/O tersebut, dan driver pengontrol SPB tidak pernah melihatnya.
SpbCx mengelola antrean I/O untuk pengontrol SPB. Secara default, jika SpbCx menerima permintaan kontrol I/O yang memiliki IOCTL yang tidak didukungnya, SpbCx menyelesaikan permintaan dengan kode status kesalahan STATUS_INVALID_DEVICE_REQUEST.
Namun, dengan memanggil SpbControllerSetIoOtherCallback, driver pengontrol SPB menyatakan dukungannya untuk permintaan kontrol I/O yang tidak didukung ekstensi kerangka kerja SPB (SpbCx). Dalam hal ini, ketika SpbCx menerima permintaan kontrol I/O yang memiliki kode IOCTL yang tidak didukungnya, SpbCx memanggil fungsi EvtSpbControllerIoOther untuk meneruskan permintaan ke driver pengontrol SPB untuk diproses. Driver pengontrol SPB bertanggung jawab untuk menyelesaikan permintaan.
Untuk daftar IOCTL yang didukung SpbCx, lihat Kode Kontrol I/O SpbCx.
Fungsi panggilan balik EvtIoInCallerContext opsional berjalan dalam konteks proses pencetus permintaan, dan dapat melakukan praproses parameter permintaan yang bergantung pada konteks, seperti penunjuk buffer, sebelum permintaan diteruskan ke fungsi panggilan balik EvtSpbControllerIoOther . Ketika fungsi EvtIoInCallerContext dipanggil, konteks per permintaan apa pun yang diminta driver pengontrol SPB dalam panggilan sebelumnya ke SpbControllerSetRequestAttributes akan sudah dialokasikan dan ditetapkan ke permintaan.
Driver pengontrol SPB harus memanggil metode ini sebelum menerapkan objek perangkat—yaitu, sebelum kembali dari panggilan balik EvtDriverDeviceAdd atau menambahkan PDO ke daftar anak pengontrol. Daftar anak mewakili perangkat yang dilampirkan ke bus. Untuk informasi selengkapnya, lihat Menghitung Perangkat di Bus.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 8. |
Target Platform | Universal |
Header | spbcx.h |
Pustaka | Spbcxstubs.lib |
IRQL | 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