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.
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_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
KSPROPERTY_PIN_GLOBALCINSTANCES