Freigeben über


EVT_WDF_REQUEST_IMPERSONATE Rückruffunktion (wdfrequest.h)

[Gilt nur für UMDF]

Die evtRequestImpersonate Ereignisrückruffunktion eines Treibers führt Aufgaben auf der angeforderten Identitätswechselebene aus, z. B. das Öffnen einer geschützten Datei.

Syntax

EVT_WDF_REQUEST_IMPERSONATE EvtWdfRequestImpersonate;

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

Parameter

[in] Request

Ein Handle zu einem Framework-Anforderungsobjekt, das die E/A-Anforderung darstellt, die einen Identitätswechsel erfordert.

[in, optional] Context

Ein Zeiger auf einen Kontext, der zuvor in der WdfRequestImpersonate-Methode bereitgestellt wurde. Dieser Parameter ist optional und kann NULL sein, wenn kein Kontext erforderlich ist.

Rückgabewert

Nichts

Bemerkungen

User-Mode Driver Framework (UMDF) lässt die EvtRequestImpersonate Rückruffunktion eines Treibers nicht zu, um eine der Objektmethoden des Frameworks aufzurufen. Dadurch wird sichergestellt, dass der Treiber die Identitätswechselstufe nicht für andere Treiberrückruffunktionen oder andere Treiber verfügbar macht.

Der EVT_WDF_REQUEST_IMPERSONATE Funktionstyp wird in der Headerdatei "Wdfrequest.h" definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die _Use_decl_annotations_ Anmerkung hinzufügen. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp EVT_WDF_REQUEST_IMPERSONATE in der Headerdatei angewendet werden, verwendet werden.

Die folgenden Einschränkungen gelten auch:

  • Wenn der Treiber WdfRequestImpersonate mit ImpersonationLevel = SecurityIdentificationaufruft, kann der Rückruf nicht LoadLibrary- aufrufen oder eine Aktion ausführen, die eine Zugriffsüberprüfung erfordert.

  • Das gleiche Prinzip gilt für DLL-Verzögerungsladevorgang. Betrachten Sie ein Beispiel, in dem der Treiber identitätswechselt, und der Rückruf ruft GetUserNameWauf. Da diese API wiederum eine andere DLL lädt und GetUserNameExW-aufruft, schlägt der anfängliche Aufruf möglicherweise mit ERROR_PROC_NOT_FOUND oder ERROR_BAD_IMPERSONATION_LEVELfehl. In einem solchen Fall sollte der Rückruf stattdessen GetUserNameExW- direkt aufrufen.

Weitere Informationen finden Sie unter Behandeln von Clientidentitätswechsel in UMDF-Treibern.

Beispiele

Um eine EvtRequestImpersonate Rückruffunktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückruffunktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine EvtRequestImpersonate Rückruffunktion zu definieren, die MyRequestImpersonateheißt, verwenden Sie den EVT_WDF_REQUEST_IMPERSONATE Typ, wie in diesem Codebeispiel gezeigt:

EVT_WDF_REQUEST_IMPERSONATE  MyRequestImpersonate;

Implementieren Sie dann die Rückruffunktion wie folgt:

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

Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber.

Informationen zu Use_decl_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8.1
Zielplattform- Universal
Mindest-UMDF-Version 2.0
Header- wdfrequest.h (include Wdf.h)

Siehe auch

WdfRequestImpersonate