PSCSIWMI_QUERY_DATABLOCK回呼函式 (scsiwmi.h)

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

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

語法

C++
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

指向迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunctionSCSIWMI_REQUEST_CONTEXT 結構。

[in] GuidIndex

將數據區塊的索引指定為SCSI_WMILIB_CONTEXT結構中迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction的 GUID 清單。

[in] InstanceIndex

如果在回應IRP_MN_QUERY_SINGLE_INSTANCE要求時呼叫 HwScsiWmiQueryDataBlockInstanceIndex 指定要查詢的實例。 如果呼叫 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 位元組界限。 如果緩衝區太小而無法接收所有數據,迷你埠驅動程式會呼叫 ScsiPortWmiPostProcess 狀態為 SRB_STATUS_DATA_OVERRUN,並將 BufferUsed 設定為滿足要求所需的輸出緩衝區大小。

傳回值

HwScsiWmiQueryDataBlock 如果要求擱置或要求已完成,則傳回SRB_STATUS_PENDING非零 SRB 狀態值。 這個例程傳回的SRB狀態值與傳入 ScsiPortWmiPostProcess相同。 雖然傳回值數據類型是 BOOLEAN,但 HwScsiWmiQueryDataBlock 例程實際上會傳回 SRB 狀態值。

言論

當迷你埠驅動程式收到 SRB 時,函式 成員會設定為 SRB_FUNCTION_WMI,它會呼叫 ScsiPortWmiDispatchFunction,並將指標指向初始化的 SCSI_WMILIB_CONTEXT 結構,並將 MinorFunction 設為 Srb->WmiSubFunction。 如果 MinorFunction 表示取得單一實例或數據區塊所有實例的要求,SCSI 埠驅動程式會呼叫迷你埠驅動程式的 HwScsiWmiQueryDataBlock 例程。

迷你埠驅動程式會將實例數據寫入緩衝區。 對於未加上畫筆的要求,迷你埠驅動程式會先呼叫 ScsiPortWmiPostProcess,並具有適當的 SrbStatus 值,再從 HwScsiWmiQueryDataBlock傳回 。 如果要求畫筆,迷你埠驅動程式會在要求完成時呼叫 ScsiPortWmiPostProcess

要求

要求 價值
目標平臺 桌面
標頭 scsiwmi.h (包括 Scsiwmi.h)

另請參閱

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess