Compartir a través de


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

La rutina HwStorInitialize inicializa el controlador de minipuerto después de que se produzca un reinicio del sistema o un error de energía. StorPort lo llama después de que HwStorFindAdapter se devuelva correctamente. HwStorInitialize inicializa el HBA y busca todos los dispositivos que son de interés para el controlador de minipuerto.

Sintaxis

HW_INITIALIZE HwInitialize;

BOOLEAN HwInitialize(
  PVOID DeviceExtension
)
{...}

Parámetros

DeviceExtension

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

Valor devuelto

Si la inicialización se realiza correctamente, HwStorInitialize devuelve TRUE.

Comentarios

El nombre HwStorInitialize 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_INITIALIZE (
  _In_ PVOID  DeviceExtension
  );

Dado que se llama a HwStorInitialize en DIRQL, HwStorPassiveInitializeRoutine debe realizar la mayor parte del proceso de inicialización posible. Si es así, debe habilitar la rutina de inicialización pasiva a través de StorPortEnablePassiveInitialization.

Si la inicialización de hardware genera interrupciones, se llamará a la rutina HwStorInterrupt . En este caso, la rutina HwStorInitialize debe configurar los datos que HwStorInterrupt espera (incluido un HwStorDpcRoutine, si se usa uno) antes de que comience a inicializar el hardware.

Las siguientes responsabilidades se comparten entre HwStorInitialize y HwStorPassiveInitializeRoutine:

  • Inicialice el hardware para los registros y búferes de HBA.

  • Inicialice y asigne todos los campos DeviceExtension .

  • Configure e inicialice todos los eventos y DPC que usa el controlador de minipuerto.

Ejemplos

Para definir una función de devolución de llamada HwStorInitialize , 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 una rutina de devolución de llamada HwStorInitialize denominada MyHwInitialize, use el tipo de HW_INITIALIZE como se muestra en este ejemplo de código:

HW_INITIALIZE MyHwInitialize;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

_Use_decl_annotations_
BOOLEAN 
  MyHwInitialize( _In_ PVOID DeviceExtension )
  {
      ...
  }

El tipo de función HW_INITIALIZE 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_INITIALIZE del 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, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado storport.h (incluya Storport.h)
IRQL DIRQL (consulte la sección Comentarios).

Consulte también

HwStorDpcRoutine

HwStorFindAdapter

HwStorInterrupt

HwStorPassiveInitializeRoutine

StorPortEnablePassiveInitialization