Compartilhar via


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

[Aplica-se somente ao UMDF]

A função de retorno de chamada de evento EvtRequestImpersonate de um driver 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.

Retornar valor

Nenhum

Comentários

User-Mode Driver Framework (UMDF) não permite que a função de retorno de chamada EvtRequestImpersonate de um driver 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 de 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 _Use_decl_annotations_ anotação à sua definição de função. A _Use_decl_annotations_ anotação 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 um acesso marcar.

  • 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 o retorno de chamada chama 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 a encontrar erros e é um requisito para escrever drivers para o sistema operacional Windows.

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

EVT_WDF_REQUEST_IMPERSONATE  MyRequestImpersonate;

Em seguida, implemente a 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 para drivers KMDF.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8.1
Plataforma de Destino Universal
Versão mínima do UMDF 2,0
Cabeçalho wdfrequest.h (inclua Wdf.h)

Confira também

WdfRequestImpersonate