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 le pilote miniport par zone de stockage HBA.

PathId

Identifie le bus SCSI à réinitialiser.

Valeur retournée

Si le bus est correctement 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 suspend toutes les files d’attente d’E/S de l’appareil pour l’adaptateur, puis appelle la routine HwStorResetBus à l’adresse IRQL DISPATCH_LEVEL après l’acquisition du verrou de rotation StartIo. Un pilote miniport est chargé d’effectuer les SRM reçus par HwStorStartIo pour PathId au cours de cette routine et de définir leur status sur SRB_STATUS_BUS_RESET si nécessaire.

En plus du verrouillage de rotation StartIo pris puis libéré après le retour de HwStorResetBus , si le miniport a demandé la prise en charge de plusieurs canaux via PERF_CONFIGURATION_DATA, tous les jetons de canal sont pris et, au retour du rappel, libérés. 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 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 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 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_RESET_BUS 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 DISPATCH_LEVEL (voir la section Notes.)