Partager via


HW_FIND_ADAPTER fonction de rappel (storport.h)

Le HwStorFindAdapter routine 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

Défini sur NULL.

[in] BusInformation

Défini sur NULL.

[in] ArgumentString

Fournit une chaîne NULL-terminated string avec des informations de contexte sur le pilote.

[in/out] ConfigInfo

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

[in] Reserved3

Réservé à l’utilisation du système.

Valeur de retour

HwStorFindAdapter doit retourner l’une des valeurs d’état suivantes :

Retourner le code Description
SP_RETURN_FOUND Indique qu’un HBA pris en charge a été trouvé et que les informations de configuration pertinentes sur l’adaptateur 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 uniquement en charge les appareils Plug-and-Play (PnP), les HwContext et les paramètres BusInformation pour les 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 d’adaptateur requises pour démarrer 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 HwStorAdaptorControl avec le type de contrôle ScsiRestartAdapter. Dans ce cas, StorPort réinitialise l’adaptateur en appelant HwStorFindAdapter et HwStorInitialize. Lorsque c’est le cas, HwStorFindAdapter est appelé à IRQL == DISPATCH_LEVEL. En outre, en mode vidage, HwStorFindAdapter est appelé à 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 fonctions de rappel permet d'Analyse du code pour les pilotes, static Driver Verifier (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des 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 lorsque vous exécutez les 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 les conditions requises 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 annoter le comportement de la fonction.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête storport.h (include Storport.h)
IRQL PASSIVE_LEVEL (voir la section Remarques.)

Voir aussi

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError