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


Функция ScsiPortWmiDispatchFunction (scsiwmi.h)

Подпрограмма ScsiPortWmiDispatchFunction — это подпрограмма диспетчеризации для драйверов мини-портов, поддерживающих WMI.

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

Синтаксис

BOOLEAN ScsiPortWmiDispatchFunction(
  [in] PSCSI_WMILIB_CONTEXT     WmiLibInfo,
  [in] UCHAR                    MinorFunction,
  [in] PVOID                    DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] PVOID                    DataPath,
  [in] ULONG                    BufferSize,
  [in] PVOID                    Buffer
);

Параметры

[in] WmiLibInfo

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

[in] MinorFunction

Указывает действие WMI, которое необходимо выполнить. Драйвер мини-порта устанавливает для Параметра MinorFunction значение Srb-WmiSubFunction> из входного SRB.

[in] DeviceContext

Указатель на значение контекста, определяемое драйвером мини-порта. Драйвер порта передаст DeviceContext в подпрограмму обратного вызова HwScsiWmiXxxx драйвера мини-порта. Обычно это значение указывает на структуру HW_DEVICE_EXTENSION.

[in] RequestContext

Указатель на структуру SCSIWMI_REQUEST_CONTEXT, содержащую сведения о контексте для WMI SRB. Если SRB может выполняться, драйвер мини-порта должен выделить эту структуру из расширения SRB, так как контекст запроса должен оставаться действительным до тех пор, пока ScsiPortWmiPostProcess не вернет с окончательным состоянием возврата SRB и размером буфера. ScsiPortWmiDispatchFunction передает RequestContext в процедуру обратного вызова драйвера miniport, которая обрабатывает этот запрос.

[in] DataPath

Указатель на GUID, представляющий блок данных, связанный с запросом. Драйвер мини-порта устанавливает для DataPath значение Srb-DataPath> из входного SRB.

[in] BufferSize

Задает размер буфера данных в байтах. Драйвер мини-порта устанавливает для BufferSize значение Srb-DataTransferLength> из входного SRB.

[in] Buffer

Указатель на буфер данных. Драйвер мини-порта устанавливает для buffer значение Srb-DataBuffer> из входного SRB.

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

ScsiPortWmiDispatchFunction возвращает значение TRUE , если запрос находится в ожидании, или FALSE , если запрос был завершен.

Комментарии

Когда драйвер мини-порта получает SRB, в котором член функции имеет значение SRB_FUNCTION_WMI, он вызывает ScsiPortWmiDispatchFunction с параметрами запроса, включая указатель на инициализированную структуру SCSI_WMILIB_CONTEXT. Эта структура содержит сведения о блоках данных и блоках событий драйвера минипорта, а также определяет точки входа для процедур обратного вызова HwScsiWmiXxxx .

ScsiPortWmiDispatchFunction подтверждает, что SRB является запросом WMI, и определяет, действителен ли блок, указанный в запросе, для драйвера мини-порта. При соблюдении этих условий ScsiPortWmiDispatchFunction обрабатывает SRB, вызывая соответствующую точку входа HwScsiWmiXxx в SCSI_WMILIB_CONTEXT структуре драйвера минипорта. Если драйвер мини-порта не определяет точку входа для необязательной подпрограммы HwScsiWmiXxx , драйвер порта обрабатывает запрос.

В любом случае после возврата ScsiPortWmiDispatchFunction драйвер мини-порта должен выполнить следующие действия для запросов, которые он не выполняет:

  • Задайте для Srb->DataTransferLength значение, возвращаемое ScsiPortWmiGetReturnSize.
  • Задайте для Srb->SrbStatus значение, возвращаемое ScsiPortWmiGetReturnStatus.
  • Вызовите ScsiPortNotification с помощью RequestComplete и еще раз с помощью NextRequest

Требования

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

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

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess