Метод IPinCount::P inCount (portcls.h)
Метод PinCount
запрашивает мини-драйвер минипорта для счетчика закреплений.
Синтаксис
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
);
Параметры
[in] PinId
Указывает идентификатор пин-кода. Если фильтр содержит n фабрики закреплений, допустимые идентификаторы пин-кода от 0 до n-1.
[in, out] FilterNecessary
Указывает минимальное количество контактов, которые фабрика контактов должна создать экземпляр, прежде чем фильтр сможет выполнять операции ввода-вывода.
[in, out] FilterCurrent
Указывает текущее число экземпляров пин-кода. Это число подсчитывает пин-коды, которые фабрика контактов уже создала в фильтре.
[in, out] FilterPossible
Указывает максимальное количество контактов, которые фабрика контактов может создать в фильтре. Установите значение KSINSTANCE_INDETERMINATE, если нет максимального значения.
[in, out] GlobalCurrent
Указывает текущее количество контактов, созданных фабрикой пин-кода на драйвере.
[in, out] GlobalPossible
Указывает максимальное количество контактов, которые фабрика контактов может создать экземпляр на драйвере. Установите значение KSINSTANCE_INDETERMINATE, если нет максимального значения.
Возвращаемое значение
Никакой
Замечания
Вызов PinCount
имеет две цели:
- Чтобы сообщить минипорту драйверу знать текущие счетчики контактов.
- Чтобы предоставить минипорт-драйверу возможность изменить текущие счетчики пин-кода.
FilterCurrent и FilterPossible укажите значения для каждого фильтра для фабрики контактов, указанной PinId.
GlobalCurrent и GlobalPossible укажите общее значение фабрики закреплений для всех экземпляров фильтра.
Драйверы минипорта обычно не нуждаются в изменении параметра FilterNecessary, но он включен ради полноты.
Во время вызова IPort::Init драйвер порта вызывает метод IMiniport::GetDescription для получения указателя на дескриптор фильтра, который включает в себя массив пин-дескрипторов драйвера мини-порта (см. PCPIN_DESCRIPTOR). Затем драйвер портов обращается к дескрипторам пин-кода, чтобы ответить на запросы к свойствам пин-кода.
Если минипорт-драйвер поддерживает интерфейс IPinCount, драйвер портов вызывает PinCount
, чтобы предоставить драйверу минипорта возможность обновить счетчики контактов перед ответом на запрос пин-свойства. Если драйвер минипорта не поддерживает IPinCount, драйвер портов просто использует ограничения статического числа контактов в массиве пин-дескриптора.
Драйвер порта вызывает метод PinCount
при получении одного из следующих запросов свойств KS:
KSPROPERTY_PIN_GLOBALCINSTANCES
KSPROPERTY_PIN_NECESSARYINSTANCES
PortCls также вызывает метод PinCount
при каждом создании нового потока.
Драйверы минипорта не должны явно вызывать создание или уничтожение потоков из метода PinCount
. Мини-порты не ограничены в том, что они могут сделать во время этого вызова.
Метод PinCount
вызывается в IRQL PASSIVE_LEVEL. Код этого метода должен находиться в памяти страниц.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | portcls.h (include Portcls.h) |
IRQL | PASSIVE_LEVEL |
См. также
KSPROPERTY_PIN_GLOBALCINSTANCES