PSCSIWMI_FUNCTION_CONTROL回调函数 (scsiwmi.h)
将调用微型端口驱动程序的 HwScsiWmiFunctionControl 例程来启用或禁用事件通知。 它还用于为微型端口驱动程序指定为成本高昂的数据块启用或禁用数据收集。 此例程是可选的。
语法
PSCSIWMI_FUNCTION_CONTROL PscsiwmiFunctionControl;
BOOLEAN PscsiwmiFunctionControl(
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG GuidIndex,
[in] SCSIWMI_ENABLE_DISABLE_CONTROL Function,
[in] BOOLEAN Enable
)
{...}
参数
[in] DeviceContext
指向传递给 ScsiPortWmiDispatchFunction 的微型端口驱动程序定义的上下文值。
[in] RequestContext
指向包含微型端口驱动程序传递给 ScsiPortWmiDispatchFunctionSCSIWMI_REQUEST_CONTEXT 类型的枚举器值的值。
[in] GuidIndex
通过索引将块指定为微型端口驱动程序传递到 ScsiPortWmiDispatchFunction 的 SCSI_WMILIB_CONTEXT 结构中的 GUID 列表。
[in] Function
指定 ScsiWmiEventControl 以启用或禁用事件,或 指定 ScsiWmiDataBlockControl 为注册为收集 (的块启用或禁用数据收集,即微型端口驱动程序在用于注册块) 的 SCSIWMIGUIDREGINFO 结构的 标志 中设置WMIREG_FLAG_EXPENSIVE的块。
[in] Enable
指定 TRUE 以启用事件或数据收集,或 指定 FALSE 以禁用它。
返回值
如果请求挂起,HwScsiWmiFunctionControl 将返回SRB_STATUS_PENDING;如果请求已完成,则返回非零 SRB 状态值。 此例程返回的 SRB 状态值与传递到 ScsiPortWmiPostProcess 的值相同。 尽管返回值数据类型为 BOOLEAN,但 HwScsiWmiFunctionControl 例程实际上返回 SRB 状态值。
注解
当微型端口驱动程序收到函数成员设置为 SRB_FUNCTION_WMI 的 SRB 时,它会调用 ScsiPortWmiDispatchFunction,其中包含指向初始化SCSI_WMILIB_CONTEXT结构的指针,将 MinorFunction 设置为 Srb-WmiSubFunction>。 如果 MinorFunction 指示要启用或禁用事件的请求,或者为微型端口驱动程序注册为成本高昂的数据块启用或禁用收集,则 SCSI 端口驱动程序会调用微型端口驱动程序的 HwScsiWmiFunctionControl 例程。
如果微型端口驱动程序未实现 HwScsiWmiFunctionControl 例程,则必须在微型端口驱动程序传递到 ScsiPortWmiDispatchFunction SCSI_WMILIB_CONTEXT将 WmiFunctionControl 设置为 NULL。 端口驱动程序将SRB_STATUS_SUCCESS返回给调用方。
微型端口驱动程序不需要检查是否已经为块启用了事件或数据收集,因为端口驱动程序会在第一个数据使用者启用块时发送单个启用请求,并在最后一个数据使用者禁用块时发送单个禁用请求。 端口驱动程序不会多次调用 HwScsiWmiFunctionControl 来启用块,而无需干预调用来禁用它。
如果在 HwScsiWmiFunctionControl 回调中完成 SRB,则微型端口驱动程序使用相应的 SrbStatus 调用 ScsiPortWmiPostProcess。 如果微型端口驱动程序在此 SRB 上,则在完成 SRB 时和完成 SRB 之前,它应调用 ScsiPortWmiPostProcess 。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | scsiwmi.h (包括 Scsiwmi.h) |