ScsiPortWmiSetInstanceCount 指定在请求上下文中的 WNODE_ALL_DATA 结构中必须保留数据缓冲区的实例数。
语法
BOOLEAN ScsiPortWmiSetInstanceCount(
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG InstanceCount,
[out] PULONG BufferAvail,
[out] PULONG SizeNeeded
);
参数
[in] RequestContext
指向包含 WMI SRB 请求上下文的 SCSIWMI_REQUEST_CONTEXT 类型的结构的指针。
[in] InstanceCount
包含微型驱动程序将提供数据的实例数。
[out] BufferAvail
包含可用于描述实例名称和数据的缓冲区空间的字节数。 此成员中返回的值可以传递给这些例程的 BufferAvail 参数中的 ScsiPortWmiSetData 和 ScsiPortWmiSetInstanceName 例程 例程。
ScsiPortWmiSetInstanceCount 例程初始化指向数据缓冲区的指针数组,每个实例都有一个数组元素。 如果 WNODE 中没有足够的内存来初始化 InstanceCount的大小数组,则此成员中将返回零。
[out] SizeNeeded
指示在输入时描述整个 WNODE 所需的字节数,然后 在 WNODE 中配置内部数组。 返回时,此成员将包含整个 WNODE 的大小,包括 WNODE 中新初始化的数组。
返回值
ScsiPortWmiSetInstanceCount 例程返回 TRUE 如果作成功,如果请求上下文中包含的 WNODE 不是类型 WNODE_ALL_DATA,FALSE。
言论
minidriver 必须先调用 ScsiPortWmiSetInstanceCount,然后才能调用 ScsiPortWmiSetData 或 ScsiPortWmiSetInstanceName。 微型驱动程序应只调用一次 ScsiPortWmiSetInstanceCount 。
参数 RequestContext 指向包含与 Windows Management Instrumentation(WMI) SCSI 请求块(SRB)关联的信息的请求上下文结构 SCSIWMI_REQUEST_CONTEXT。 请求上下文结构又包含 WMI 系统用来在用户模式数据使用者和内核模式数据提供程序(如驱动程序)之间传递数据 WMI WNODE_XXX结构之一。
ScsiPortWmiSetInstanceCount 例程要求在请求上下文中定义的 WNODE 结构 WNODE_ALL_DATA类型。 这是因为 ScsiPortWmiSetInstanceCount 将保留与 WMI 数据块关联的多个实例的信息的数据区域。 与包含单个实例信息的 WNODE_SINGLE_INSTANCE 结构不同,WNODE_ALL_DATA结构包含指向不同实例缓冲区区域的指针数组,ScsiPortWmiSetInstanceCount 初始化此数组,以便可以使用实例索引单独访问实例数据的每个缓冲区。
为请求上下文分配的内存必须一直有效,直到微型端口驱动程序调用 ScsiPortWmiPostProcess之后,ScsiPortWmiPostProcess 返回最终 SRB 状态和缓冲区大小。 如果 SRB 可以写入,则应从 SRB 扩展分配请求上下文的内存。 如果 SRB 无法写入,则可以从不超出范围的堆栈帧分配内存。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 桌面 |
| 标头 | scsiwmi.h (包括 Miniport.h、Scsi.h) |