Функция ScsiPortWmiDispatchFunction (scsiwmi.h)
Подпрограмма ScsiPortWmiDispatchFunction — это подпрограмма диспетчеризации для драйверов мини-портов, поддерживающих WMI.
Синтаксис
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) |