Compartilhar via


Função IoCreateDriverProxyExtension (wdm.h)

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

IoGetDriverProxyFeatures

IoGetDriverProxyWrapperFromEndpoint

IoGetDriverProxyExtensionFromDriverObject

DRIVER_PROXY_EXTENSION_CREATION_FLAGS

DRIVER_OBJECT