Compartir a través de


HW_UNIT_CONTROL función de devolución de llamada (storport.h)

Se llama a la rutina HwStorUnitControl de un controlador de miniporte para realizar operaciones sincrónicas para controlar el estado del dispositivo de unidad de almacenamiento.

Sintaxis

HW_UNIT_CONTROL HwUnitControl;

SCSI_UNIT_CONTROL_STATUS HwUnitControl(
  [in] PVOID DeviceExtension,
  [in] SCSI_UNIT_CONTROL_TYPE ControlType,
  [in] PVOID Parameters
)
{...}

Parámetros

[in] DeviceExtension

Puntero al área de almacenamiento por unidad del controlador de minipuerto.

[in] ControlType

Valor de SCSI_UNIT_CONTROL_TYPE que especifica una operación de control de unidad, donde cada tipo de control inicia una acción mediante el controlador de minipuerto. Consulte SCSI_UNIT_CONTROL_TYPE para obtener más información.

[in] Parameters

Puntero a una estructura o valor que contiene información relacionada con controlType. Todas las estructuras están asignadas por el autor de la llamada. Consulte SCSI_UNIT_CONTROL_TYPE para obtener más información.

Dirección

Dirección de la unidad para la que se especifica la operación de control.

Valor devuelto

Según el tipo de control, HwStorUnitControl devuelve uno de los siguientes valores de SCSI_UNIT_CONTROL_STATUS :

Código devuelto Descripción
ScsiUnitControlSuccess El controlador de minipuerto completó correctamente la operación solicitada.
ScsiUnitControlUnsuccessful La operación de control de unidad no se realizó correctamente.

Comentarios

Storport llama al HwStorUnitControl de un miniporte con un tipo de control ScsiQuerySupportedControlTypes después de inicializar el HBA, pero antes de la primera E/S. El controlador de minipuerto rellena la estructura SCSI_SUPPORTED_CONTROL_TYPE_LIST en Parámetros con las operaciones que admite. Después de que HwStorUnitControl vuelva de esta llamada, el controlador storport llama a la devolución de llamada HwStorAdapterControl del controlador de miniport solo para las operaciones compatibles con la minipuerta.

Storport llama a HwStorUnitControl para notificar al controlador de minipuerto un cambio en el dispositivo de unidad identificado por Address, o que el miniporte debe realizar una consulta o establecer una operación en esa unidad, como iniciar una unidad o controlar una operación de control de energía para una unidad.

En la tabla siguiente se enumeran los IRQL actuales y el bloqueo por subproceso adquirido cuando se emite el tipo de control.

Tipo de control IRQL Bloqueo de número
ScsiQuerySupportedControlTypes PASSIVE_LEVEL None
ScsiUnitUsage PASSIVE_LEVEL None
ScsiUnitStart PASSIVE_LEVEL None
ScsiUnitPower DISPATCH_LEVEL None
ScsiUnitPoFxPowerInfo PASSIVE_LEVEL None
ScsiUnitPoFxPowerRequired DISPATCH_LEVEL None
ScsiUnitPoFxPowerActive DISPATCH_LEVEL None
ScsiUnitPoFxPowerSetFState DISPATCH_LEVEL None
ScsiUnitPoFxPowerControl DISPATCH_LEVEL None
ScsiUnitRemove PASSIVE_LEVEL None
ScsiUnitSurpriseRemoval PASSIVE_LEVEL None
ScsiUnitRichDescription PASSIVE_LEVEL None
ScsiUnitQueryBusType PASSIVE_LEVEL None
ScsiUnitQueryFruId PASSIVE_LEVEL None

El nombre HwStorUnitControl es simplemente un marcador de posición. El prototipo real de esta rutina se define en storport.h de la siguiente manera:

typedef
SCSI_UNIT_CONTROL_STATUS
HW_UNIT_CONTROL (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_UNIT_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Plataforma de destino Universal
Encabezado storport.h (incluya Storport.h)
IRQL Vea la sección Comentarios.

Consulte también

HwStorAdapterControl

SCSI_SUPPORTED_CONTROL_TYPE_LIST

SCSI_UNIT_CONTROL_TYPE