Partager via


EVT_WDF_REQUEST_IMPERSONATE fonction de rappel (wdfrequest.h)

[S’applique uniquement à UMDF]

La fonction de rappel d’événement EvtRequestImpersonate pilote effectue des tâches au niveau de l’emprunt d’identité demandé, par exemple l’ouverture d’un fichier protégé.

Syntaxe

EVT_WDF_REQUEST_IMPERSONATE EvtWdfRequestImpersonate;

void EvtWdfRequestImpersonate(
  [in]           WDFREQUEST Request,
  [in, optional] PVOID Context
)
{...}

Paramètres

[in] Request

Handle vers un objet de requête de framework qui représente la requête d’E/S qui nécessite l’emprunt d’identité.

[in, optional] Context

Pointeur vers un contexte précédemment fourni dans la méthode WdfRequestImpersonate. Ce paramètre est facultatif et peut être NULL si un contexte n’est pas obligatoire.

Valeur de retour

Aucun

Remarques

User-Mode Driver Framework (UMDF) n’autorise pas l'EvtRequestImpersonate fonction de rappel pour appeler l’une des méthodes d’objet du framework. Cela garantit que le pilote n’expose pas le niveau d’emprunt d’identité à d’autres fonctions de rappel de pilote ou à d’autres pilotes.

Le type de fonction EVT_WDF_REQUEST_IMPERSONATE est défini dans le fichier d’en-tête Wdfrequest.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 EVT_WDF_REQUEST_IMPERSONATE dans le fichier d’en-tête sont utilisées.

Les restrictions suivantes s’appliquent également :

  • Lorsque le pilote appelle WdfRequestImpersonate avec ImpersonationLevel = SecurityIdentification, le rappel ne peut pas appeler LoadLibrary ou effectuer une action nécessitant une vérification d’accès.

  • Le même principe s’applique au chargement des retards DLL. Prenons un exemple dans lequel le pilote emprunte l’identité au niveau de l’identification, et le rappel appelle GetUserNameW. Étant donné que cette API retarde à son tour charge une autre DLL et appelle GetUserNameExW, l’appel initial peut échouer avec ERROR_PROC_NOT_FOUND ou ERROR_BAD_IMPERSONATION_LEVEL. Dans ce cas, le rappel doit appeler GetUserNameExW directement.

Pour plus d’informations, consultez Gestion de l’emprunt d’identité du client dans les pilotes UMDF.

Exemples

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

EVT_WDF_REQUEST_IMPERSONATE  MyRequestImpersonate;

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

_Use_decl_annotations_
VOID
 MyRequestImpersonate (
    WDFREQUEST  Request
    PVOID  Context
    )
  {...}

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

Pour plus d’informations sur Use_decl_annotations, consultez annoter le comportement de la fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 8.1
plateforme cible Universel
version minimale de UMDF 2.0
d’en-tête wdfrequest.h (include Wdf.h)

Voir aussi

WdfRequestImpersonate