EVT_ACX_FACTORY_CIRCUIT_CREATE_CIRCUIT Rückruffunktion (acxcircuit.h)
Der EVT_ACX_FACTORY_CIRCUIT_CREATE_CIRCUIT Rückruf wird von ACX aufgerufen, wenn der Treiber ein ACXCIRCUIT-Objekt mit der angegebenen Konfiguration erstellen muss.
Syntax
EVT_ACX_FACTORY_CIRCUIT_CREATE_CIRCUIT EvtAcxFactoryCircuitCreateCircuit;
NTSTATUS EvtAcxFactoryCircuitCreateCircuit(
WDFDEVICE Parent,
WDFDEVICE Device,
ACXFACTORYCIRCUIT Factory,
PACX_FACTORY_CIRCUIT_ADD_CIRCUIT Config,
PACXCIRCUIT_INIT CircuitInit
)
{...}
Parameter
Parent
Ein WDFDEVICE-Objekt (beschrieben in Summary of Framework Objects), das das übergeordnete Element des WDFDEVICE ist, auf das im Device-Objekt verwiesen wird.
Device
Ein WDFDEVICE-Objekt (beschrieben unter Zusammenfassung der Frameworkobjekte), das im EVT_ACX_FACTORY_CIRCUIT_CREATE_CIRCUITDEVICE-Rückruf erstellt wurde. Dieses Gerät wird dem neuen ACXCIRCUIT zugeordnet.
Factory
Das vorhandene ACXFACTORYCIRCUIT-Objekt der Circuit Factory. Weitere Informationen zu ACX-Objekten finden Sie unter Zusammenfassung von ACX-Objekten.
Config
Eine ACX_FACTORY_CIRCUIT_ADD_CIRCUIT Struktur, die die Konfiguration für den neuen ACXCIRCUIT definiert.
CircuitInit
ACXCIRCUIT_INIT ist ein undurchsichtiges Objekt, das für die Verbindungsinitialisierung verwendet wird. Verwenden Sie AcxCircuitInitAllocate , um die ACXCIRCUIT_INIT-Struktur zu initialisieren.
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
Ein AcxFactoryCircuit stellt ein Factoryobjekt dar, das bei Bedarf eine ACXCIRCUIT-Instanz erstellen kann.
Ein Treiber kann einen oder mehrere ACXFACTORYCIRCUIT bei ACX registrieren. Durch diese Aktion wird ACX informiert, dass der Treiber ACXCIRCUITs eines klar definierten Typs erstellen kann.
ACX ruft die ACXFACTORYCIRCUIT-Rückrufe auf, wenn erkannt wird, dass ein Audiopfad eines der werkseitig bereitgestellten ACXCIRCUITs erfordert.
Ein AcxFactoryCircuit verfügt über eine dedizierte WDF-Warteschlange. Weitere Informationen zu WDF-Warteschlangen finden Sie unter Framework-Warteschlangenobjekte.
Beispiel
Das Beispiel für die Verwendung ist unten dargestellt.
EVT_ACX_FACTORY_CIRCUIT_CREATE_CIRCUIT Dsp_EvtAcxFactoryCircuitCreateCircuit;
NTSTATUS
Dsp_EvtAcxFactoryCircuitCreateCircuit(
_In_ WDFDEVICE Parent,
_In_ WDFDEVICE Device,
_In_ ACXFACTORYCIRCUIT Factory,
_In_ PACX_FACTORY_CIRCUIT_ADD_CIRCUIT CircuitConfig,
_In_ PACXCIRCUIT_INIT CircuitInit
)
{
ACXOBJECTBAG circuitProperties;
PAGED_CODE();
NTSTATUS status = STATUS_SUCCESS;
// Create object bag from the CompositeProperties
ACX_OBJECTBAG_CONFIG propConfig;
ACX_OBJECTBAG_CONFIG_INIT(&propConfig);
propConfig.Handle = CircuitConfig->CircuitProperties;
propConfig.Flags |= AcxObjectBagConfigOpenWithHandle;
WDF_OBJECT_ATTRIBUTES attributes;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
RETURN_NTSTATUS_IF_FAILED(AcxObjectBagOpen(&attributes, &propConfig, &circuitProperties));
auto cleanupPropConfig = scope_exit([=]() {
WdfObjectDelete(circuitProperties);
}
);
// Retrieve the intended Circuit ID from the object bag
GUID circuitId;
RETURN_NTSTATUS_IF_FAILED(Dsp_DetermineCircuitGuidFromVendorProperties(circuitProperties, &circuitId));
AcxCircuitInitSetComponentId(CircuitInit, &circuitId);
// Call the appropriate CreateCircuitDevice based on the Circuit ID
if (IsEqualGUID(circuitId, DSP_CIRCUIT_MICROPHONE_GUID) || IsEqualGUID(circuitId, DSP_CIRCUIT_UNIVERSALJACK_CAPTURE_GUID))
{
return DspC_EvtAcxFactoryCircuitCreateCircuit(Parent, Device, Factory, CircuitConfig, CircuitInit);
}
else if (IsEqualGUID(circuitId, DSP_CIRCUIT_SPEAKER_GUID) || IsEqualGUID(circuitId, DSP_CIRCUIT_UNIVERSALJACK_RENDER_GUID))
{
return DspR_EvtAcxFactoryCircuitCreateCircuit(Parent, Device, Factory, CircuitConfig, CircuitInit);
}
status = STATUS_NOT_SUPPORTED;
return status;
}
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für