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) |