Condividi tramite


EVT_ACX_CIRCUIT_RELEASE_HARDWARE funzione di callback (acxcircuit.h)

Il callback EVT_ACX_CIRCUIT_RELEASE_HARDWARE viene usato dal driver per aggiungere funzionalità quando un ACXCIRCUIT è nella fase hardware di rilascio.

Sintassi

EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;

NTSTATUS EvtAcxCircuitReleaseHardware(
  WDFDEVICE Device,
  ACXCIRCUIT Circuit,
  WDFCMRESLIST ResourcesTranslated
)
{...}

Parametri

Device

Oggetto WDFDEVICE (descritto in WDF - Riepilogo degli oggetti framework) associato all'oggetto ACXCIRCUIT specificato.

Circuit

L'oggetto ACXCIRCUIT (descritto in Riepilogo degli oggetti ACX) nella fase di preparazione dell'hardware.

ResourcesTranslated

Handle per un oggetto resource-list del framework WDFCMRESLIST che identifica le risorse hardware tradotte assegnate dal manager Plug and Play al dispositivo. Per altre informazioni sulle risorse tradotte, vedere Risorse non elaborate e tradotte.

Valore restituito

Restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, restituisce un codice di errore appropriato. Per altre informazioni, vedere Uso dei valori NTSTATUS.

Commenti

Per registrare una funzione di callback EvtAcxCircuitReleaseHardware, il driver deve chiamare AcxCircuitInitSetAcxCircuitPnpPowerCallbacks.

Se un driver ha registrato una funzione di callback EvtAcxCircuitReleaseHardware, il framework lo chiama durante le transizioni seguenti:

  • Ribilanciamento delle risorse
  • Rimozione ordinata
  • Rimozione a sorpresa

Il framework ACX chiama la funzione di callback EvtAcxCircuitReleaseHardware dopo che il framework WDF ha interrotto l'invio di richieste di I/O al dispositivo, eventuali interruzioni assegnate al dispositivo sono state disabilitate e disconnesse e il dispositivo è stato disattivato.

Il framework ACX chiama la funzione di callback EvtAcxCircuitReleaseHardware prima che il framework WDF chiami la funzione di callback EvtDeviceReleaseHardware del driver.

Quando il framework chiama EvtAcxCircuitReleaseHardware il PDO per il dispositivo esiste ancora e può essere sottoposto a query per le informazioni sul dispositivo disponibili nello stato spento, ad esempio lo stato di configurazione PCI.

Inoltre, le risorse hardware tradotte fornite dal framework a EvtDeviceReleaseHardware vengono ancora assegnate al dispositivo. Lo scopo principale di questa funzione di callback è rilasciare tali risorse e in particolare per annullare il mapping delle risorse di memoria mappate dalla funzione di callback EvtAcxCircuitPrepareHardware del driver. Il driver può anche usare questo callback per eseguire qualsiasi altra attività di gestione ACXCIRCUIT che potrebbe essere necessaria nello stato spento. In genere, tutte le altre operazioni di arresto hardware devono essere eseguite nella funzione di callback EvtDeviceD0Exit del driver.

Il framework ACX chiama sempre la funzione di callback EvtAcxCircuitReleaseHardware del driver se è stata chiamata la funzione di callback EvtAcxCircuitPrepareHardware del driver, a meno che evtAcxCircuitPrepareHardware non abbia restituito un codice di errore.

Per altre informazioni su quando il framework ACX e WDF chiamano queste funzioni di callback, vedere Scenari di risparmio energia e PnP.

Per altre informazioni sulle risorse hardware, vedere Introduzione alle risorse hardware.

Per altre informazioni sui driver che forniscono questa funzione di callback, vedere Supporto di PnP e risparmio energia nel driver di funzione.

Esempio

Di seguito è riportato un esempio di utilizzo.

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;
}

Requisiti di ACX

Versione minima di ACX: 1.0

Per altre informazioni sulle versioni ACX, vedere La panoramica della versione di ACX.

Requisiti

Requisito Valore
Intestazione acxcircuit.h
IRQL PASSIVE_LEVEL

Vedi anche