Функция 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 hwScsiWxxx . Обычно это значение указывает на структуру HW_DEVICE_EXTENSION.

[in] RequestContext

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

[in] DataPath

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

[in] BufferSize

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

[in] Buffer

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

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

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

Комментарии

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

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

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

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

Требования

   
Целевая платформа Рабочий стол
Заголовок scsiwmi.h (include Miniport.h, Scsi.h)

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

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess