PSCSIWMI_QUERY_DATABLOCK回呼函式 (scsiwmi.h)

系統會呼叫迷你埠驅動程式的 HwScsiWmiQueryDataBlock 例程,以取得單一實例或數據區塊的所有實例。 需要此例程。

注意 未來可能會變更或無法使用 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。
 

語法

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)

另請參閱

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess