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.
O retorno de chamada DRIVER_PROXY_REGISTER_CALLBACK define uma rotina que é invocada em diferentes fases durante o registro do ponto de extremidade driverProxy e operações de hot-swap.
Sintaxe
DRIVER_PROXY_REGISTER_CALLBACK DriverProxyRegisterCallback;
NTSTATUS DriverProxyRegisterCallback(
DRIVER_PROXY_REGISTER_CALLBACK_PHASE Phase,
PVOID Context
)
{...}
Parâmetros
Phase
[in] Um valor DRIVER_PROXY_REGISTER_CALLBACK_PHASE que indica qual fase do processo de registro está sendo executada no momento.
Context
[in, opcional] Um ponteiro para informações de contexto definidas pelo driver que foram passadas para IoRegisterDriverProxyEndpoints. Esse parâmetro poderá ser NULL se nenhum contexto tiver sido fornecido.
Valor de retorno
DRIVER_PROXY_REGISTER_CALLBACK retorna um dos seguintes valores NTSTATUS:
| Código de retorno | Description |
|---|---|
| STATUS_SUCCESS | O retorno de chamada foi concluído com êxito. O processo de registro do ponto de extremidade continuará para a próxima fase. |
| Outros valores NTSTATUS | O retorno de chamada encontrou um erro. Toda a operação de registro do ponto de extremidade falhará e todas as alterações parciais serão revertidas. |
Observações
Esse retorno de chamada permite que os drivers executem operações personalizadas em pontos específicos durante o processo de registro do ponto de extremidade, permitindo a coordenação com o mecanismo de hot-swap.
Esse retorno de chamada é invocado por IoRegisterDriverProxyEndpoints durante o registro do ponto de extremidade e as operações de hot-swap. O retorno de chamada é executado em PASSIVE_LEVEL e oferece aos drivers a oportunidade de coordenar com o sistema DriverProxy durante fases críticas do processo de hot-swap.
O retorno de chamada é invocado em uma sequência específica durante o registro do ponto de extremidade:
Fase de pré-processamento: chamada antes de qualquer alternância de função de ponto de extremidade começar. Os drivers podem usar essa fase para se preparar para a próxima alteração, como:
- Aquisição de bloqueios específicos do driver
- Salvando o estado atual
- Notificando outros componentes do driver
- Preparando recursos necessários durante a opção
Fase paralisada do proxy: chamada enquanto todas as chamadas para pontos de extremidade registrados são bloqueadas. Durante essa fase, o sistema DriverProxy mantém o bloqueio de rundown e nenhuma nova chamada para funções de ponto de extremidade continuará. Esse é o momento mais seguro para executar operações que exigem acesso exclusivo aos recursos que podem ser acessados por funções de ponto de extremidade, como:
- Atualizando estruturas de dados compartilhadas
- Reconfigurando o hardware
- Modificando o estado do driver global
Fase pós-processamento: chamado após a conclusão da troca de função de ponto de extremidade e a operação normal foi retomada. Os drivers podem usar essa fase para operações de limpeza, como:
- Liberando bloqueios específicos do driver
- Atualizando o estado interno
- Notificando outros componentes de conclusão
- Registro em log ou acompanhamento de desempenho
O retorno de chamada deve retornar STATUS_SUCCESS para que o registro continue. Qualquer falha fará com que toda a operação falhe e reverta.
Durante a fase DriverProxyRegisterCallbackProxyStalled , todas as chamadas de ponto de extremidade são bloqueadas, portanto, o retorno de chamada deve executar operações rapidamente para minimizar a interrupção do sistema.
O retorno de chamada não deve executar operações que possam chamar de volta para a mesma extensão DriverProxy, pois isso pode causar deadlocks.
O retorno de chamada é opcional e pode ser NULL se nenhuma coordenação específica do driver for necessária durante o registro do ponto de extremidade.
Requirements
| Requirement | Value |
|---|---|
| da Plataforma de Destino | Universal |
| Header | wdm.h |
| IRQL | PASSIVE_LEVEL |
Consulte também
IoRegisterDriverProxyEndpoints
DRIVER_PROXY_REGISTER_CALLBACK_PHASE