Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se llama a una rutina de HwStorAdapter Control de un controlador de miniporte para controlar el estado o el comportamiento de un adaptador, como detener o reiniciar el adaptador de bus host (HBA) para la administración de energía.
Sintaxis
HW_ADAPTER_CONTROL HwAdapterControl;
SCSI_ADAPTER_CONTROL_STATUS HwAdapterControl(
[in] PVOID DeviceExtension,
[in] SCSI_ADAPTER_CONTROL_TYPE ControlType,
[in] PVOID Parameters
)
{...}
Parámetros
[in] DeviceExtension
Puntero al área de almacenamiento del controlador de miniporte por HBA.
[in] ControlType
Valor SCSI_ADAPTER_CONTROL_TYPE que especifica una operación de control de adaptador, donde cada tipo de control inicia una acción por el controlador de miniport. Consulte SCSI_ADAPTER_CONTROL_TYPE para obtener más información.
[in] Parameters
Puntero a una estructura o valor que contiene información relacionada con la ControlType, o NULL si el tipo de control no usa una estructura. Todas las estructuras están asignadas por el autor de la llamada. Consulte SCSI_ADAPTER_CONTROL_TYPE para obtener más información.
Valor devuelto
Según el tipo de control, HwStorAdapterControl devuelve uno de los siguientes valores de SCSI_ADAPTER_CONTROL_STATUS:
| Código devuelto | Descripción |
|---|---|
| ScsiAdapterControlSuccess | El controlador de miniporte completó correctamente la operación solicitada. Actualmente, HwStorAdapterControl debe devolver este valor para todos los tipos de control. |
| ScsiAdapterControlUnsuccessful | La operación de control del adaptador no se realizó correctamente. |
Observaciones
HwStorAdapterControl es una función necesaria.
Storport llama al HwStorAdapter Control de un miniporte con un ScsiQuerySupportedControlTypes tipo de control después de inicializar el HBA, pero antes de la primera E/S. El controlador de miniporta rellena la estructura de SCSI_SUPPORTED_CONTROL_TYPE_LIST en Parámetros con las operaciones que admite. Después de HwStorAdapterControl vuelve de esta llamada, el controlador de Storport llama al controlador de miniporte HwStorAdapterControl devolución de llamada solo para las operaciones admitidas por la miniport.
Dado que los controladores de miniport que funcionan con el controlador storport deben admitir Plug and Play (PnP), los miniportes deben admitir los tipos de control ScsiStopAdapt er y ScsiRestartAdapter.
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 | Ninguno |
| ScsiStopAdapter | DIRQL | InterruptLock |
| ScsiRestartAdapter | DIRQL | InterruptLock |
| ScsiSetBootConfig | PASSIVE_LEVEL | Ninguno |
| ScsiSetRunningConfig | PASSIVE_LEVEL | Ninguno |
| ScsiPowerSettingNotification | PASSIVE_LEVEL | Ninguno |
| ScsiAdapterPower | <= DISPATCH_LEVEL | Ninguno |
| ScsiAdapterPoFxPowerRequired | <= DISPATCH_LEVEL | Ninguno |
| ScsiAdapterPoFxPowerActive | <= DISPATCH_LEVEL | Ninguno |
| ScsiAdapterPoFxPowerSetFState | <= DISPATCH_LEVEL | Ninguno |
| ScsiAdapterPoFxPowerControl | <= DISPATCH_LEVEL | Ninguno |
| ScsiAdapterPrepareForBusReScan | PASSIVE_LEVEL | Ninguno |
| ScsiAdapterSystemPowerHints | PASSIVE_LEVEL | Ninguno |
| ScsiAdapterFilterResourceResourceRequirements | < DISPATCH_LEVEL | Ninguno |
| ScsiAdapterPoFxMaxOperationalPower | PASSIVE_LEVEL | Ninguno |
| ScsiAdapterPoFxSetPerfState | <= DISPATCH_LEVEL | Ninguno |
| ScsiAdapterSurpriseRemoval | < DISPATCH_LEVEL | Ninguno |
| ScsiAdapterSerialNumber | < DISPATCH_LEVEL | Ninguno |
| ScsiAdapterCryptoOperation | PASSIVE_LEVEL | Ninguno |
| ScsiAdapterQueryFruId | PASSIVE_LEVEL | Ninguno |
| ScsiAdapterSetEventLogging | PASSIVE_LEVEL | Ninguno |
El nombre HwStorAdapterControl es simplemente un marcador de posición. El prototipo real de esta rutina se define en storport.h de la siguiente manera:
typedef
SCSI_ADAPTER_CONTROL_STATUS
HW_ADAPTER_CONTROL (
_In_ PVOID DeviceExtension,
_In_ SCSI_ADAPTER_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
Ejemplos
Para definir un HwStorAdapterControl función de devolución de llamada, primero debe proporcionar una declaración de función que identifique el tipo de función de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.
Por ejemplo, para definir un HwStorAdapterControl rutina de devolución de llamada denominada MyHwAdapterControl, use el tipo HW_ADAPTER_CONTROL tal como se muestra en este ejemplo de código:
HW_ADAPTER_CONTROL MyHwAdapterControl;
A continuación, implemente la rutina de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
SCSI_ADAPTER_CONTROL_STATUS
MyHwAdapterControl (
_In_ PVOID DeviceExtension,
_In_ SCSI_ADAPTER_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
{
...
}
El tipo de función HW_ADAPTER_CONTROL se define en el archivo de encabezado de Storport.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función HW_ADAPTER_CONTROL en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante tipos de rol de función para controladores de Storport. Para obtener información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.
Requisitos
| Requisito | Valor |
|---|---|
| cliente mínimo admitido | Windows 8 |
| de la plataforma de destino de | Universal |
| encabezado de | storport.h (incluya Storport.h) |
| irQL | Vea comentarios. |