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请求, 则 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_FUNCTION_WMI的 SRB 时,它会调用 ScsiPortWmiDispatchFunction,其中包含指向初始化的 SCSI_WMILIB_CONTEXT 结构的指针,并将 MinorFunction 设置为 Srb-WmiSubFunction>。 如果 MinorFunction 指示请求获取数据块的单个实例或所有实例,则 SCSI 端口驱动程序会调用微型端口驱动程序的 HwScsiWmiQueryDataBlock 例程。

微型端口驱动程序将实例数据写入缓冲区。 对于不提交的请求,微型端口驱动程序在从 HwScsiWmiQueryDataBlock 返回之前使用适当的 SrbStatus 值调用 ScsiPortWmiPostProcess。 如果请求提交,微型端口驱动程序会在请求完成时调用 ScsiPortWmiPostProcess

要求

要求
目标平台 桌面
标头 scsiwmi.h (包括 Scsiwmi.h)

另请参阅

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess