Previous Next

PCEVENT_REQUEST

The PCEVENT_REQUEST structure specifies an event request.

typedef struct _PCEVENT_REQUEST
{
  PUNKNOWN  MajorTarget;
  PUNKNOWN  MinorTarget;
  ULONG  Node;
  const PCEVENT_ITEM  *EventItem;
  PKSEVENT_ENTRY  EventEntry;
  ULONG  Verb;
  PIRP  Irp;
} PCEVENT_REQUEST, *PPCEVENT_REQUEST;

Members

MajorTarget
IUnknown pointer to the main miniport object. This member contains the UnknownMiniport pointer that the adapter driver previously passed to the IPort::Init method.
MinorTarget
IUnknown pointer to a stream object that is associated with the MajorTarget miniport object. This member contains the stream-object pointer that the port driver previously retrieved from the IMiniportXxx::NewStream method (for example, the IMiniportWaveCyclic::NewStream method's Stream parameter).
Node
Specifies a node ID. This member identifies the target node for the request. If the target is not a node, this member is set to ULONG(-1).
EventItem
Pointer to the PCEVENT_ITEM structure for this request
EventEntry
Pointer to the KSEVENT_ENTRY structure for this request
Verb
Specifies the type of event request. This member should be set to one of the values in the following table.
Value Meaning
PCEVENT_VERB_ADD Indicates that a client wants to enable the specified event. After validating the event and target information, the EventHandler routine adds the event by calling the IPortEvents::AddEventToEventList method.
PCEVENT_VERB_REMOVE Notifies the EventHandler that an event is being disabled and removed from the list.
PCEVENT_VERB_SUPPORT This request is a query for support. If the miniport driver supports the event for the target identified in the request, it should succeed this query. Otherwise, it should fail the query.
PCEVENT_VERB_NONE No action is needed.

Irp
Pointer to the IRP containing the event request

Comments

This is the structure that the port driver passes to the miniport driver's EventHandler routine. The PCEVENT_ITEM structure contains a function pointer to an event handler that takes a PCEVENT_REQUEST pointer as its only call parameter. The port driver allocates a PCEVENT_REQUEST structure, extracts the relevant information from the original event request (which the Irp member points to), and loads the information into this structure before calling the handler.

In WDM audio, the target of an event request can be a pin instance but not a filter instance. The target can also include a node ID.

The MajorTarget and MinorTarget members are IUnknown pointers to the main miniport object and an associated stream object, respectively. The event handler can query these objects for their miniport and stream interfaces.

For example, if the target for the event request is a pin instance on a WaveCyclic filter:

See Also

PCFILTER_NODE, PCEVENT_ITEM, KSEVENT_ENTRY, EventHandler, IPortEvents::AddEventToEventList