Share via


Método IPinCount::P inCount (portcls.h)

El PinCount método consulta el controlador de miniporte para su recuento de patillas.

Sintaxis

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
);

Parámetros

[in] PinId

Especifica el identificador de patilla. Si un filtro contiene n generadores de patillas, los identificadores de patilla válidos van de 0 a n-1.

[in, out] FilterNecessary

Especifica el número mínimo de patillas que el generador de patillas debe crear una instancia antes de que el filtro pueda realizar operaciones de E/S.

[in, out] FilterCurrent

Especifica el número actual de instancias de patilla. Este número cuenta las patillas de las que ya se ha creado una instancia del generador de patillas en el filtro.

[in, out] FilterPossible

Especifica el número máximo de patillas que el generador de patillas puede crear instancias en el filtro. Establezca en KSINSTANCE_INDETERMINATE si no hay ningún máximo.

[in, out] GlobalCurrent

Especifica el número actual de patillas en las que se ha creado una instancia del generador de patillas en el controlador.

[in, out] GlobalPossible

Especifica el número máximo de patillas que el generador de patillas puede crear instancias en el controlador. Establezca en KSINSTANCE_INDETERMINATE si no hay ningún máximo.

Valor devuelto

None

Observaciones

La PinCount llamada tiene dos propósitos:

  • Para que el controlador de minipuerto conozca los recuentos de patillas actuales.
  • Para dar al controlador de minipuerto una oportunidad para modificar los recuentos de patillas actuales.
FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent y GlobalPossible son todos los parámetros IN+OUT que apuntan a valores en la descripción del filtro del controlador de minipuerto. Durante la llamada a PinCount , el controlador de minipuerto puede examinar estos valores y tiene la opción de editar los valores para indicar con mayor precisión cuántas patillas adicionales se pueden crear a partir de los recursos restantes.

FilterCurrent y FilterPossible especifican los valores por filtro para el generador de patillas especificado por PinId.

GlobalCurrent y GlobalPossible especifican los valores totales del generador de patillas en todas las instancias del filtro.

Normalmente, los controladores de minipuerto no necesitan cambiar el parámetro FilterNecessary , pero se incluye por motivos de integridad.

Durante la llamada A IPort::Init , el controlador de puerto llama al método IMiniport::GetDescription del controlador de miniporte para obtener un puntero al descriptor de filtro, que incluye la matriz de descriptores de anclaje del controlador de minipuerto (vea PCPIN_DESCRIPTOR). A partir de entonces, el controlador de puerto accede a los descriptores de anclaje para responder a las consultas de las propiedades del pin.

Si el controlador de minipuerto admite la interfaz IPinCount , el controlador de puerto llama PinCount a para dar al controlador de miniporte la oportunidad de actualizar los recuentos de patillas antes de responder a una solicitud de propiedad pin. Si el controlador de minipuerto no admite IPinCount, el controlador de puerto simplemente usa los límites estáticos de número de patillas en la matriz de descriptores de patillas.

El controlador de puerto llama al PinCount método cuando recibe una de las siguientes solicitudes de propiedad KS:

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls también llama al PinCount método cada vez que se crea una nueva secuencia.

Los controladores de minipuerto no deben hacer explícitamente que las secuencias se creen o destruyan desde dentro del PinCount método . Los controladores de minipuerto no están restringidos en lo que pueden hacer durante esta llamada.

Se PinCount llama al método en irQL PASSIVE_LEVEL. El código de este método debe residir en la memoria paginada.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado portcls.h (incluir Portcls.h)
IRQL PASSIVE_LEVEL

Consulte también

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR