AcxStreamInitAssignAcxRequestPreprocessCallback-Funktion (acxstreams.h)
Die AcxStreamInitAssignAcxRequestPreprocessCallback-Funktion weist einem Stream ein AcxRequestPreprocessCallback zu.
Syntax
NTSTATUS AcxStreamInitAssignAcxRequestPreprocessCallback(
PACXSTREAM_INIT StreamInit,
EVT_ACX_OBJECT_PREPROCESS_REQUEST EvtObjectAcxRequestPreprocess,
ACXCONTEXT DriverContext,
ACX_REQUEST_TYPE RequestType,
const GUID *Set,
ULONG Id
);
Parameter
StreamInit
Definiert durch ein ACXSTREAM_INIT-Objekt, das zum Definieren der Datenstrominitialisierung verwendet wird. Weitere Informationen zu ACX-Objekten finden Sie unter ACX – Zusammenfassung von ACX-Objekten.
EvtObjectAcxRequestPreprocess
Ein EvtObjectAcxRequestPreprocess, der vom ACX-Framework aufgerufen wird, bevor eine interne Verarbeitung der Anforderung ausgeführt wird.
DriverContext
Ein optionales ACXCONTEXT-Objekt, das den aktuellen Treiberkontext darstellt.
RequestType
Die ACX_REQUEST_TYPE Enumeration , die zum Definieren des Anforderungstyps verwendet wird. Wenn AcxRequestTypeAny angegeben ist, wird EvtObjectAcxRequestProcess für alle Anforderungen aufgerufen.
Set
Ein Zeiger auf eine GUID, die ein KSPROPERTY-SET darstellt, z. B. KSPROPSETID_RtAudio. Wenn NULL oder GUID_NULL angegeben sind, wird EvtObjectAcxRequestPreprocess für jede Anforderung aufgerufen, die Mit RequestType übereinstimmt.
Id
Ein -Wert, der eine KSPROPERTY-ID darstellt. Beispielsweise eine A-KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT , die eine KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY-Struktur verwendet. Wenn AcxItemIdAny angegeben ist, wird EvtObjectAcxRequestPreprocess für jede Eigenschaft für das angegebene Set aufgerufen.
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
AcxStreamInitAssignAcxRequestPreprocessCallback gibt dem Treiber die Möglichkeit, alle Anforderungen zu verarbeiten, bevor ACX die Frameworkbehandlung ausführt. Der Treiber kann AcxStreamDispatchAcxRequest aufrufen, damit ACX die Anforderung verarbeiten kann. Wenn der Treiber die Anforderung selbst verarbeitet, kann er WdfRequestComplete oder WdfRequestCompleteWithInformation aufrufen, um die Anforderung abzuschließen.
Der Treiber muss entweder AcxStreamDispatchAcxRequest oder WdfRequestComplete (oder WdfRequestCompleteWithInformation) aufrufen. Der Treiber darf nicht mehr als eine dieser APIs mit der Anforderung aufrufen.
Der Treiber kann mehrere AcxRequestPreprocessCallback registrieren. Das ACX-Framework ruft die erste zugewiesene AcxRequestPreprocessCallback auf, die einer Anforderung entspricht.
Beispiel
Das Beispiel für die Verwendung ist unten dargestellt.
//
// Intercept register and unregister events properties.
//
status = AcxStreamInitAssignAcxRequestPreprocessCallback(
StreamInit,
EvtStreamRequestPreprocessRegisterNotificationEvent,
(ACXCONTEXT)Circuit,
AcxRequestTypeProperty,
&KSPROPSETID_RtAudio,
KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT);
//
// Intercept all other RtAudio properties - this must be after the above Assign call
// since the above Assign call is more specific.
//
status = AcxStreamInitAssignAcxRequestPreprocessCallback(
StreamInit,
EvtStreamRequestPreprocessRtAudio,
(ACXCONTEXT)Circuit,
AcxRequestTypeProperty,
&KSPROPSETID_RtAudio,
AcxItemIdAny);
ACX-Anforderungen
ACX-Mindestversion: 1.0
Weitere Informationen zu ACX-Versionen finden Sie unter ACX-Versionsübersicht.
Anforderungen
Anforderung | Wert |
---|---|
Header | acxstreams.h |
IRQL | PASSIVE_LEVEL |