HW_RESET_BUS función de devolución de llamada (storport.h)
El controlador de puerto llama a la rutina HwStorResetBus para borrar las condiciones de error.
Sintaxis
HW_RESET_BUS HwResetBus;
BOOLEAN HwResetBus(
PVOID DeviceExtension,
ULONG PathId
)
{...}
Parámetros
DeviceExtension
Puntero al área de almacenamiento del controlador de miniporte por HBA.
PathId
Identifica el bus SCSI que se va a restablecer.
Valor devuelto
Si el bus se restablece correctamente, HwStorResetBus devuelve TRUE.
Observaciones
El nombre HwStorResetBus es simplemente un marcador de posición. El prototipo real de esta rutina se define en storport.h de la siguiente manera:
typedef
BOOLEAN
HW_RESET_BUS (
_In_ PVOID DeviceExtension,
_In ULONG PathId
);
El controlador de puerto pausa todas las colas de E/S del dispositivo para el adaptador y, a continuación, llama a la rutina de HwStorResetBus en IRQL DISPATCH_LEVEL después de adquirir el bloqueo de giro StartIo. Un controlador de miniporte es responsable de completar los SRB recibidos por HwStorStartIo para PathId durante esta rutina y establecer su estado en SRB_STATUS_BUS_RESET si es necesario.
Además del bloqueo de giro StartIo que se toma y posteriormente se libera después de HwStorResetBus devuelve, si el miniport ha solicitado compatibilidad con varios canales a través de PERF_CONFIGURATION_DATA, se tomarán todos los tokens de canal y, al devolver la devolución de llamada, se liberará. Esto garantiza que no se envíe ninguna E/S a HwStorStartIo durante la fase de restablecimiento del bus.
Ejemplos
Para definir un HwStorResetBus 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 va a definir. 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 HwStorResetBus rutina de devolución de llamada denominada MyHwResetBus, use el tipo HW_RESET_BUS tal como se muestra en este ejemplo de código:
HW_RESET_BUS MyHwResetBus;
A continuación, implemente la rutina de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
BOOLEAN
MyHwResetBus (
_In_ PVOID DeviceExtension,
_In_ ULONG PahtId
);
{
...
}
El tipo de función HW_RESET_BUS se define en el archivo de encabezado 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_RESET_BUS 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 |
---|---|
de la plataforma de destino de | Universal |
encabezado de | storport.h (incluya Storport.h) |
irQL | DISPATCH_LEVEL (consulte la sección Comentarios). |