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

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes