Share via


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 de Objetos de 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 WDFCMRESLIST framework resource-list 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.

Retornar valor

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.

Comentários

Para registrar uma função de retorno de chamada EvtAcxCircuitReleaseHardware, seu 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 quanto a informações de dispositivo disponíveis no estado desligado, por exemplo, estado de configuração de PCI.

Além disso, os recursos de hardware traduzidos que a estrutura fornece 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 gerenciamento de energia e PnP.

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 a PnP e Gerenciamento de Energia no 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

Confira também