Partager via


HW_RESET_BUS fonction de rappel (storport.h)

La routine HwStorResetBus est appelée par le pilote de port pour effacer les conditions d’erreur.

Syntaxe

HW_RESET_BUS HwResetBus;

BOOLEAN HwResetBus(
  PVOID DeviceExtension,
  ULONG PathId
)
{...}

Paramètres

DeviceExtension

Pointeur vers la zone de stockage HBA du pilote miniport.

PathId

Identifie le bus SCSI à réinitialiser.

Valeur de retour

Si le bus est réinitialisé, HwStorResetBus retourne TRUE.

Remarques

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

typedef
BOOLEAN
HW_RESET_BUS (
  _In_ PVOID  DeviceExtension,
  _In ULONG  PathId
  );

Le pilote de port interrompt toutes les files d’attente d’E/S de l’appareil pour l’adaptateur, puis appelle la routine HwStorResetBus au DISPATCH_LEVEL IRQL après avoir acquis le verrou de rotation StartIo. Un pilote miniport est chargé d’effectuer les SSR reçues par HwStorStartIo pour PathId pendant cette routine et de définir leur état sur SRB_STATUS_BUS_RESET si nécessaire.

En plus du verrouillage de spin StartIo pris et libéré après HwStorResetBus retourne, si le miniport a demandé la prise en charge de plusieurs canaux via PERF_CONFIGURATION_DATA, tous les jetons de canal seront pris et, lors du retour du rappel, libéré. Cela garantit qu’aucune E/S n’est envoyée à HwStorStartIo pendant la phase de réinitialisation du bus.

Exemples

Pour définir une fonction de rappel HwStorResetBus, 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 HwStorResetBus nommée MyHwResetBus, utilisez le type HW_RESET_BUS comme indiqué dans cet exemple de code :

HW_RESET_BUS MyHwResetBus;

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

_Use_decl_annotations_
BOOLEAN
MyHwResetBus (
  _In_ PVOID  DeviceExtension,
  _In_ ULONG  PahtId
  );
  {
      ...
  }

Le type de fonction HW_RESET_BUS 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_RESET_BUS 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 DISPATCH_LEVEL (voir la section Remarques.)