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
将数据块的索引指定到SCSI_WMILIB_CONTEXT结构中传递给 ScsiPortWmiDispatchFunction的 GUID 列表中。
[in] InstanceIndex
如果在响应IRP_MN_QUERY_SINGLE_INSTANCE请求时调用 HwScsiWmiQueryDataBlock,InstanceIndex 指定要查询的实例。 如果在响应 IRP_MN_QUERY_ALL_DATA REQUEST 时调用 HwScsiWmiQueryDataBlock,InstanceIndex 为零。
[in] InstanceCount
如果在响应IRP_MN_QUERY_SINGLE_INSTANCE请求时调用 HwScsiWmiQueryDataBlock,InstanceCount 为 1。 如果在响应 IRP_MN_QUERY_ALL_DATA REQUEST 时调用了 HwScsiWmiQueryDataBlock,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 例程。
微型端口驱动程序将实例数据写入缓冲区。 对于未写入的请求,微型端口驱动程序在从 HwScsiWmiQueryDataBlock返回之前,使用适当的 SrbStatus 值调用 ScsiPortWmiPostProcess。 如果请求笔触,微型端口驱动程序会在请求完成时调用 ScsiPortWmiPostProcess。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | scsiwmi.h (包括 Scsiwmi.h) |