RegisterServiceGroup method registers a service group with the DMus port driver.
- pServiceGroup [in]
Pointer to an IServiceGroup object. This is the service group that is to be registered.
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.