IPinCount interface

The IPinCount interface provides a means for the miniport driver to monitor and manipulate its pin counts dynamically as pins are instantiated and closed. This interface is implemented in the miniport driver. To determine whether a miniport driver supports this interface, the port driver calls the miniport object's QueryInterface method with REFIID IID_IPinCount. IPinCount inherits from the IUnknown interface.

The following port drivers will use a miniport driver's IPinCount interface if the miniport driver implements it: WaveCyclic, WavePci, MIDI, DMus, and Topology.

IPinCount is an optional interface that a miniport driver can support if it needs to do either or both of the following:

  • Be explicitly notified of changes in kernel streaming pin counts.

  • Dynamically change its pin counts.

In the case of a wave audio device, for example, streams with different attributes (3D, stereo/mono, and so on) might also have different "weights" in terms of the amount of hardware resources they consume.

When opening a "heavyweight" stream, the miniport driver might need to decrement the available pin count by two instead of by one in order to more accurately indicate the number of pins that can be created with the remaining resources.

The process is reversed when a "heavyweight" stream is closed. The available pin count might increase by more than one in order to reflect the fact that two or more "lightweight" streams can be created from the newly freed resources.

If a miniport driver does not support the IPinCount interface, the port driver uses the statically initialized pin counts in the filter's PCPIN_DESCRIPTOR array.

The IPinCount interface provides a single method. The port driver that is bound to the miniport driver calls this method in response to a pin-count query.


The IPinCount interface has these methods.

Method Description
IPinCount::PinCount The PinCount method queries the miniport driver for its pin count.


Target Platform Windows
Header portcls.h