使用 SCSI 端口 WMI 库
充当 WMI 提供程序的存储微型端口驱动程序可以使用 SCSI 端口 WMI 库来简化处理包含 WMI 命令 (SRB) SCSI 请求块的任务。 微型端口驱动程序的启动 I/O 例程 HwScsiStartIo 将 WMI SRB 中的相关信息传递给 SCSI 端口 WMI 库,以便通过调用 ScsiPortWmiDispatchFunction 库的调度例程进行处理。 微型端口驱动程序会将以下数据传递给调度例程:
在 WmiLibInfo 参数中: 一个SCSI_WMILIB_CONTEXT 结构,其中包含指向微型端口驱动程序的回调例程的指针。
在 WMISubFunction 参数中:SRB 的 WMISubFunction 成员中的值。
在 DeviceContext 参数中:指向设备扩展的指针。
在 RequestContext 参数中:SCSI 端口 WMI 库用于记录信息 ( 如返回的数据的状态和大小)SCSIWMI_REQUEST_CONTEXT类型的请求上下文结构。
在 DataPath 参数中:SRB 的 DataPath 成员中的值。
在 BufferSize 参数中:SRB 的 DataTransferLength 成员中的值。
在 Buffer 参数中:SRB 的 DataBuffer 成员中的值。
初始化微型端口驱动程序时,它必须使用指向所需微型端口驱动程序回调例程的指针填充 SCSI_WMILIB_CONTEXT 结构,然后将该结构存储在特定于微型端口驱动程序的存储区域(如驱动程序扩展)中。 每个微型端口驱动程序回调例程对应于一个次要 IRP 编号,如 端口驱动程序如何处理 WMI 请求中所述。 有关如何设计微型端口驱动程序回调例程的信息,请参阅 设计 WMI 微型端口驱动程序回调例程
SCSI_WMILIB_CONTEXT 结构的 GuidList 成员必须指向 类型为 SCSIWMIGUIDREGINFO 的元素数组,这些元素包含有关 GUID 的信息,这些 GUID 唯一标识 MOF 文件中定义的受支持 WMI 类。 以下代码片段演示了此类元素数组的定义:
SCSIWMIGUIDREGINFO GuidList[] =
{
{
&HBAStatisticsGUID, // Guid
3, // number of instances of this class
0 // flags
},
{
&HBAAttributesGUID, // guid
1, // number of instances of this class
0 // flags
}
};
数组包含有关两个 WMI 类的 GUID 的信息: HBAStatistics 和 HBAAttributes。 GUID 的符号常量取自头文件,该文件是通过编译 MOF 文件生成的,该文件使用 WMI 工具套件 (mofcomp 和 wmimofck 工具) 定义两个类。 有关如何使用这些工具的详细信息,请参阅编译驱动程序的 MOF 文件和使用wmimofck.exe。
WMI 工具套件通过将“GUID”的后缀连接到 WMI 类的名称,为 GUID 生成符号常量的名称。 例如,对于 HBAStatistics 类, 该工具将创建一个名为 HBAStatisticsGUID 的 符号常量,该常量表示该类的 GUID。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈