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