Función ScsiPortWmiDispatchFunction (scsiwmi.h)

La rutina ScsiPortWmiDispatchFunction es una rutina de distribución para controladores de miniporte que admiten WMI.

Nota Los modelos de controlador de puerto SCSI y controlador de minipuerto SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar los modelos del controlador Storport y del controlador storport miniport .
 

Sintaxis

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
);

Parámetros

[in] WmiLibInfo

Puntero a una estructura de SCSI_WMILIB_CONTEXT que contiene información de registro para los bloques de datos y bloques de eventos de un controlador de minipuerto y define los puntos de entrada para las rutinas de devolución de llamada de la biblioteca WMI del controlador de minipuerto.

[in] MinorFunction

Indica la acción WMI que se va a realizar. El controlador de minipuerto establece MinorFunction en Srb-WmiSubFunction> de la SRB de entrada.

[in] DeviceContext

Puntero a un valor de contexto definido por el controlador de minipuerto. El controlador de puerto pasará DeviceContext a la rutina de devolución de llamada HwScsiWmiXxx del controlador de minipuerto. Este valor normalmente apuntaría a una estructura de HW_DEVICE_EXTENSION.

[in] RequestContext

Puntero a una estructura de SCSIWMI_REQUEST_CONTEXT que contiene información de contexto para la SRB de WMI. Si la SRB puede estar en lápiz, el controlador de minipuerto debe asignar esta estructura de la extensión SRB porque el contexto de solicitud debe permanecer válido hasta que Después de que ScsiPortWmiPostProcess vuelva con el estado final de devolución de SRB y el tamaño del búfer. ScsiPortWmiDispatchFunction pasará RequestContext a la rutina de devolución de llamada del controlador de miniport que procesa esta solicitud.

[in] DataPath

Puntero a un GUID que representa el bloque de datos asociado a la solicitud. El controlador de minipuerto establece DataPath en Srb-DataPath> desde la SRB de entrada.

[in] BufferSize

Especifica el tamaño en bytes del búfer de datos. El controlador de minipuerto establece BufferSize en Srb-DataTransferLength> desde la SRB de entrada.

[in] Buffer

Puntero al búfer de datos. El controlador de minipuerto establece Buffer en Srb-DataBuffer> desde la SRB de entrada.

Valor devuelto

ScsiPortWmiDispatchFunction devuelve TRUE si la solicitud está pendiente o FALSE si se completó la solicitud.

Comentarios

Cuando un controlador de minipuerto recibe una SRB en la que el miembro Function está establecido en SRB_FUNCTION_WMI, llama a ScsiPortWmiDispatchFunction con parámetros de solicitud, incluido un puntero a una estructura de SCSI_WMILIB_CONTEXT inicializada. Esta estructura contiene información sobre los bloques de datos y los bloques de eventos del controlador de miniporte y define los puntos de entrada para las rutinas de devolución de llamada HwScsiWmiXxx del controlador de miniporte.

ScsiPortWmiDispatchFunction confirma que la SRB es una solicitud WMI y determina si el bloque especificado por la solicitud es válido para el controlador de minipuerto. Si se cumplen estas condiciones, ScsiPortWmiDispatchFunction procesa la SRB llamando al punto de entrada HwScsiWmiXxx adecuado en la estructura de SCSI_WMILIB_CONTEXT del controlador de miniport. Si el controlador de minipuerto no define un punto de entrada para una rutina HwScsiWmiXxx opcional, el controlador de puerto controla la solicitud.

En cualquier caso, después de que se devuelva ScsiPortWmiDispatchFunction , el controlador de miniporte debe hacer lo siguiente para las solicitudes que no se han lápiz:

  • Establezca Srb->DataTransferLength en el valor devuelto por ScsiPortWmiGetReturnSize.
  • Establezca Srb->SrbStatus en el valor devuelto por ScsiPortWmiGetReturnStatus.
  • Llamar a ScsiPortNotification con RequestComplete y de nuevo con NextRequest

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado scsiwmi.h (incluye Miniport.h, Scsi.h)

Consulte también

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess