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