IPortDMus::RegisterServiceGroup method

The RegisterServiceGroup method registers a service group with the DMus port driver.

Syntax


void RegisterServiceGroup(
  [in] PSERVICEGROUP pServiceGroup 
);

Parameters

pServiceGroup [in]

Pointer to an IServiceGroup object. This is the service group that is to be registered.

Return value

None

Remarks

The miniport driver calls the RegisterServiceGroup method to register a service group (IServiceGroup object) with the port driver. The port driver can insert one or more of its service sinks (IServiceSink objects) into this service group. The miniport driver sends notification (by calling IPortDMus::Notify) to the service group each time an interrupt occurs. Upon receiving notification, the service group schedules a deferred procedure call (DPC). The DPC iterates through all of the service sinks in the service group and sends notification to each.

The miniport driver typically calls RegisterServiceSink during the execution of its IMiniportDMus::Init method. The purpose of this call is to register the service group with the port driver early enough to begin handling interrupts just as soon as they are enabled. Note that the service group that the Init method outputs is not available to the port driver until after the return from the Init method.

If the miniport driver calls RegisterServiceSink, the service group that the miniport driver passes to the RegisterServiceSink method should be the same one that the miniport driver outputs through its Init method.

A typical miniport driver has no further need to call RegisterServiceSink once the return from IMiniportDMus::Init has occurred.

See the DMusUART sample audio driver in the Microsoft Windows Driver Kit (WDK) for a code example that shows how the miniport driver calls RegisterServiceSink from within its IMiniportDMus::Init method.

The pServiceGroup parameter follows the reference-counting conventions for COM objects.

Requirements

Target platform

Header

Dmusicks.h (include Dmusicks.h)

IRQL

PASSIVE_LEVEL

See also

IServiceGroup
IServiceSink
IPortDMus::Notify
IMiniportDMus::Init

 

 

Send comments about this topic to Microsoft

Show: