Partager via


HW_DPC_ROUTINE fonction de rappel (storport.h)

La routine HwStorDpcRoutine est une routine qui est différée pour exécution au niveau DE DISPATCH IRQL au moyen du mécanisme d’appel de procédure différée (DPC).

Syntaxe

HW_DPC_ROUTINE HwDpcRoutine;

void HwDpcRoutine(
  PSTOR_DPC Dpc,
  PVOID HwDeviceExtension,
  PVOID SystemArgument1,
  PVOID SystemArgument2
)
{...}

Paramètres

Dpc

Pointeur vers un contexte Storport DPC.

HwDeviceExtension

Pointeur vers l’extension de périphérique par adaptateur.

SystemArgument1

Pointeur vers les informations fournies par l’appelant.

SystemArgument2

Pointeur vers les informations fournies par l’appelant.

Valeur de retour

None

Remarques

Lorsqu’un pilote miniport appelle StorPortInitializeDpc pour initialiser un DPC, il doit charger le paramètre HwDpcRoutine de la routine StorPortInitializeDpc avec un pointeur vers la routine HwStorDpcRoutine .

Toute instance particulière d’une routine DPC est garantie d’être synchronisée avec d’autres instances de la routine DPC. Une routine DPC peut se synchroniser avec la routine HwStorStartIo ou avec la routine HwStorInterrupt en acquérant le verrou de rotation approprié avec un appel à StorPortAcquireSpinLock. Pour plus d’informations sur la gestion des verrous de rotation dans les routines DPC, consultez StorPortIssueDpc.

Le nom HwStorDpcRoutine est simplement un espace réservé. Le prototype réel de cette routine est défini dans storport.h comme suit :

typedef
BOOLEAN
HW_DPC_ROUTINE (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );

Le pilote de port appelle la routine HwStorDpcRoutine à DISPATCH IRQL.

Exemples

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

HW_DPC_ROUTINE MyHwDpcRoutine;

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

_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );
  {
      ...
  }

Le type de fonction HW_DPC_ROUTINE 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_DPC_ROUTINE 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.)

Voir aussi

Lorsqu’un pilote miniport appelle pour initialiser un DPC, il doit charger le paramètre HwDpcRoutine de la routine StorPortInitializeDpc avec un pointeur vers la routine HwStorDpcRoutine .

Toute instance particulière d’une routine DPC est garantie d’être synchronisée avec d’autres instances de la routine DPC. Une routine DPC peut se synchroniser avec la routine ou avec la routine en acquérant le verrou de rotation approprié avec un appel à . Pour plus d’informations sur la gestion des verrous de rotation dans les routines DPC, consultez .

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc