Condividi tramite


EVT_WDF_REQUEST_IMPERSONATE funzione di callback (wdfrequest.h)

[Si applica solo a UMDF]

La funzione di callback dell'evento EvtRequestImpersonate di un driver esegue attività a livello di rappresentazione richiesto, ad esempio l'apertura di un file protetto.

Sintassi

EVT_WDF_REQUEST_IMPERSONATE EvtWdfRequestImpersonate;

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

Parametri

[in] Request

Handle per un oggetto richiesta framework che rappresenta la richiesta di I/O che richiede la rappresentazione.

[in, optional] Context

Puntatore a un contesto fornito in precedenza nel metodo WdfRequestImpersonate . Questo parametro è facoltativo e può essere NULL se non è necessario un contesto.

Valore restituito

nessuno

Osservazioni

User-Mode Driver Framework (UMDF) non consente alla funzione di callback EvtRequestImpersonate di un driver di chiamare uno dei metodi oggetto del framework. Ciò garantisce che il driver non esponga il livello di rappresentazione ad altre funzioni di callback del driver o ad altri driver.

Il tipo di funzione EVT_WDF_REQUEST_IMPERSONATE è definito nel file di intestazione Wdfrequest.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_ alla definizione della funzione. L'annotazione _Use_decl_annotations_ garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione EVT_WDF_REQUEST_IMPERSONATE nel file di intestazione.

Si applicano anche le restrizioni seguenti:

  • Quando il driver chiama WdfRequestImpersonate con ImpersonationLevel = SecurityIdentification, il callback non può chiamare LoadLibrary o eseguire alcuna azione che richiede un controllo di accesso.

  • Lo stesso principio si applica al caricamento ritardato della DLL. Si consideri un esempio in cui il driver rappresenta a livello di identificazione e il callback chiama GetUserNameW. Poiché questa API a sua volta ritarda il caricamento di un'altra DLL e chiama GetUserNameExW, la chiamata iniziale potrebbe non riuscire con ERROR_PROC_NOT_FOUND o ERROR_BAD_IMPERSONATION_LEVEL. In questo caso, il callback deve invece chiamare direttamente GetUserNameExW .

Per altre informazioni, vedere Gestione della rappresentazione client nei driver UMDF.

Esempio

Per definire una funzione di callback EvtRequestImpersonate , è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di funzione di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione di callback EvtRequestImpersonate denominata MyRequestImpersonate, usare il tipo di EVT_WDF_REQUEST_IMPERSONATE come illustrato nell'esempio di codice seguente:

EVT_WDF_REQUEST_IMPERSONATE  MyRequestImpersonate;

Implementare quindi la funzione di callback come indicato di seguito:

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

Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver KMDF.

Per informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1
Piattaforma di destinazione Universale
Versione UMDF minima 2,0
Intestazione wdfrequest.h (include Wdf.h)

Vedi anche

WdfRequestImpersonate