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,在处理 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) |