Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função IoCreateDriverProxyExtension aloca e inicializa uma extensão DriverProxy que permite a funcionalidade de driver de troca frequente.
Sintaxe
NTSTATUS IoCreateDriverProxyExtension(
PDRIVER_OBJECT OwningDriverObject,
DRIVER_PROXY_EXTENSION_CREATION_FLAGS Flags,
PDRIVER_PROXY_EXTENSION *DriverProxyExtension
);
Parâmetros
OwningDriverObject
[in, opcional] Um ponteiro opcional para o DRIVER_OBJECT que será proprietário da extensão DriverProxy. Se fornecida, a extensão será associada a esse objeto de driver. Se NULL, a extensão será criada sem um driver proprietário.
Flags
[in] Um valor DRIVER_PROXY_EXTENSION_CREATION_FLAGS que fornece opções de configuração adicionais para criação de extensão. Atualmente, nenhum sinalizador é definido, portanto, esse parâmetro deve ser definido como 0.
DriverProxyExtension
[out] Um ponteiro para uma variável que recebe um ponteiro para a extensão DriverProxy recém-criada. Essa extensão pode ser usada com outras APIs DriverProxy.
Valor de retorno
IoCreateDriverProxyExtension retorna um dos seguintes valores NTSTATUS:
| Código de retorno | Description |
|---|---|
| STATUS_SUCCESS | A extensão foi alocada e inicializada com êxito. |
| STATUS_NOT_SUPPORTED | O sistema atual não dá suporte a extensões DriverProxy. |
| STATUS_DRIVER_BLOCKED | O driver especificado é excluído das operações driverProxy por meio de configurações do Registro. |
| STATUS_INSUFFICIENT_RESOURCES | Memória insuficiente estava disponível para alocar a extensão. |
| STATUS_RESOURCE_IN_USE | O objeto driver especificado já possui uma extensão DriverProxy. |
Observações
Uma extensão DriverProxy é necessária para qualquer driver que queira usar a funcionalidade do Driver Hot-Swap. A extensão serve como um token opaco que contém todas as informações relevantes do DriverProxy e permite operações de hot-swappable.
Os drivers que usam o driver Hot-Swap devem criar uma extensão DriverProxy durante o DriverEntry, preferencialmente no início da função. É recomendável armazenar o resultado em uma variável global para facilitar o acesso durante todo o tempo de vida do driver.
Antes de chamar IoCreateDriverProxyExtension, os drivers devem chamar IoGetDriverProxyFeatures para verificar se a funcionalidade driverProxy está disponível e habilitada.
Cada objeto driver pode ter no máximo uma extensão DriverProxy. Se um objeto de driver já tiver uma extensão associada, a função retornará STATUS_RESOURCE_IN_USE.
No Driver Hot-Swap V2, depois que a extensão for criada com êxito, os wrappers de ponto de extremidade estarão automaticamente disponíveis sem a necessidade de chamadas de registro explícitas. O compilador e o vinculador geram automaticamente as informações do ponto de extremidade durante o processo de build.
O sistema gerencia automaticamente o ciclo de vida da extensão DriverProxy. Quando o objeto de driver proprietário é descarregado, a extensão é limpa automaticamente.
Requirements
| Requirement | Value |
|---|---|
| da Plataforma de Destino | Universal |
| Header | wdm.h |
| Library | NtosKrnl.lib |
| IRQL | PASSIVE_LEVEL |
Consulte também
IoGetDriverProxyWrapperFromEndpoint
IoGetDriverProxyExtensionFromDriverObject