Fungsi ScsiPortWmiDispatchFunction (scsiwmi.h)

Rutinitas ScsiPortWmiDispatchFunction adalah rutinitas pengiriman untuk driver miniport yang mendukung WMI.

Catatan Driver port SCSI dan model driver miniport SCSI dapat diubah atau tidak tersedia di masa mendatang. Sebagai gantinya, sebaiknya gunakan driver Storport dan model driver miniport Storport .
 

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)

Lihat juga

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess