Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der EVT_ACX_CIRCUIT_PREPARE_HARDWARE Rückruf wird vom Treiber verwendet, um Funktionen hinzuzufügen, wenn sich ein ACXCIRCUIT in der Vorbereitungsphase befindet.
Syntax
EVT_ACX_CIRCUIT_PREPARE_HARDWARE EvtAcxCircuitPrepareHardware;
NTSTATUS EvtAcxCircuitPrepareHardware(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
WDFCMRESLIST ResourcesRaw,
WDFCMRESLIST ResourcesTranslated
)
{...}
Parameter
Device
Ein WDFDEVICE-Objekt (beschrieben in WDF - Zusammenfassung von Framework-Objekten), das dem angegebenen ACXCIRCUIT zugeordnet ist.
Circuit
Das ACXCIRCUIT -Objekt (in Zusammenfassung von ACX Objects) in der Vorbereitungsphase.
ResourcesRaw
Ein Handle zu einem Framework-Ressourcenlistenobjekt, das die rohen Hardwareressourcen identifiziert, die der Plug- und Play-Manager dem Gerät zugewiesen hat. Weitere Informationen zu Rohressourcen finden Sie unter raw and Translated Resources.
ResourcesTranslated
Ein Handle zu einem Framework-Ressourcenlistenobjekt, das die übersetzten Hardwareressourcen identifiziert, die der Plug- und Play-Manager dem Gerät zugewiesen hat.
Rückgabewert
Gibt STATUS_SUCCESS
zurück, wenn der Anruf erfolgreich war. Andernfalls wird ein entsprechender Fehlercode zurückgegeben. Weitere Informationen finden Sie unter Verwenden von NTSTATUS-Werten.
Bemerkungen
Um eine EvtAcxCircuitPrepareHardware-Rückruffunktion zu registrieren, muss ein Treiber die AcxCircuitInitSetAcxCircuitPnpPowerCallbacks-Methodeaufrufen.
Wenn der Treiber eine EvtAcxCircuitPrepareHardware-Rückruffunktion für eine ACXCIRCUIT registriert hat, ruft das ACX-Framework die Funktion auf, nachdem das WDF-Framework die EvtDevicePrepareHardware-Rückruffunktion des Treibers aufruft.
Die Rückruffunktion EvtAcxCircuitPrepareHardware greift mithilfe der empfangenen Handles "ResourcesRaw" und "ResourcesTranslated" auf die rohen und übersetzten Hardwareressourcen des Geräts zu. Die Rückruffunktion kann WdfCmResourceListGetCount- und WdfCmResourceListGetDescriptor- aufrufen, um die Ressourcenlisten zu durchlaufen. Diese Rückruffunktion kann die Ressourcenlisten nicht ändern.
Weitere Informationen zu Ressourcenlisten und der Reihenfolge, in der die Ressourcen angezeigt werden, finden Sie unter Raw and Translated Resources.
In der Regel führt die EvtAcxCircuitPrepareHardware-Rückruffunktion des Treibers bei Bedarf die folgenden Aktionen aus:
- Ordnet physische Speicheradressen virtuellen Adressen des ACXCIRCUIT zu, damit der Treiber auf arbeitsspeicher zugreifen kann, der dem Gerät zugewiesen ist.
- Optional kann die Rückruffunktion EvtAcxCircuitPrepareHardware des Treibers eine Arbeitsaufgabe in die Warteschlange stellen, um andere zeitintensive Konfigurationsaufgaben auszuführen. Die Verwendung einer Arbeitsaufgabe für solche Vorgänge kann dazu beitragen, dass die Startzeit Ihres Geräts die Startzeit des Systems nicht erhöht. Weitere Informationen finden Sie unter Verwenden von Framework-Arbeitselementen.
- In der Regel sollten alle anderen Hardwareinitialisierungsvorgänge, einschließlich des Ladens der Firmware, jedes Mal ausgeführt werden, wenn das Gerät in den Arbeitszustand (D0) wechselt und daher in der EvtDeviceD0Entry-Rückruffunktion des Treibers ausgeführt werden soll.
The ResourcesRaw and ResourcesTranslated handles that the EvtAcxCircuitPrepareHardware/EvtDevicePrepareHardware callback function receives valid until the driver's EvtDeviceReleaseHardware callback function returns.
Wenn der Treiber den EvtAcxCircuitPrepareHardware-Rückruf fehlschlägt, wird das ACXCIRCUIT-Objekt in den zustand "delete-pending" gesetzt, und zugeordnete ACXSTREAMS werden heruntergefahren.
Weitere Informationen zu Hardwareressourcen finden Sie unter Einführung in Hardwareressourcen.
Weitere Informationen dazu, wann das ACX- und WDF-Framework diese Rückruffunktionen aufruft, finden Sie unter PnP- und Power Management-Szenarien.
Weitere Informationen zu Treibern, die diese Rückruffunktion bereitstellen, finden Sie unter Unterstützen von PnP und Power Management im Funktionstreiber-.
Beispiel
Die Beispielverwendung wird unten gezeigt.
NTSTATUS
EvtCircuitPrepareHardware(
_In_ WDFDEVICE Device,
_In_ ACXCIRCUIT Circuit,
_In_ WDFCMRESLIST ResourcesRaw,
_In_ WDFCMRESLIST ResourcesTranslated
)
{
NTSTATUS status = STATUS_SUCCESS;
PCIRCUIT_CONTEXT circuitCtx = GetCircuitContext(Circuit);
CIpcEventReader * eventReader = circuitCtx->EventReader;
PASSIVE_CODE();
UNREFERENCED_PARAMETER(Device);
UNREFERENCED_PARAMETER(ResourcesRaw);
UNREFERENCED_PARAMETER(ResourcesTranslated);
//
// Enable 'remote' circuit notifications.
//
ASSERT(eventReader);
status = eventReader->EnableEvents();
if (!NT_SUCCESS(status))
{
DrvLogError(g_RecorderLog, FLAG_INIT,
"ACXCIRCUIT %p, CIpcEventReader::EnableEvents failed, %!STATUS!",
Circuit, status);
goto exit;
}
status = STATUS_SUCCESS;
exit:
return status;
}
ACX-Anforderungen
Mindestens ACX-Version: 1.0
Weitere Informationen zu ACX-Versionen finden Sie unter ACX-Versionsübersicht.
Anforderungen
Anforderung | Wert |
---|---|
Header- | acxcircuit.h |
IRQL- | PASSIVE_LEVEL |