Función AcxStreamInitAssignAcxRequestPreprocessCallback (acxstreams.h)

La función AcxStreamInitAssignAcxRequestPreprocessCallback asigna una acxRequestPreprocessCallback a una secuencia.

Sintaxis

NTSTATUS AcxStreamInitAssignAcxRequestPreprocessCallback(
  PACXSTREAM_INIT                   StreamInit,
  EVT_ACX_OBJECT_PREPROCESS_REQUEST EvtObjectAcxRequestPreprocess,
  ACXCONTEXT                        DriverContext,
  ACX_REQUEST_TYPE                  RequestType,
  const GUID                        *Set,
  ULONG                             Id
);

Parámetros

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.

Valor devuelto

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.

Comentarios

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.

Ejemplo

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

Requisitos de ACX

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.

Requisitos

Requisito Valor
Header acxstreams.h
IRQL PASSIVE_LEVEL

Consulte también