HW_FIND_ADAPTER fonction de rappel (storport.h)

La routine HwStorFindAdapter utilise la configuration fournie pour déterminer si un HBA spécifique est pris en charge et, le cas échéant, pour retourner des informations de configuration sur cet adaptateur.

Syntaxe

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
)
{...}

Paramètres

DeviceExtension

Fournit une zone de stockage par adaptateur.

[in] HwContext

valeur de l’en-tête définie sur Null.

[in] BusInformation

valeur de l’en-tête définie sur Null.

[in] ArgumentString

Fournit une chaîne terminée par NULL avec des informations de contexte sur le pilote.

[in/out] ConfigInfo

Fournit une structure PORT_CONFIGURATION_INFORMATION initialisée que le pilote miniport utilise lors de l’initialisation.

[in] Reserved3

Réservé pour le système.

Valeur retournée

HwStorFindAdapter doit retourner l’une des valeurs de status suivantes :

Code de retour Description
SP_RETURN_FOUND Indique qu’un HBA pris en charge a été trouvé et que les informations de configuration pertinentes pour HBA ont été correctement déterminées et définies dans la structure PORT_CONFIGURATION_INFORMATION .
SP_RETURN_ERROR Indique qu’un HBA a été trouvé, mais qu’une erreur s’est produite lors de l’obtention des informations de configuration. Si possible, une telle erreur doit être enregistrée avec StorPortLogError.
SP_RETURN_BAD_CONFIG Indique que les informations de configuration fournies n’étaient pas valides pour l’adaptateur.
SP_RETURN_NOT_FOUND Indique qu’aucun HBA pris en charge n’a été trouvé pour les informations de configuration fournies.

Remarques

Étant donné que le pilote Storport prend en charge uniquement les appareils Plug-and-Play (PnP), les paramètres HwContext et BusInformation de HwStorFindAdapter ne sont pas fournis aux pilotes miniport non virtuels.

HwStorFindAdapter doit définir les champs MaximumTransferLength et NumberOfPhysicalBreaks dans la structure ConfigInfo . En dehors de ces champs, la structure PORT_CONFIGURATION_INFORMATION spécifie toujours entièrement toutes les ressources de l’adaptateur nécessaires au démarrage de l’adaptateur.

Le nom HwStorFindAdapter n’est qu’un espace réservé. Le prototype réel de cette routine est défini dans Storport.h comme suit :

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
  );

Dans la plupart des cas, StorPort appelle la routine HwStorFindAdapter à IRQL == PASSIVE_LEVEL sans acquérir de verrous de rotation. Le cas d’exception est lorsque le miniport ne prend pas en charge l’appel de HwStorAdaptorControl avec le type de contrôle ScsiRestartAdapter . Dans ce cas, StorPort réinitialise plutôt l’adaptateur en appelant HwStorFindAdapter et HwStorInitialize. Dans ce cas, HwStorFindAdapter est appelé dans IRQL == DISPATCH_LEVEL. En outre, en mode vidage, HwStorFindAdapter est appelé dans IRQL == HIGH_LEVEL.

Exemples

Pour définir une fonction de rappel HwStorFindAdapter , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction de rappel que vous définissez. Windows fournit un ensemble de types de fonctions de rappel pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction de rappel permet à l’analyse du code pour les pilotes, au vérificateur de pilotes statiques (SDV) et à d’autres outils de vérification de trouver des erreurs. Il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une routine de rappel HwStorFindAdapter nommée MyHwFindAdapter, utilisez le type HW_FIND_ADAPTER comme indiqué dans cet exemple de code :

HW_FIND_ADAPTER MyHwFindAdapter;

Ensuite, implémentez votre routine de rappel comme suit :

_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
  );
  {
      ...
  }

Le type de fonction HW_FIND_ADAPTER est défini dans le fichier d’en-tête Storport.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction HW_FIND_ADAPTER dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes Storport. Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête storport.h (inclure Storport.h)
IRQL PASSIVE_LEVEL (voir la section Notes.)

Voir aussi

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError