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 |