Compartilhar via


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

O PinCount método 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.

Retornar valor

Nenhum

Comentários

A PinCount chamada tem duas finalidades:

  • Para 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, GlobalCurrent e GlobalPossible são todos os parâmetros IN+OUT que apontam para valores na descrição do filtro do driver de miniport. Durante a chamada PinCount , o driver de miniporto 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 especificam os valores por filtro para a fábrica de pinos especificada por PinId.

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

Os drivers de miniporto normalmente não precisam alterar o parâmetro FilterNecessary , mas estão incluídos para fins 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 pin 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 estáticos de contagem de pinos na matriz de descritor de pin.

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

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls também chama o PinCount método 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 PinCount método . Os drivers de miniporte não são restritos de outra forma no que podem fazer durante essa chamada.

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

Requisitos

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

Confira também

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR