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
指定引脚 ID。 如果筛选器包含 n 个引脚工厂,则有效的引脚 ID 范围为 0 到 n-1。
[in, out] FilterNecessary
指定引脚工厂在筛选器可以执行 I/O 操作之前应实例化的最小引脚数。
[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 方法以获取指向筛选器描述符的指针,其中包括微型端口驱动程序的 pin 描述符数组 (请参阅 PCPIN_DESCRIPTOR) 。 此后,端口驱动程序访问引脚描述符以响应对引脚属性的查询。
如果微型端口驱动程序支持 IPinCount 接口,则端口驱动程序会调用 PinCount
,让微型端口驱动程序有机会在回复引脚属性请求之前更新引脚计数。 如果微型端口驱动程序不支持 IPinCount,则端口驱动程序仅使用引脚描述符数组中的静态引脚计数限制。
端口驱动程序在收到以下 KS 属性请求之一时调用 PinCount
方法:
KSPROPERTY_PIN_GLOBALCINSTANCES
KSPROPERTY_PIN_NECESSARYINSTANCES
每次创建新流时, PinCount
PortCls 也会调用 方法。
微型端口驱动程序不得显式导致从 方法内 PinCount
创建或销毁流。 微型端口驱动程序在此调用期间不会限制其可执行的操作。
在 PinCount
IRQL PASSIVE_LEVEL调用 方法。 此方法的代码必须驻留在分页内存中。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | portcls.h (包括 Portcls.h) |
IRQL | PASSIVE_LEVEL |
另请参阅
KSPROPERTY_PIN_GLOBALCINSTANCES