Поделиться через


функция обратного вызова PSCSIWMI_FUNCTION_CONTROL (scsiwmi.h)

Для включения или отключения уведомления о событиях вызывается подпрограмма HwScsiWmiFunctionControl драйвера мини-порта. Он также вызывается для включения или отключения сбора данных для блоков данных, которые драйвер минипорта назначает как дорогостоящий для сбора. Эта подпрограмма является необязательной.

Примечание Модели драйверов портов SCSI и драйверов мини-портов SCSI могут быть изменены или недоступны в будущем. Вместо этого рекомендуется использовать модели драйверов Storport и драйверов для мини-портов Storport .
 

Синтаксис

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

Указывает на значение, содержащее значение перечислителя типа SCSIWMI_REQUEST_CONTEXT , переданное драйвером мини-порта в ScsiPortWmiDispatchFunction.

[in] GuidIndex

Указывает блок по индексу в списке идентификаторов GUID в структуре SCSI_WMILIB_CONTEXT, переданной драйвером мини-порта в ScsiPortWmiDispatchFunction.

[in] Function

Указывает ScsiWmiEventControl для включения или отключения события или ScsiWmiDataBlockControl для включения или отключения сбора данных для блока, который был зарегистрирован как дорогостоящий для сбора (то есть блока, для которого драйвер минипорта WMIREG_FLAG_EXPENSIVE в разделе Флаги структуры SCSIWMIGUIDREGINFO, используемой для регистрации блока).

[in] Enable

Указывает значение TRUE , чтобы включить сбор данных или события, или значение FALSE , чтобы отключить его.

Возвращаемое значение

HwScsiWmiFunctionControl возвращает SRB_STATUS_PENDING, если запрос находится в состоянии ожидания, или ненулевое значение состояния SRB, если запрос был завершен. Значение состояния SRB, возвращаемое этой подпрограммой, совпадает с значением, переданным в ScsiPortWmiPostProcess. Хотя тип данных возвращаемого значения — BOOLEAN, подпрограмма HwScsiWmiFunctionControl фактически возвращает значение состояния SRB.

Комментарии

Когда драйвер мини-порта получает SRB, в котором член Функции имеет значение SRB_FUNCTION_WMI, он вызывает ScsiPortWmiDispatchFunction с указателем на инициализированную структуру SCSI_WMILIB_CONTEXT, а minorFunctionSrb-WmiSubFunction>. Драйвер порта SCSI вызывает подпрограмму HwScsiWmiFunctionControl драйвера мини-порта, если MinorFunction указывает запрос на включение или отключение события, а также на включение или отключение сбора для блока данных, зарегистрированного драйвером минипорта как дорогостоящий для сбора.

Если драйвер мини-порта не реализует подпрограмму HwScsiWmiFunctionControl , он должен задать для WmiFunctionControlзначение NULL в SCSI_WMILIB_CONTEXT, который драйвер мини-порта передает ScsiPortWmiDispatchFunction. Драйвер порта возвращает SRB_STATUS_SUCCESS вызывающей объекту.

Драйверу мини-порта не нужно проверка, включены ли события или сбор данных для блока, так как драйвер порта отправляет один запрос на включение, когда первый потребитель данных включает блок, и отправляет один запрос на отключение, когда последний потребитель данных отключает блок. Драйвер порта не будет вызывать HwScsiWmiFunctionControl более одного раза, чтобы включить блок без промежуточного вызова для его отключения.

Если SRB выполняется в обратном вызове HwScsiWmiFunctionControl , драйвер мини-порта вызывает ScsiPortWmiPostProcess с соответствующим SrbStatus. Если драйвер мини-порта использует этот SRB, он должен вызвать ScsiPortWmiPostProcess после завершения SRB и перед завершением SRB.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть scsiwmi.h (включая Scsiwmi.h)

См. также раздел

SCSIWMIGUIDREGINFO

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess