Compartilhar via


EVT_WDF_REQUEST_IMPERSONATE função de retorno de chamada (wdfrequest.h)

[Aplica-se somente ao UMDF]

O EvtRequestImpersonate de um driver função de retorno de chamada de evento executa tarefas no nível de representação solicitado, como abrir um arquivo protegido.

Sintaxe

EVT_WDF_REQUEST_IMPERSONATE EvtWdfRequestImpersonate;

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

Parâmetros

[in] Request

Um identificador para um objeto de solicitação de estrutura que representa a solicitação de E/S que requer representação.

[in, optional] Context

Um ponteiro para um contexto que foi fornecido anteriormente no método WdfRequestImpersonate. Esse parâmetro é opcional e pode ser NULL se um contexto não for necessário.

Valor de retorno

Nenhum

Observações

User-Mode Driver Framework (UMDF) não permite que o do driver EvtRequestImpersonate função de retorno de chamada chame qualquer um dos métodos de objeto da estrutura. Isso garante que o driver não exponha o nível de representação para outras funções de retorno de chamada do driver ou outros drivers.

O tipo de função EVT_WDF_REQUEST_IMPERSONATE é definido no arquivo de cabeçalho Wdfrequest.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação _Use_decl_annotations_ à sua definição de função. A anotação _Use_decl_annotations_ garante que as anotações aplicadas ao tipo de função EVT_WDF_REQUEST_IMPERSONATE no arquivo de cabeçalho sejam usadas.

As seguintes restrições também se aplicam:

  • Quando o driver chama WdfRequestImpersonate com ImpersonationLevel = SecurityIdentification, o retorno de chamada não pode chamar LoadLibrary ou executar qualquer ação que exija uma verificação de acesso.

  • O mesmo princípio se aplica à carga de atraso de DLL. Considere um exemplo no qual o driver representa no nível de identificação e as chamadas de retorno de chamada GetUserNameW. Como essa API, por sua vez, atrasa o carregamento de outra DLL e chama GetUserNameExW, a chamada inicial pode falhar com ERROR_PROC_NOT_FOUND ou ERROR_BAD_IMPERSONATION_LEVEL. Nesse caso, o retorno de chamada deve chamar GetUserNameExW diretamente.

Para obter mais informações, consulte Manipulando a representação do cliente em drivers UMDF.

Exemplos

Para definir uma função de retorno de chamada EvtRequestImpersonate, primeiro você deve fornecer uma declaração de função que identifique o tipo de função de retorno de chamada que você está definindo. O Windows fornece um conjunto de tipos de função de retorno de chamada para drivers. Declarar uma função usando os tipos de função de retorno de chamada ajuda a análise de código para drivers, SDV (Verificador de Driver Estático) e outras ferramentas de verificação encontram erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função de retorno de chamada EvtRequestImpersonate denominada MyRequestImpersonate, use o tipo EVT_WDF_REQUEST_IMPERSONATE, conforme mostrado neste exemplo de código:

EVT_WDF_REQUEST_IMPERSONATE  MyRequestImpersonate;

Em seguida, implemente sua função de retorno de chamada da seguinte maneira:

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

Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers KMDF.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 8.1
da Plataforma de Destino Universal
versão mínima do UMDF 2.0
cabeçalho wdfrequest.h (inclua Wdf.h)

Consulte também

WdfRequestImpersonate