Fungsi ScsiPortWmiDispatchFunction (scsiwmi.h)
Rutinitas ScsiPortWmiDispatchFunction adalah rutinitas pengiriman untuk driver miniport yang mendukung WMI.
Sintaks
BOOLEAN ScsiPortWmiDispatchFunction(
[in] PSCSI_WMILIB_CONTEXT WmiLibInfo,
[in] UCHAR MinorFunction,
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] PVOID DataPath,
[in] ULONG BufferSize,
[in] PVOID Buffer
);
Parameter
[in] WmiLibInfo
Penunjuk ke struktur SCSI_WMILIB_CONTEXT yang berisi informasi pendaftaran untuk blok data driver miniport dan blok peristiwa dan menentukan titik masuk untuk rutinitas panggilan balik pustaka WMI driver miniport.
[in] MinorFunction
Menunjukkan tindakan WMI yang akan dilakukan. Driver miniport mengatur MinorFunction ke Srb-WmiSubFunction> dari input SRB.
[in] DeviceContext
Penunjuk ke nilai konteks yang ditentukan driver miniport. Driver port akan meneruskan DeviceContext ke rutinitas panggilan balik HwScsiWmiXxx driver miniport. Nilai ini biasanya akan menunjuk ke struktur HW_DEVICE_EXTENSION.
[in] RequestContext
Penunjuk ke struktur SCSIWMI_REQUEST_CONTEXT yang berisi informasi konteks untuk WMI SRB. Jika SRB dapat tertunda, driver miniport harus mengalokasikan struktur ini dari ekstensi SRB karena konteks permintaan harus tetap valid sampai setelah ScsiPortWmiPostProcess kembali dengan status pengembalian SRB akhir dan ukuran buffer. ScsiPortWmiDispatchFunction akan meneruskan RequestContext ke rutinitas panggilan balik driver miniport yang memproses permintaan ini.
[in] DataPath
Penunjuk ke GUID yang mewakili blok data yang terkait dengan permintaan. Driver miniport mengatur DataPath ke Srb-DataPath> dari SRB input.
[in] BufferSize
Menentukan ukuran dalam byte buffer data. Driver miniport mengatur BufferSize ke Srb-DataTransferLength> dari SRB input.
[in] Buffer
Arahkan ke buffer data. Driver miniport mengatur Buffer ke Srb-DataBuffer> dari input SRB.
Nilai kembali
ScsiPortWmiDispatchFunction mengembalikan TRUE jika permintaan tertunda, atau FALSE jika permintaan selesai.
Keterangan
Ketika driver miniport menerima SRB di mana anggota Fungsi diatur ke SRB_FUNCTION_WMI, ia memanggil ScsiPortWmiDispatchFunction dengan parameter permintaan, termasuk penunjuk ke struktur SCSI_WMILIB_CONTEXT yang diinisialisasi. Struktur ini berisi informasi tentang blok data driver miniport dan blok peristiwa dan mendefinisikan titik masuk untuk rutinitas panggilan balik HwScsiWmiXxx driver miniport.
ScsiPortWmiDispatchFunction mengonfirmasi bahwa SRB adalah permintaan WMI dan menentukan apakah blok yang ditentukan oleh permintaan berlaku untuk driver miniport. Jika kondisi ini terpenuhi, ScsiPortWmiDispatchFunction memproses SRB dengan memanggil titik masuk HwScsiWmiXxx yang sesuai dalam struktur SCSI_WMILIB_CONTEXT driver miniport. Jika driver miniport tidak menentukan titik masuk untuk rutinitas HwScsiWmiXxx opsional, driver port menangani permintaan.
Dalam kedua kasus, setelah ScsiPortWmiDispatchFunction kembali, driver miniport harus melakukan hal berikut untuk permintaan yang tidak tertunda:
- Atur DataTransferLength Srb-> ke nilai yang dikembalikan oleh ScsiPortWmiGetReturnSize
- Atur Srb->SrbStatus ke nilai yang dikembalikan oleh ScsiPortWmiGetReturnStatus
- Panggil ScsiPortNotification dengan RequestComplete dan sekali lagi dengan NextRequest
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | scsiwmi.h (termasuk Miniport.h, Scsi.h) |