Partager via


DRIVER_PROXY_REGISTER_CALLBACK fonction de rappel (wdm.h)

Le rappel DRIVER_PROXY_REGISTER_CALLBACK définit une routine appelée à différentes phases pendant l’inscription du point de terminaison DriverProxy et les opérations d’échange à chaud.

Syntaxe

DRIVER_PROXY_REGISTER_CALLBACK DriverProxyRegisterCallback;

NTSTATUS DriverProxyRegisterCallback(
  DRIVER_PROXY_REGISTER_CALLBACK_PHASE Phase,
  PVOID Context
)
{...}

Paramètres

Phase

[in] Valeur DRIVER_PROXY_REGISTER_CALLBACK_PHASE qui indique la phase du processus d’inscription en cours d’exécution.

Context

[in, facultatif] Pointeur vers les informations de contexte définies par le pilote transmises à IoRegisterDriverProxyEndpoints. Ce paramètre peut être NULL si aucun contexte n’a été fourni.

Valeur retournée

DRIVER_PROXY_REGISTER_CALLBACK retourne l’une des valeurs NTSTATUS suivantes :

Code de retour Descriptif
STATUS_SUCCESS Le rappel s’est terminé avec succès. Le processus d’inscription du point de terminaison continuera à la phase suivante.
Autres valeurs NTSTATUS Le rappel a rencontré une erreur. L’intégralité de l’opération d’inscription de point de terminaison échouera et toutes les modifications partielles seront restaurées.

Remarques

Ce rappel permet aux pilotes d’effectuer des opérations personnalisées à des points spécifiques pendant le processus d’inscription du point de terminaison, ce qui permet la coordination avec le mécanisme d’échange à chaud.

Ce rappel est appelé par IoRegisterDriverProxyEndpoints pendant l’inscription du point de terminaison et les opérations d’échange à chaud. Le rappel s’exécute à PASSIVE_LEVEL et fournit aux pilotes la possibilité de se coordonner avec le système DriverProxy pendant les phases critiques du processus d’échange à chaud.

Le rappel est appelé dans une séquence spécifique pendant l’inscription du point de terminaison :

  1. Phase de prétraitement : appelée avant le début du changement de fonction de point de terminaison. Les pilotes peuvent utiliser cette phase pour préparer la modification à venir, par exemple :

    • Acquisition de verrous spécifiques au pilote
    • Enregistrement de l’état actuel
    • Notification d’autres composants de pilote
    • Préparation des ressources nécessaires pendant le commutateur
  2. Phase de blocage du proxy : appelée alors que tous les appels aux points de terminaison inscrits sont bloqués. Pendant cette phase, le système DriverProxy conserve le verrou d’exécution et aucun nouvel appel aux fonctions de point de terminaison ne se poursuit. Il s’agit du temps le plus sûr d’effectuer des opérations qui nécessitent un accès exclusif aux ressources qui peuvent être accessibles par les fonctions de point de terminaison, telles que :

    • Mise à jour des structures de données partagées
    • Reconfigurer le matériel
    • Modification de l’état du pilote global
  3. Phase de post-traitement : appelée après la fin du changement de fonction de point de terminaison et l’opération normale a repris. Les pilotes peuvent utiliser cette phase pour les opérations de nettoyage, telles que :

    • Libération de verrous spécifiques au pilote
    • Mise à jour de l’état interne
    • Notification d’autres composants de la saisie semi-automatique
    • Journalisation ou suivi des performances

Le rappel doit retourner STATUS_SUCCESS pour que l’inscription continue. Toute défaillance entraîne l’échec de l’opération entière et la restauration.

Pendant la phase DriverProxyRegisterCallbackProxyS totalisé , tous les appels de point de terminaison sont bloqués. Le rappel doit donc effectuer rapidement des opérations pour réduire la perturbation du système.

Le rappel ne doit pas effectuer d’opérations qui peuvent rappeler dans la même extension DriverProxy, car cela peut entraîner des blocages.

Le rappel est facultatif et peut être NULL si aucune coordination spécifique au pilote n’est nécessaire lors de l’inscription du point de terminaison.

Spécifications

Requirement Valeur
plateforme cible Universal
Header wdm.h
IRQL PASSIVE_LEVEL

Voir aussi

IoRegisterDriverProxyEndpoints

DRIVER_PROXY_REGISTER_CALLBACK_PHASE

DRIVER_PROXY_ENDPOINT_INFORMATION

IoCreateDriverProxyExtension