PSCSIWMI_QUERY_DATABLOCK回呼函式 (scsiwmi.h)
系統會呼叫迷你埠驅動程式的 HwScsiWmiQueryDataBlock 例程,以取得單一實例或數據區塊的所有實例。 需要此例程。
語法
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
)
{...}
參數
[in] Context
指向傳遞至 ScsiPortWmiDispatchFunction 的迷你埠驅動程式定義內容值。
[in] DispatchContext
指向迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 的SCSIWMI_REQUEST_CONTEXT結構。
[in] GuidIndex
將數據區塊的索引指定至迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 之 SCSI_WMILIB_CONTEXT 結構中的 GUID 清單。
[in] InstanceIndex
如果 呼叫 HwScsiWmiQueryDataBlock 以回應IRP_MN_QUERY_SINGLE_INSTANCE要求, InstanceIndex 會指定要查詢的實例。 如果 呼叫 HwScsiWmiQueryDataBlock 以回應IRP_MN_QUERY_ALL_DATA REQUEST,InstanceIndex 為零。
[in] InstanceCount
如果 呼叫 HwScsiWmiQueryDataBlock 以回應IRP_MN_QUERY_SINGLE_INSTANCE要求, InstanceCount 為 1。 如果 呼叫 HwScsiWmiQueryDataBlock 以回應IRP_MN_QUERY_ALL_DATA REQUEST,InstanceCount 就是要傳回的實例數目。
[in, out] InstanceLengthArray
指向ULONG的陣列,指出要傳回之數據區塊之每個實例的長度。 此陣列具有 InstanceCount 元素。 當輸出緩衝區中沒有足夠的空間滿足要求時,此值可能是 NULL 。
[in] BufferAvail
指定緩衝區中可接收緩衝區中數據的最大位元元組數目。
[out] Buffer
指向要接收實例數據的緩衝區。 如果緩衝區夠大,無法接收所有數據,迷你埠驅動程式會將實例數據寫入緩衝區,且每個實例都對齊 8 位元組界限。 如果緩衝區太小而無法接收所有數據,迷你埠驅動程式會呼叫狀態為 SRB_STATUS_DATA_OVERRUN 的 ScsiPortWmiPostProcess ,並將 BufferUsed 設定為滿足要求所需的輸出緩衝區大小。
傳回值
HwScsiWmiQueryDataBlock 會傳回SRB_STATUS_PENDING如果要求擱置,如果要求已完成,則傳回非零 SRB 狀態值。 此例程傳回的SRB狀態值與傳入 ScsiPortWmiPostProcess的內容相同。 雖然傳回值數據類型是 BOOLEAN,但 HwScsiWmiQueryDataBlock 例程實際上會傳回 SRB 狀態值。
備註
當迷你埠驅動程式收到 SRB 時,函式成員設定為 SRB_FUNCTION_WMI,它會使用初始化SCSI_WMILIB_CONTEXT結構的指標呼叫 ScsiPortWmiDispatchFunction,並將 MinorFunction 設定為 Srb-WmiSubFunction>。 如果 MinorFunction 指出取得單一實例或所有數據區塊實例的要求,SCSI 埠驅動程式會呼叫 miniport 驅動程式的 HwScsiWmiQueryDataBlock 例程。
迷你埠驅動程式會將實例數據寫入緩衝區。 對於未畫筆的要求,迷你埠驅動程式會先使用適當的 SrbStatus 值呼叫 ScsiPortWmiPostProcess,再從 HwScsiWmiQueryDataBlock 傳回。 如果要求畫筆,迷你埠驅動程式會在要求完成時呼叫 ScsiPortWmiPostProcess 。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | scsiwmi.h (包含 Scsiwmi.h) |