Partilhar via


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

O método PinCount consulta o driver de miniporto para sua contagem de pinos.

Sintaxe

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 a ID do pino. Se um filtro contiver n fábricas de pinos, as IDs de pino válidas variam de 0 a n-1.

[in, out] FilterNecessary

Especifica o número mínimo de pinos que a fábrica de pinos deve instanciar antes que o filtro possa executar operações de E/S.

[in, out] FilterCurrent

Especifica o número atual de instâncias de pino. Esse número conta os pinos que a fábrica de pinos já instanciou no filtro.

[in, out] FilterPossible

Especifica o número máximo de pinos que a fábrica de pinos pode instanciar no filtro. Defina como KSINSTANCE_INDETERMINATE se não houver no máximo.

[in, out] GlobalCurrent

Especifica o número atual de pinos que a fábrica de pinos instanciou no driver.

[in, out] GlobalPossible

Especifica o número máximo de pinos que a fábrica de pinos pode instanciar no driver. Defina como KSINSTANCE_INDETERMINATE se não houver no máximo.

Valor de retorno

Nenhum

Observações

A chamada PinCount tem duas finalidades:

  • Para permitir que o driver de miniporte saiba as contagens de pinos atuais.
  • Para dar ao driver de miniporto a oportunidade de alterar as contagens de pinos atuais.
FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrente GlobalPossible são todos parâmetros IN+OUT que apontam para valores na descrição do filtro do driver de miniporto. Durante a chamada PinCount, o driver de miniport pode examinar esses valores e tem a opção de editar os valores para indicar com mais precisão quantos pinos adicionais podem ser criados com base nos recursos restantes.

FilterCurrent e FilterPossible especificar os valores por filtro para a fábrica de pinos especificada por PinId.

GlobalCurrent e GlobalPossible especificar os valores totais para a fábrica de pinos em todas as instâncias do filtro.

Normalmente, os drivers de miniporto não precisam alterar o parâmetro FilterNecessary, mas ele é incluído por uma questão de integridade.

Durante a chamada IPort::Init, o driver de porta chama o método IMiniport::GetDescription do driver de miniport para obter um ponteiro para o descritor de filtro, que inclui a matriz pin-descriptor do driver de miniport (consulte PCPIN_DESCRIPTOR). Depois disso, o driver de porta acessa os descritores de pino para responder a consultas para propriedades de pino.

Se o driver de miniporto der suporte à interface IPinCount, o driver de porta chamará PinCount para dar ao driver de miniporto a oportunidade de atualizar as contagens de pinos antes de responder a uma solicitação de propriedade pin. Se o driver de miniporto não der suporte a IPinCount, o driver de porta simplesmente usará os limites de contagem de pinos estáticos na matriz de descritor de pin.

O driver de porta chama o método PinCount quando recebe uma das seguintes solicitações de propriedade KS:

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls também chama o método PinCount sempre que um novo fluxo é criado.

Os drivers de miniporto não devem explicitamente fazer com que os fluxos sejam criados ou destruídos de dentro do método PinCount. Os drivers de miniporto não são restritos de outra forma no que podem fazer durante essa chamada.

O método PinCount é chamado na PASSIVE_LEVEL IRQL. O código para esse método deve residir na memória paginada.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho portcls.h (inclua Portcls.h)
IRQL PASSIVE_LEVEL

Consulte também

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR