PSCSIWMI_EXECUTE_METHOD fungsi panggilan balik (scsiwmi.h)

Rutinitas HwScsiWmiExecuteMethod driver miniport dipanggil untuk menjalankan metode yang terkait dengan blok data. Rutinitas ini bersifat opsional.

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

PSCSIWMI_EXECUTE_METHOD PscsiwmiExecuteMethod;

BOOLEAN PscsiwmiExecuteMethod(
  [in]      PVOID DeviceContext,
  [in]      PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]      ULONG GuidIndex,
  [in]      ULONG InstanceIndex,
  [in]      ULONG MethodId,
  [in]      ULONG InBufferSize,
  [in]      ULONG OutBufferSize,
  [in, out] PUCHAR Buffer
)
{...}

Parameter

[in] DeviceContext

Menunjuk ke nilai konteks miniport yang ditentukan driver yang diteruskan ke ScsiPortWmiDispatchFunction.

[in] RequestContext

Menunjuk ke struktur SCSIWMI_REQUEST_CONTEXT yang diteruskan driver miniport ke ScsiPortWmiDispatchFunction.

[in] GuidIndex

Menentukan blok data menurut indeksnya ke dalam daftar GUID dalam struktur SCSI_WMILIB_CONTEXT yang diteruskan driver miniport ke ScsiPortWmiDispatchFunction.

[in] InstanceIndex

Jika blok yang ditentukan oleh GuidIndex memiliki beberapa instans, InstanceIndex menentukan instans.

[in] MethodId

Menentukan ID metode yang akan dijalankan. Driver miniport mendefinisikan ID metode sebagai item dalam blok data.

[in] InBufferSize

Menunjukkan ukuran dalam byte data input. Jika tidak ada data input, InBufferSize adalah nol.

[in] OutBufferSize

Menunjukkan jumlah byte yang tersedia di buffer untuk data output.

[in, out] Buffer

Menunjuk ke buffer yang menyimpan data input dan menerima data output, jika ada, dari metode . Jika buffer terlalu kecil untuk menerima semua output, driver miniport memanggil ScsiPortWmiPostProcess dengan SRB_STATUS_DATA_OVERRUN dan ukuran yang diperlukan.

Nilai kembali

HwScsiWmiExecuteMethod mengembalikan SRB_STATUS_PENDING jika permintaan tertunda, atau nilai status SRB bukan nol jika permintaan selesai. Nilai status SRB yang dikembalikan oleh rutinitas ini sama dengan apa yang diteruskan ke ScsiPortWmiPostProcess. Meskipun jenis data nilai yang dikembalikan adalah BOOLEAN, rutinitas HwScsiWmiExecuteMethod benar-benar mengembalikan nilai status SRB.

Keterangan

Ketika driver miniport menerima SRB di mana anggota Fungsi diatur ke SRB_FUNCTION_WMI, ia memanggil ScsiPortWmiDispatchFunction dengan pointer ke struktur SCSI_WMILIB_CONTEXT yang diinisialisasi dan MinorFunction diatur ke Srb-WmiSubFunction>. Driver port SCSI memanggil rutinitas HwScsiWmiExecuteMethod driver miniport jika MinorFunction menunjukkan permintaan untuk menjalankan metode.

Jika driver miniport tidak mengimplementasikan rutinitas HwScsiWmiExecuteMethod , driver miniport harus mengatur ExecuteWmiMethod ke NULL di SCSI_WMILIB_CONTEXT driver miniport lolos ke ScsiPortWmiDispatchFunction. Dalam hal ini, driver port mengembalikan SRB_STATUS_ERROR ke pemanggil.

Jika metode menghasilkan output, driver miniport harus memeriksa ukuran buffer output di OutBufferSize sebelum melakukan operasi apa pun yang mungkin memiliki efek samping atau yang tidak boleh dilakukan dua kali. Misalnya, jika metode mengembalikan nilai sekelompok penghitung dan kemudian mengatur ulang penghitung, driver miniport harus memeriksa ukuran buffer sebelum mengatur ulang penghitung. Ini memastikan bahwa driver port dapat mengirim ulang permintaan dengan aman dengan buffer yang lebih besar. Jika buffer terlalu kecil, driver miniport harus memanggil ScsiPortWmiPostProcess dengan SRB_STATUS_DATA_OVERRUN dan ukuran buffer output yang diperlukan untuk memenuhi permintaan.

Driver miniport menjalankan metode dan menulis output, jika ada, ke buffer. Sebelum kembali dari HwScsiWmiExecuteMethod, driver miniport memanggil ScsiPortWmiPostProcess dengan nilai SrbStatus yang sesuai dan jumlah byte yang digunakan dalam buffer output.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header scsiwmi.h (termasuk Scsiwmi.h)

Lihat juga

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess