EVT_ACX_CIRCUIT_RELEASE_HARDWARE Rückruffunktion (acxcircuit.h)

Der EVT_ACX_CIRCUIT_RELEASE_HARDWARE Rückruf wird vom Treiber verwendet, um Funktionen hinzuzufügen, wenn sich ein ACXCIRCUIT in der Releasehardwarephase befindet.

Syntax

EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;

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

Parameter

Device

Ein WDFDEVICE-Objekt (beschrieben in WDF – Zusammenfassung von Frameworkobjekten), das dem angegebenen ACXCIRCUIT zugeordnet ist.

Circuit

Das ACXCIRCUIT-Objekt (beschrieben unter Zusammenfassung von ACX-Objekten) in der Vorbereitungsphase der Hardware.

ResourcesTranslated

Ein Handle für ein WDFCMRESLIST-Frameworkressourcenlistenobjekt, das die übersetzten Hardwareressourcen identifiziert, die der Plug & Play-Manager dem Gerät zugewiesen hat. Weitere Informationen zu übersetzten Ressourcen finden Sie unter Unformatierte und übersetzte Ressourcen.

Rückgabewert

Gibt zurück STATUS_SUCCESS , wenn der Aufruf erfolgreich war. Andernfalls wird ein geeigneter Fehlercode zurückgegeben. Weitere Informationen finden Sie unter Verwenden von NTSTATUS-Werten.

Hinweise

Um eine EvtAcxCircuitReleaseHardware-Rückruffunktion zu registrieren, muss Ihr Treiber AcxCircuitInitSetAcxCircuitPnpPowerCallbacks aufrufen.

Wenn ein Treiber eine EvtAcxCircuitReleaseHardware-Rückruffunktion registriert hat, ruft das Framework sie während der folgenden Übergänge auf:

  • Ressourcenausgleich
  • Geordnetes Entfernen
  • Überraschungsentfernung

Das ACX-Framework ruft die EvtAcxCircuitReleaseHardware-Rückruffunktion auf, nachdem das WDF-Framework das Senden von E/A-Anforderungen an das Gerät beendet hat, alle dem Gerät zugewiesenen Interrupts deaktiviert und getrennt wurden und das Gerät ausgeschaltet wurde.

Das ACX-Framework ruft die Rückruffunktion EvtAcxCircuitReleaseHardware auf, bevor das WDF-Framework die Rückruffunktion EvtDeviceReleaseHardware des Treibers aufruft.

Wenn das Framework EvtAcxCircuitReleaseHardware aufruft, ist die PDO für das Gerät weiterhin vorhanden und kann nach Geräteinformationen abgefragt werden, die im ausgeschalteten Zustand verfügbar sind, z. B. PCI-Konfigurationszustand.

Darüber hinaus werden die übersetzten Hardwareressourcen, die das Framework für EvtDeviceReleaseHardware bereitstellt, weiterhin dem Gerät zugewiesen. Der Hauptzweck dieser Rückruffunktion besteht darin, diese Ressourcen freizugeben und insbesondere die Zuordnung aller Speicherressourcen aufzuheben, die von der EvtAcxCircuitPrepareHardware-Rückruffunktion des Treibers zugeordnet wurden. Der Treiber kann diesen Rückruf auch verwenden, um andere ACXCIRCUIT-Verwaltungsaktivitäten auszuführen, die möglicherweise im heruntergefahrenen Zustand erforderlich sind. In der Regel sollten alle anderen Vorgänge zum Herunterfahren der Hardware in der Rückruffunktion EvtDeviceD0Exit des Treibers erfolgen.

Das ACX-Framework ruft immer die EvtAcxCircuitReleaseHardware-Rückruffunktion des Treibers auf, wenn die EvtAcxCircuitPrepareHardware-Rückruffunktion des Treibers aufgerufen wurde, es sei denn, evtAcxCircuitPrepareHardware hat einen Fehlercode zurückgegeben.

Weitere Informationen dazu, wann diese Rückruffunktionen vom ACX- und WDF-Framework aufgerufen werden, finden Sie unter PnP- und Energieverwaltungsszenarien.

Weitere Informationen zu Hardwareressourcen finden Sie unter Einführung in Hardwareressourcen.

Weitere Informationen zu Treibern, die diese Rückruffunktion bereitstellen, finden Sie unter Unterstützen der PnP- und Energieverwaltung im Funktionstreiber.

Beispiel

Das Beispiel für die Verwendung ist unten dargestellt.

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

ACX-Anforderungen

ACX-Mindestversion: 1.0

Weitere Informationen zu ACX-Versionen finden Sie unter ACX-Versionsübersicht.

Anforderungen

Anforderung Wert
Header acxcircuit.h
IRQL PASSIVE_LEVEL

Weitere Informationen