Partager via


AcxStreamInitAssignAcxRequestPreprocessCallback, fonction (acxstreams.h)

La fonction AcxStreamInitAssignAcxRequestPreprocessCallback affecte un objet AcxRequestPreprocessCallback à un flux.

Syntaxe

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

Paramètres

StreamInit

Défini par un objet ACXSTREAM_INIT, utilisé pour définir l’initialisation du flux. Pour plus d’informations sur les objets ACX, consultez ACX - Résumé des objets ACX.

EvtObjectAcxRequestPreprocess

EvtObjectAcxRequestPreprocess qui sera appelé par l’infrastructure ACX avant toute gestion interne de la requête.

DriverContext

Objet ACXCONTEXT facultatif qui représente le contexte de pilote actuel.

RequestType

Énumération ACX_REQUEST_TYPE utilisée pour définir le type de requête. Si AcxRequestTypeAny est spécifié, EvtObjectAcxRequestProcess est appelé pour toutes les requêtes.

Set

Pointeur vers un GUID qui représente un KSPROPERTY SET, par exemple KSPROPSETID_RtAudio. Si null ou GUID_NULL sont spécifiés, EvtObjectAcxRequestPreprocess est appelé pour chaque requête qui correspond à RequestType

Id

Valeur qui représente un ID KSPROPERTY. Par exemple, un KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT A qui utilise une structure KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY. Si AcxItemIdAny est spécifié, EvtObjectAcxRequestPreprocess est appelé pour chaque propriété pour l’ensemble spécifié.

Valeur de retour

Retourne STATUS_SUCCESS si l’appel a réussi. Sinon, elle retourne un code d’erreur approprié. Pour plus d’informations, consultez Using NTSTATUS Values.

Remarques

AcxStreamInitAssignAcxRequestPreprocessCallback donne au pilote la possibilité de gérer les requêtes avant que ACX n’effectue la gestion de l’infrastructure. Le pilote peut appeler AcxStreamDispatchAcxRequest pour permettre à ACX de gérer la requête. Si le pilote gère la requête elle-même, il peut appeler WdfRequestComplete ou WdfRequestCompleteWithInformation pour terminer la requête.

Le pilote doit appeler AcxStreamDispatchAcxRequest ou WdfRequestComplete (ou WdfRequestCompleteWithInformation). Le pilote ne doit pas appeler plus d’une de ces API avec la requête.

Le pilote peut inscrire plusieurs acxRequestPreprocessCallback. L’infrastructure ACX appellera le premier acxRequestPreprocessCallback affecté qui correspond à une requête.

Exemple

L’exemple d’utilisation est illustré ci-dessous.

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

Configuration requise pour ACX

version minimale d’ACX : 1.0

Pour plus d’informations sur les versions ACX, consultez vue d’ensemble de la version ACX.

Exigences

Exigence Valeur
d’en-tête acxstreams.h
IRQL PASSIVE_LEVEL

Voir aussi