ScsiPortWmiSetInstanceCount 函数 (scsiwmi.h)

ScsiPortWmiSetInstanceCount 指定必须在请求上下文中的WNODE_ALL_DATA结构中保留数据缓冲区的实例数。

注意 SCSI 端口驱动程序和 SCSI 微型端口驱动程序模型将来可能会更改或不可用。 相反,我们建议使用 Storport 驱动程序Storport 微型端口 驱动程序模型。
 

语法

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 参数中的 ScsiPortWmiSetDataScsiPortWmiSetInstanceName 例程。

ScsiPortWmiSetInstanceCount 例程初始化指向数据缓冲区的指针数组,每个实例都有一个数组元素。 如果 WNODE 中没有足够的可用内存来初始化 大小为 InstanceCount 的数组,则此成员中将返回零。

[out] SizeNeeded

指示在输入时,在 WNODE 中配置内部数组 之前 描述整个 WNODE 所需的字节数。 返回时,此成员将包含整个 WNODE 的大小,包括 WNODE 中新初始化的数组。

返回值

如果操作成功,则 ScsiPortWmiSetInstanceCount 例程返回 TRUE;如果请求上下文中包含的 WNODE 不是WNODE_ALL_DATA类型,则返回 FALSE

注解

微型驱动程序必须先调用 ScsiPortWmiSetInstanceCount, 然后才能调用 ScsiPortWmiSetDataScsiPortWmiSetInstanceName。 微型驱动程序应只调用 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 初始化此数组,以便可以使用实例索引单独访问实例数据的每个缓冲区。

在微型端口驱动程序调用 ScsiPortWmiPostProcessScsiPortWmiPostProcess 返回最终 SRB 状态和缓冲区大小之前,为请求上下文分配的内存必须保持有效。 如果 SRB 可以笔,则应从 SRB 扩展分配请求上下文的内存。 如果 SRB 无法绘制,则可以从不超出范围的堆栈帧分配内存。

要求

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

另请参阅

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE