ScsiPortWmiDispatchFunction 函数 (scsiwmi.h)

ScsiPortWmiDispatchFunction 例程是支持 WMI 的微型端口驱动程序的调度例程。

注意 SCSI 端口驱动程序和 SCSI 微型端口驱动程序模型将来可能会更改或不可用。 相反,我们建议使用 Storport 驱动程序Storport 微型端口 驱动程序模型。
 

语法

BOOLEAN ScsiPortWmiDispatchFunction(
  [in] PSCSI_WMILIB_CONTEXT     WmiLibInfo,
  [in] UCHAR                    MinorFunction,
  [in] PVOID                    DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] PVOID                    DataPath,
  [in] ULONG                    BufferSize,
  [in] PVOID                    Buffer
);

参数

[in] WmiLibInfo

指向 SCSI_WMILIB_CONTEXT 结构的指针,该结构包含微型端口驱动程序的数据块和事件块的注册信息,并定义微型端口驱动程序的 WMI 库回调例程的入口点。

[in] MinorFunction

指示要执行的 WMI 操作。 微型端口驱动程序从输入 SRB 将 MinorFunction 设置为 Srb-WmiSubFunction>

[in] DeviceContext

指向微型端口驱动程序定义的上下文值的指针。 端口驱动程序会将 DeviceContext 传递到微型端口驱动程序的 HwScsiWmiXxx 回调例程。 此值通常指向HW_DEVICE_EXTENSION结构。

[in] RequestContext

指向包含 WMI SRB 上下文信息的SCSIWMI_REQUEST_CONTEXT结构的指针。 如果 SRB 可以写入,微型端口驱动程序必须从 SRB 扩展分配此结构,因为请求上下文必须保持有效,直到 ScsiPortWmiPostProcess 返回最终 SRB 返回状态和缓冲区大小。 ScsiPortWmiDispatchFunction 会将 RequestContext 传递给处理此请求的微型端口驱动程序的回调例程。

[in] DataPath

指向 GUID 的指针,该 GUID 表示与请求关联的数据块。 微型端口驱动程序将 DataPath 从输入 SRB 设置为 Srb-DataPath>

[in] BufferSize

指定数据缓冲区的大小(以字节为单位)。 微型端口驱动程序将 BufferSize 从输入 SRB 设置为 Srb-DataTransferLength>

[in] Buffer

指向数据缓冲区的指针。 微型端口驱动程序从输入 SRB 将 Buffer 设置为 Srb-DataBuffer>

返回值

如果请求挂起,则 ScsiPortWmiDispatchFunction 返回 TRUE;如果请求已完成,则返回 FALSE

注解

当微型端口驱动程序收到 函数 成员设置为SRB_FUNCTION_WMI的 SRB 时,它会使用请求参数(包括指向初始化的SCSI_WMILIB_CONTEXT结构的指针)调用 ScsiPortWmiDispatchFunction 。 此结构包含有关微型端口驱动程序的数据块和事件块的信息,并定义微型端口驱动程序的 HwScsiWmiXxx 回调例程的入口点。

ScsiPortWmiDispatchFunction 确认 SRB 是 WMI 请求,并确定请求指定的块是否对微型端口驱动程序有效。 如果满足这些条件, ScsiPortWmiDispatchFunction 会通过调用微型端口驱动程序SCSI_WMILIB_CONTEXT结构中的相应 HwScsiWmiXxx 入口点来处理 SRB。 如果微型端口驱动程序未为可选的 HwScsiWmiXxx 例程定义入口点,则端口驱动程序将处理请求。

在任一情况下, 在 ScsiPortWmiDispatchFunction 返回后,微型端口驱动程序应针对它未写入的请求执行以下操作:

  • Srb->DataTransferLength 设置为 ScsiPortWmiGetReturnSize 返回的值
  • Srb->SrbStatus 设置为 ScsiPortWmiGetReturnStatus 返回的值
  • 使用 RequestComplete 调用 ScsiPortNotification,并使用 NextRequest 再次调用

要求

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

另请参阅

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess