Partager via


AcxStreamInitAssignAcxRequestPreprocessCallback, fonction (acxstreams.h)

La fonction AcxStreamInitAssignAcxRequestPreprocessCallback affecte un 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, qui est 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

Le ACX_REQUEST_TYPE énumération qui est utilisé 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 de KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY. Si AcxItemIdAny est spécifié, EvtObjectAcxRequestPreprocess est appelé pour chaque propriété du set spécifié.

Valeur retournée

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

Remarques

AcxStreamInitAssignAcxRequestPreprocessCallback permet au pilote de gérer toutes les requêtes avant qu’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 demande.

Le pilote doit appeler AcxStreamDispatchAcxRequest ou WdfRequestComplete (ou WdfRequestCompleteWithInformation). Le pilote ne doit pas appeler plusieurs de ces API avec la demande.

Le pilote peut inscrire plusieurs AcxRequestPreprocessCallback. L’infrastructure ACX appelle le premier AcxRequestPreprocessCallback attribué qui correspond à une demande.

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 ACX minimale : 1.0

Pour plus d’informations sur les versions d’ACX, consultez Vue d’ensemble des versions d’ACX.

Configuration requise

Condition requise Valeur
En-tête acxstreams.h
IRQL PASSIVE_LEVEL

Voir aussi