EVT_ACX_CIRCUIT_RELEASE_HARDWARE função de retorno de chamada (acxcircuit.h)
O EVT_ACX_CIRCUIT_RELEASE_HARDWARE retorno de chamada é usado pelo driver para adicionar funcionalidade quando um ACXCIRCUIT está na fase de hardware de lançamento.
Sintaxe
EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;
NTSTATUS EvtAcxCircuitReleaseHardware(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
WDFCMRESLIST ResourcesTranslated
)
{...}
Parâmetros
Device
Um objeto WDFDEVICE (descrito em WDF – Resumo dos objetos da estrutura) associado ao ACXCIRCUIT especificado.
Circuit
O objeto ACXCIRCUIT (descrito em Resumo de Objetos ACX) na fase de preparação do hardware.
ResourcesTranslated
Um identificador para um objeto de lista de recursos da estrutura WDFCMRESLIST que identifica os recursos de hardware traduzidos que o Gerenciador de Plug and Play atribuiu ao dispositivo. Para obter mais informações sobre recursos traduzidos, consulte recursos brutos e traduzidos.
Valor de retorno
Retorna STATUS_SUCCESS
se a chamada foi bem-sucedida. Caso contrário, ele retornará um código de erro apropriado. Para obter mais informações, consulte Usando valores NTSTATUS.
Observações
Para registrar uma função de retorno de chamada EvtAcxCircuitReleaseHardware, o driver deve chamar AcxCircuitInitSetAcxCircuitPnpPowerCallbacks.
Se um driver tiver registrado uma função de retorno de chamada EvtAcxCircuitReleaseHardware, a estrutura a chamará durante as seguintes transições:
- Rebalanceamento de recursos
- Remoção ordenada
- Remoção surpresa
A estrutura ACX chama a função de retorno de chamada EvtAcxCircuitReleaseHardware depois que a estrutura do WDF parou de enviar solicitações de E/S para o dispositivo, todas as interrupções atribuídas ao dispositivo foram desabilitadas e desconectadas e o dispositivo foi desativado.
A estrutura ACX chama a função de retorno de chamada EvtAcxCircuitReleaseHardware antes que a estrutura do WDF chame a função de retorno de chamada EvtDeviceReleaseHardware do driver.
Quando a estrutura chama o EvtAcxCircuitReleaseHardware, o PDO para o dispositivo ainda existe e pode ser consultado para obter informações do dispositivo que estão disponíveis no estado desligado, por exemplo, o estado de configuração de PCI.
Além disso, os recursos de hardware traduzidos fornecidos pela estrutura para EvtDeviceReleaseHardware ainda são atribuídos ao dispositivo. A principal finalidade dessa função de retorno de chamada é liberar esses recursos e, em particular, cancelar o mapeamento de todos os recursos de memória mapeados pela função de retorno de chamada EvtAcxCircuitPrepareHardware do driver. O driver também pode usar esse retorno de chamada para executar qualquer outra atividade de gerenciamento ACXCIRCUIT que possa ser necessária no estado de desligamento. Normalmente, todas as outras operações de desligamento de hardware devem ocorrer na função de retorno de chamada EvtDeviceD0Exit do driver.
A estrutura ACX sempre chama a função de retorno de chamada EvtAcxCircuitReleaseHardware do driver se a função de retorno de chamada EvtAcxCircuitPrepareHardware do driver tiver sido chamada, a menos que o EvtAcxCircuitPrepareHardware tenha retornado um código de falha.
Para obter mais informações sobre quando a estrutura ACX e WDF chamam essas funções de retorno de chamada, consulte cenários de PnP e gerenciamento de energia.
Para obter mais informações sobre recursos de hardware, consulte Introdução aos recursos de hardware.
Para obter mais informações sobre drivers que fornecem essa função de retorno de chamada, consulte Suporte ao PnP e ao Gerenciamento de Energia nodo Driver de Funções.
Exemplo
O uso de exemplo é mostrado abaixo.
EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtCircuitReleaseHardware;
NTSTATUS
EvtCircuitReleaseHardware(
_In_ WDFDEVICE Device,
_In_ ACXCIRCUIT Circuit,
_In_ WDFCMRESLIST ResourcesTranslated
)
{
PCIRCUIT_CONTEXT circuitCtx = GetCircuitContext(Circuit);
CIpcEventReader * eventReader = circuitCtx->EventReader;
PAGED_CODE();
UNREFERENCED_PARAMETER(Device);
UNREFERENCED_PARAMETER(ResourcesTranslated);
//
// Disable 'remote' circuit notifications.
//
ASSERT(eventReader);
eventReader->DisableEvents();
// This should always succeed.
return STATUS_SUCCESS;
}
Requisitos do ACX
versão mínima do ACX: 1.0
Para obter mais informações sobre versões do ACX, consulte visão geral da versão do ACX.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | acxcircuit.h |
IRQL | PASSIVE_LEVEL |