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,在处理 SRB 之后,ScsiPortWmiPostProcess,并在完成 SRB 之前调用。

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

要求

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

另请参阅

SCSIWMI_REQUEST_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus