// acxrequest.h
EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST EvtAcxObjectProcessEventRequest;
VOID EvtAcxObjectProcessEventRequest(
ACXOBJECT Object,
ACXEVENT Event,
ACX_EVENT_VERB Verb,
ACXEVENTDATA EventData,
WDFREQUEST Request
)
{...}
View the official Windows Driver Kit DDI referenceNo description available.
The EVT_ACX_OBJECT_PROCESS_EVENT_REQUEST callback is used by the driver to handle event notifications.
ObjectAn ACX object associated with the request.
EventThe ACXEVENT object (described in Summary of ACX Objects). An AcxEvent object that represents an asynchronous notification available at the driver level. Events can be added to AcxCircuits, AcxStreams, AcxElements and AcxPins. Internally they are exposed as KS events to upper layers.
VerbA verb from the ACX_EVENT_VERB enumeration that describes the type of operation.
EventDataAn optional ACXEVENTDATA ACX object that provides information about the event.
RequestAn optional WDFREQUEST object associated with this operation.
For more information about working with WDF request objects, see Creating Framework Request Objects and wdfrequest.h header.
Example usage is shown below.
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);
}
}
Minimum ACX version: 1.0
For more information about ACX versions, see ACX version overview.