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 对象 () 摘要 中所述。 一个 AcxEvent 对象,表示在驱动程序级别可用的异步通知。 事件可以添加到 AcxCircuits、AcxStreams、AcxElements 和 AcxPins。 在内部,它们作为 KS 事件公开到上层。

Verb

描述操作类型的 ACX_EVENT_VERB 枚举中的谓词。

EventData

一个可选的 ACXEVENTDATA ACX 对象,提供有关事件的信息。

Request

与此操作关联的可选 WDFREQUEST 对象。

有关使用 WDF 请求对象的详细信息,请参阅 Creating Framework Request Objectswdfrequest.h header

返回值

备注

示例

示例用法如下所示。


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 版本概述

要求

要求
Header acxrequest.h
IRQL PASSIVE_LEVEL

另请参阅

  • [acxrequest.h header] (index.md)