Función AcxStreamInitAssignAcxRequestPreprocessCallback (acxstreams.h)
La función AcxStreamInitAssignAcxRequestPreprocessCallback asigna una acxRequestPreprocessCallback a una secuencia.
NTSTATUS AcxStreamInitAssignAcxRequestPreprocessCallback(
PACXSTREAM_INIT StreamInit,
EVT_ACX_OBJECT_PREPROCESS_REQUEST EvtObjectAcxRequestPreprocess,
ACXCONTEXT DriverContext,
ACX_REQUEST_TYPE RequestType,
const GUID *Set,
ULONG Id
);
StreamInit
Definido por un objeto ACXSTREAM_INIT, que se usa para definir la inicialización de la secuencia. Para obtener más información sobre los objetos ACX, vea ACX : resumen de objetos ACX.
EvtObjectAcxRequestPreprocess
Un evtObjectAcxRequestPreprocess al que llamará el marco ACX antes de realizar cualquier control interno de la solicitud.
DriverContext
Objeto ACXCONTEXT opcional que representa el contexto del controlador actual.
RequestType
Enumeración ACX_REQUEST_TYPE que se usa para definir el tipo de solicitud. Si se especifica AcxRequestTypeAny, se llamará a EvtObjectAcxRequestProcess para todas las solicitudes.
Set
Puntero a un GUID que representa un KSPROPERTY SET, por ejemplo , KSPROPSETID_RtAudio. Si se especifican NULL o GUID_NULL, se llamará a EvtObjectAcxRequestPreprocess para cada solicitud que coincida con RequestType.
Id
Valor que representa un identificador KSPROPERTY. Por ejemplo, un KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT que usa una estructura de KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY. Si se especifica AcxItemIdAny, se llamará a EvtObjectAcxRequestPreprocess para cada propiedad del conjunto especificado.
Devuelve STATUS_SUCCESS
si la llamada se realizó correctamente. De lo contrario, devuelve un código de error adecuado. Para obtener más información, vea Uso de valores NTSTATUS.
AcxStreamInitAssignAcxRequestPreprocessCallback ofrece al controlador la oportunidad de controlar las solicitudes antes de que ACX realice el control del marco. El controlador puede llamar a AcxStreamDispatchAcxRequest para permitir que ACX controle la solicitud. Si el controlador controla la propia solicitud, puede llamar a WdfRequestComplete o WdfRequestCompleteWithInformation para completar la solicitud.
El controlador debe llamar a AcxStreamDispatchAcxRequest o WdfRequestComplete (o WdfRequestCompleteWithInformation). El controlador no debe llamar a más de una de estas API con la solicitud.
El controlador puede registrar más de un AcxRequestPreprocessCallback. El marco de ACX llamará al primer acxRequestPreprocessCallback asignado que coincide con una solicitud.
A continuación se muestra un ejemplo de uso.
//
// 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);
Versión mínima de ACX: 1.0
Para obtener más información sobre las versiones de ACX, consulte Introducción a la versión de ACX.
Requisito | Valor |
---|---|
Header | acxstreams.h |
IRQL | PASSIVE_LEVEL |