ScsiPortWmiSetInstanceCount 函数 (scsiwmi.h)
ScsiPortWmiSetInstanceCount 指定必须在请求上下文中的WNODE_ALL_DATA结构中保留数据缓冲区的实例数。
语法
BOOLEAN ScsiPortWmiSetInstanceCount(
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG InstanceCount,
[out] PULONG BufferAvail,
[out] PULONG SizeNeeded
);
参数
[in] RequestContext
指向 类型为 SCSIWMI_REQUEST_CONTEXT 结构的指针,该结构包含 WMI SRB 的请求上下文。
[in] InstanceCount
包含微型驱动程序将为其提供数据的实例数。
[out] BufferAvail
返回时,包含可用于描述实例名称和数据的缓冲区空间的字节数。 此成员中返回的值可以传递到这些例程的 BufferAvail 参数中的 ScsiPortWmiSetData 和 ScsiPortWmiSetInstanceName 例程。
ScsiPortWmiSetInstanceCount 例程初始化指向数据缓冲区的指针数组,每个实例都有一个数组元素。 如果 WNODE 中没有足够的可用内存来初始化 大小为 InstanceCount 的数组,则此成员中将返回零。
[out] SizeNeeded
指示在输入时,在 WNODE 中配置内部数组 之前 描述整个 WNODE 所需的字节数。 返回时,此成员将包含整个 WNODE 的大小,包括 WNODE 中新初始化的数组。
返回值
如果操作成功,则 ScsiPortWmiSetInstanceCount 例程返回 TRUE;如果请求上下文中包含的 WNODE 不是WNODE_ALL_DATA类型,则返回 FALSE。
注解
微型驱动程序必须先调用 ScsiPortWmiSetInstanceCount, 然后才能调用 ScsiPortWmiSetData 或 ScsiPortWmiSetInstanceName。 微型驱动程序应只调用 ScsiPortWmiSetInstanceCount 一次。
参数 RequestContext 指向请求上下文结构 (SCSIWMI_REQUEST_CONTEXT),该结构包含与 Windows Management Instrumentation (WMI) SCSI 请求块 (SRB) 关联的信息。 请求上下文结构又包含 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) |