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.
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) |