Partager via


EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST fonction de rappel (acxrequest.h)

Le rappel EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST est utilisé par le pilote pour gérer les notifications d’événements.

Syntaxe

EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST EvtAcxObjectProcessEventRequest;

void EvtAcxObjectProcessEventRequest(
  ACXOBJECT Object,
  ACXEVENT Event,
  ACX_EVENT_VERB Verb,
  ACXEVENTDATA EventData,
  WDFREQUEST Request
)
{...}

Paramètres

Object

Objet ACX associé à la demande.

Event

Objet ACXEVENT (décrit dans Résumé des objets ACX). Objet AcxEvent qui représente une notification asynchrone disponible au niveau du pilote. Les événements peuvent être ajoutés à AcxCircuits, AcxStreams, AcxElements et AcxPins. En interne, ils sont exposés en tant qu’événements KS aux couches supérieures.

Verb

Verbe de l’énumération ACX_EVENT_VERB qui décrit le type d’opération.

EventData

Objet ACXEVENTDATA facultatif qui fournit des informations sur l’événement.

Request

Objet WDFREQUEST facultatif associé à cette opération.

Pour plus d’informations sur l’utilisation des objets de requête WDF, consultez Création d’objets de requête d’infrastructure et de l’en-tête wdfrequest.h.

Valeur de retour

None

Remarques

Exemple

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


EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST CodecR_EvtMuteElementChangeEventCallback;

...


VOID
CodecR_EvtMuteElementChangeEventCallback(
    _In_        ACXOBJECT       Object,
    _In_        ACXEVENT        Event,
    _In_        ACX_EVENT_VERB  Verb,
    _In_opt_    ACXEVENTDATA    EventData,
    _In_opt_    WDFREQUEST      Request
    )
{
    NTSTATUS                    status = STATUS_NOT_SUPPORTED;
    PCODEC_MUTE_ELEMENT_CONTEXT muteCtx = NULL;
    CODEC_MUTE_EVENT_CONTEXT *  muteEventCtx;
    
    PAGED_CODE();
    
    muteCtx = GetCodecMuteElementContext(Object);
    ASSERT(muteCtx);

    // for testing.
    muteEventCtx = GetCodecMuteEventContext(Event);
    ASSERT(muteEventCtx);

    //
    // Take the correct action: enable/disable.
    //
    switch (Verb)
    {
    case AcxEventVerbEnable:
        AcxEventAddEventData(Event, EventData);
        WdfTimerStart(muteEventCtx->Timer, WDF_REL_TIMEOUT_IN_MS(10));
        status = STATUS_SUCCESS;
        break;
        
    case AcxEventVerbBasicSupport:
        status = STATUS_SUCCESS;
        break;
        
    case AcxEventVerbDisable:
        ASSERT(Request == NULL);
        //
        // Verb is AcxEventVerbDisable;
        // It is ok to generate events even if no one is listening.
        // If present, ACX completes the request associated with this action.
        //
        break;
        
    default:
        ASSERT(FALSE);
        status = STATUS_INVALID_DEVICE_REQUEST;
        break;
    }

    if (Request != NULL)
    {
        WdfRequestComplete(Request, status); 
    }
}

Configuration requise d’ACX

Version minimale d’ACX : 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 acxrequest.h
IRQL PASSIVE_LEVEL

Voir aussi

  • [en-tête acxrequest.h] (index.md)