EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST回呼函式 (acxrequest.h)

驅動程式會使用 EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST 回呼來處理事件通知。

語法

EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST EvtAcxObjectProcessEventRequest;

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

參數

Object

與要求相關聯的 ACX 物件。

Event

ACXEVENT 物件 (ACX 物件 摘要) 中所述。 AcxEvent 物件,代表驅動程式層級可用的異步通知。 事件可以新增至 AcxCircuits、AcxStreams、AcxElements 和 AcxPins。 在內部,它們會公開為 KS 事件給上層。

Verb

描述作業類型的 ACX_EVENT_VERB 列舉動詞。

EventData

選擇性的 ACXEVENTDATA ACX 物件,可提供事件的相關信息。

Request

與這項作業相關聯的選擇性 WDFREQUEST 物件。

如需使用 WDF 要求對象的詳細資訊,請參閱 建立 Framework 要求物件wdfrequest.h 標頭

傳回值

備註

範例

範例使用方式如下所示。


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

ACX 需求

最小 ACX 版本: 1.0

如需 ACX 版本的詳細資訊,請參閱 ACX 版本概觀

規格需求

需求
標頭 acxrequest.h
IRQL PASSIVE_LEVEL

另請參閱

  • [acxrequest.h 標頭] (index.md)