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