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


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

Подпрограмма HwScsiWmiSetDataBlock драйвера miniport вызывается для изменения всех элементов данных в одном экземпляре блока данных. Эта подпрограмма является необязательной.

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

Синтаксис

PSCSIWMI_SET_DATABLOCK PscsiwmiSetDatablock;

BOOLEAN PscsiwmiSetDatablock(
  [in] PVOID DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] ULONG GuidIndex,
  [in] ULONG InstanceIndex,
  [in] ULONG BufferSize,
  [in] PUCHAR Buffer
)
{...}

Параметры

[in] DeviceContext

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

[in] RequestContext

Указывает на структуру SCSIWMI_REQUEST_CONTEXT, переданную драйвером мини-порта в ScsiPortWmiDispatchFunction.

[in] GuidIndex

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

[in] InstanceIndex

Если блок, указанный в GuidIndex , содержит несколько экземпляров, InstanceIndex указывает экземпляр .

[in] BufferSize

Задает размер буфера в байтах в буфере.

[in] Buffer

Указывает на буфер, содержащий новые значения для экземпляра .

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

HwScsiWmiSetDataBlock возвращает SRB_STATUS_PENDING, если запрос находится в ожидании, или ненулевое значение состояния SRB, если запрос был выполнен. Значение состояния SRB, возвращаемое этой подпрограммой, совпадает со значением, переданным в ScsiPortWmiPostProcess.

Комментарии

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

Если драйвер мини-порта не реализует подпрограмму HwScsiWmiSetDataBlock , он должен задать для SetWmiDataBlockзначение NULL в SCSI_WMILIB_CONTEXT драйвер минипорта передает в ScsiPortWmiDispatchFunction. В этом случае драйвер порта возвращает вызывающей SRB_STATUS_ERROR.

Если драйвер мини-порта реализует HwScsiWmiSetDataBlock , он должен изменить экземпляр блока данных на новые значения из буфера.

Если все элементы в блоке данных доступны только для чтения, драйвер мини-порта должен вернуть SRB_STATUS_ERROR. В противном случае драйвер минипорта изменяет доступные элементы и возвращает SRB_STATUS_SUCCESS.

Драйвер мини-порта должен вызвать ScsiPortWmiPostProcess с соответствующим значением SrbStatus после завершения запроса. Если запрос не выполняется, необходимо вызвать ScsiPortWmiPostProcess в обратном вызове HwScsiWmiSetDataBlock . В противном случае при фактическом завершении запроса следует вызывать ScsiPortWmiPostProcess .

Требования

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

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

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess