IPinCount::PinCount method (portcls.h)
The PinCount
method queries the miniport driver for its pin count.
Syntax
void PinCount(
[in] ULONG PinId,
[in, out] PULONG FilterNecessary,
[in, out] PULONG FilterCurrent,
[in, out] PULONG FilterPossible,
[in, out] PULONG GlobalCurrent,
[in, out] PULONG GlobalPossible
);
Parameters
[in] PinId
Specifies the pin ID. If a filter contains n pin factories, valid pin IDs range from 0 to n-1.
[in, out] FilterNecessary
Specifies the minimum number of pins that the pin factory should instantiate before the filter can perform I/O operations.
[in, out] FilterCurrent
Specifies the current number of pin instances. This number counts the pins that the pin factory has already instantiated on the filter.
[in, out] FilterPossible
Specifies the maximum number of pins that the pin factory can instantiate on the filter. Set to KSINSTANCE_INDETERMINATE if there is no maximum.
[in, out] GlobalCurrent
Specifies the current number of pins that the pin factory has instantiated on the driver.
[in, out] GlobalPossible
Specifies the maximum number of pins that the pin factory can instantiate on the driver. Set to KSINSTANCE_INDETERMINATE if there is no maximum.
Return value
None
Remarks
The PinCount
call has two purposes:
- To let the miniport driver know the current pin counts.
- To give the miniport driver an opportunity to alter the current pin counts.
FilterCurrent and FilterPossible specify the per-filter values for the pin factory specified by PinId.
GlobalCurrent and GlobalPossible specify the total values for the pin factory over all instances of the filter.
Miniport drivers typically do not need to change the FilterNecessary parameter, but it is included for the sake of completeness.
During the IPort::Init call, the port driver calls the miniport driver's IMiniport::GetDescription method to obtain a pointer to the filter descriptor, which includes the miniport driver's pin-descriptor array (see PCPIN_DESCRIPTOR). Thereafter, the port driver accesses the pin descriptors to respond to queries for pin properties.
If the miniport driver supports the IPinCount interface, the port driver calls PinCount
to give the miniport driver an opportunity to update the pin counts before replying to a pin-property request. If the miniport driver does not support IPinCount, the port driver simply uses the static pin-count limits in the pin-descriptor array.
The port driver calls the PinCount
method when it receives one of the following KS property requests:
KSPROPERTY_PIN_GLOBALCINSTANCES
KSPROPERTY_PIN_NECESSARYINSTANCES
PortCls also calls the PinCount
method each time a new stream is created.
Miniport drivers must not explicitly cause streams to be created or destroyed from within the PinCount
method. Miniport drivers are not otherwise restricted in what they can do during this call.
The PinCount
method is called at IRQL PASSIVE_LEVEL. The code for this method must reside in paged memory.
Requirements
Requirement | Value |
---|---|
Target Platform | Universal |
Header | portcls.h (include Portcls.h) |
IRQL | PASSIVE_LEVEL |
See also
KSPROPERTY_PIN_GLOBALCINSTANCES