ScsiPortWmiPostProcess 函数 (scsiwmi.h)

ScsiPortWmiPostProcess 例程更新 WMI SRB 的请求上下文。

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

语法

void ScsiPortWmiPostProcess(
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] UCHAR                    SrbStatus,
  [in] ULONG                    BufferUsed
);

参数

[in] RequestContext

指向此 SRB 的请求上下文的指针。

[in] SrbStatus

指定任何有效的 SRB 状态。 如果传递给微型端口驱动程序的输出缓冲区太小,无法包含来自请求的所有数据,微型端口驱动程序会将 SrbStatus 设置为 SRB_STATUS_DATA_OVERRUN。

[in] BufferUsed

如果 SrbStatus 指示成功,微型端口驱动程序会将 BufferUsed 设置为写入缓冲区的数据字节数。 如果 SrbStatus 为SRB_STATUS_DATA_OVERRUN,微型端口驱动程序会将 BufferUsed 设置为成功完成 SRB 所需的字节数。

返回值

备注

在 WMI SRB 请求已处理并准备好完成之后,微型端口驱动程序必须调用 ScsiPortWmiPostProcess

对于同步 SRB,在回调例程中调用 ScsiPortWmiPostProcess

对于挂起的 SRB,ScsiPortWmiPostProcess 在处理 SRB 之后和完成之前调用。

如果微型端口驱动程序将 SrbStatus 设置为 SRB_STATUS_DATA_OVERRUN并设置 BufferUsed,则分配的缓冲区等于或大于 BufferUsed 字节的连续相同 WMI SRB 应成功。 如果驱动程序为 BufferUsed 设置了在调用 ScsiPortWmiPostProcessSrbStatus 等于 SRB_STATUS_DATA_OVERRUN 时完成请求所需的确切值,则应实现此目的。 对于大小可变的输出结构,SRB 的输入数据缓冲区应具有足够的信息来确定确切的 BufferUsed 值。 如果输入数据缓冲区不包含足够的信息,则驱动程序不应在两次同一 SRB 中SRB_STATUS_DATA_OVERRUN失败。 相反,驱动程序应设置SRB_STATUS_DATA_OVERRUN,并首先请求输出缓冲区所需的最小大小,然后设置SRB_STATUS_SUCCESS并指示输出缓冲区内容中的失败。

要求

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

另请参阅

SCSIWMI_REQUEST_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus