ScsiPortWmiPostProcess 函数 (scsiwmi.h)
ScsiPortWmiPostProcess 例程更新 WMI SRB 的请求上下文。
语法
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 设置了在调用 ScsiPortWmiPostProcess 且 SrbStatus 等于 SRB_STATUS_DATA_OVERRUN 时完成请求所需的确切值,则应实现此目的。 对于大小可变的输出结构,SRB 的输入数据缓冲区应具有足够的信息来确定确切的 BufferUsed 值。 如果输入数据缓冲区不包含足够的信息,则驱动程序不应在两次同一 SRB 中SRB_STATUS_DATA_OVERRUN失败。 相反,驱动程序应设置SRB_STATUS_DATA_OVERRUN,并首先请求输出缓冲区所需的最小大小,然后设置SRB_STATUS_SUCCESS并指示输出缓冲区内容中的失败。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | scsiwmi.h (包括 Miniport.h、Scsi.h) |