Compartir a través de


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

La rutina HwStorFindAdapter usa la configuración proporcionada para determinar si se admite un HBA específico y, si es así, devolver información de configuración sobre ese adaptador.

Sintaxis

HW_FIND_ADAPTER HwFindAdapter;

ULONG HwFindAdapter(
           PVOID DeviceExtension,
  [in]     PVOID HwContext,
  [in]     PVOID BusInformation,
  [in]     PCHAR ArgumentString,
  [in/out] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in]     PBOOLEAN Reserved3
)
{...}

Parámetros

DeviceExtension

Proporciona un área de almacenamiento por adaptador.

[in] HwContext

Definición en NULL

[in] BusInformation

Definición en NULL

[in] ArgumentString

Proporciona una cadena terminada en NULL con información de contexto sobre el controlador.

[in/out] ConfigInfo

Proporciona una estructura de PORT_CONFIGURATION_INFORMATION inicializada que usa el controlador de minipuerto durante la inicialización.

[in] Reserved3

Reservado para uso del sistema.

Valor devuelto

HwStorFindAdapter debe devolver uno de los siguientes valores de estado:

Código devuelto Descripción
SP_RETURN_FOUND Indica que se encontró un HBA compatible y que la información de configuración pertinente para HBA se determinó correctamente y se estableció en la estructura de PORT_CONFIGURATION_INFORMATION .
SP_RETURN_ERROR Indica que se encontró un HBA, pero se produjo un error al obtener la información de configuración. Si es posible, este error debe registrarse con StorPortLogError.
SP_RETURN_BAD_CONFIG Indica que la información de configuración proporcionada no era válida para el adaptador.
SP_RETURN_NOT_FOUND Indica que no se encontró ningún HBA compatible para la información de configuración proporcionada.

Comentarios

Dado que el controlador storport solo admite dispositivos Plug and Play (PnP), los parámetros HwContext y BusInformation a HwStorFindAdapter no se proporcionan a controladores de miniport no virtuales.

HwStorFindAdapter debe establecer los campos MaximumTransferLength y NumberOfPhysicalBreaks en la estructura ConfigInfo . Aparte de estos campos, la estructura de PORT_CONFIGURATION_INFORMATION siempre especificará completamente todos los recursos del adaptador necesarios para iniciar el adaptador.

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

typedef
ULONG
HW_FIND_ADAPTER (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );

En la mayoría de los casos, StorPort llama a la rutina HwStorFindAdapter en IRQL == PASSIVE_LEVEL sin adquirir ningún bloqueo de giro. El caso de excepción es cuando el miniport no admite llamar a HwStorAdaptorControl con el tipo de control ScsiRestartAdapter . En esta situación, StorPort reinicializará el adaptador llamando a HwStorFindAdapter y HwStorInitialize. Cuando este es el caso, se llama a HwStorFindAdapter en IRQL == DISPATCH_LEVEL. Además, cuando está en modo de volcado, se llama a HwStorFindAdapter en IRQL == HIGH_LEVEL.

Ejemplos

Para definir una función de devolución de llamada HwStorFindAdapter , 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 Code Analysis for Drivers, Static Driver Verifier (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 HwStorFindAdapter denominada MyHwFindAdapter, use el tipo de HW_FIND_ADAPTER como se muestra en este ejemplo de código:

HW_FIND_ADAPTER MyHwFindAdapter;

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

_Use_decl_annotations_
ULONG
MyHwFindAdapter (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );
  {
      ...
  }

El tipo de función HW_FIND_ADAPTER 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_FIND_ADAPTER 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 roles de función para controladores 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 PASSIVE_LEVEL (consulte la sección Comentarios).

Consulte también

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError