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

指向包含 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_DATAFALSE

言论

minidriver 必须先调用 ScsiPortWmiSetInstanceCount,然后才能调用 ScsiPortWmiSetDataScsiPortWmiSetInstanceName。 微型驱动程序应只调用一次 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)

另请参阅

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE