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 |