Bagikan melalui


PSCSIWMI_QUERY_DATABLOCK fungsi panggilan balik (scsiwmi.h)

Rutinitas HwScsiWmiQueryDataBlock driver miniport dipanggil untuk mendapatkan satu instans atau semua instans blok data. Rutinitas ini diperlukan.

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_QUERY_DATABLOCK PscsiwmiQueryDatablock;

BOOLEAN PscsiwmiQueryDatablock(
  [in]      PVOID Context,
  [in]      PSCSIWMI_REQUEST_CONTEXT DispatchContext,
  [in]      ULONG GuidIndex,
  [in]      ULONG InstanceIndex,
  [in]      ULONG InstanceCount,
  [in, out] PULONG InstanceLengthArray,
  [in]      ULONG BufferAvail,
  [out]     PUCHAR Buffer
)
{...}

Parameter

[in] Context

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

[in] DispatchContext

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 HwScsiWmiQueryDataBlock dipanggil sebagai respons terhadap permintaan IRP_MN_QUERY_SINGLE_INSTANCE, InstanceIndex menentukan instans yang akan dikueri. Jika HwScsiWmiQueryDataBlock dipanggil sebagai respons terhadap PERMINTAAN IRP_MN_QUERY_ALL_DATA, InstanceIndex adalah nol.

[in] InstanceCount

Jika HwScsiWmiQueryDataBlock dipanggil sebagai respons terhadap permintaan IRP_MN_QUERY_SINGLE_INSTANCE, InstanceCount adalah 1. Jika HwScsiWmiQueryDataBlock dipanggil sebagai respons terhadap PERMINTAAN IRP_MN_QUERY_ALL_DATA, InstanceCount adalah jumlah instans yang akan dikembalikan.

[in, out] InstanceLengthArray

Menunjuk ke array ULONG yang menunjukkan panjang setiap instans blok data yang akan dikembalikan. Array ini memiliki elemen InstanceCount . Nilai ini mungkin NULL ketika tidak ada cukup ruang dalam buffer output untuk memenuhi permintaan.

[in] BufferAvail

Menentukan jumlah maksimum byte yang tersedia untuk menerima data dalam buffer di Buffer.

[out] Buffer

Menunjuk ke buffer untuk menerima data instans. Jika buffer cukup besar untuk menerima semua data, driver miniport menulis data instans ke buffer dengan setiap instans yang selaras pada batas 8 byte. Jika buffer terlalu kecil untuk menerima semua data, driver miniport memanggil ScsiPortWmiPostProcess dengan status SRB_STATUS_DATA_OVERRUN dan mengatur BufferUsed ke ukuran buffer output yang diperlukan untuk memenuhi permintaan.

Nilai kembali

HwScsiWmiQueryDataBlock 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 HwScsiWmiQueryDataBlock 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 HwScsiWmiQueryDataBlock driver miniport jika MinorFunction menunjukkan permintaan untuk mendapatkan satu instans atau semua instans blok data.

Driver miniport menulis data instans ke buffer. Untuk permintaan yang tidak tertunda, driver miniport memanggil ScsiPortWmiPostProcess dengan nilai SrbStatus yang sesuai sebelum kembali dari HwScsiWmiQueryDataBlock. Jika permintaan tertunda, driver miniport memanggil ScsiPortWmiPostProcess saat permintaan selesai.

Persyaratan

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

Lihat juga

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess