Condividi tramite


Metodo IPinCount::P inCount (portcls.h)

Il metodo PinCount esegue una query sul driver miniport per il numero di pin.

Sintassi

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

Parametri

[in] PinId

Specifica l'ID pin. Se un filtro contiene n pin factory, gli ID pin validi sono compresi tra 0 e n-1.

[in, out] FilterNecessary

Specifica il numero minimo di pin di cui deve creare un'istanza prima che il filtro possa eseguire operazioni di I/O.

[in, out] FilterCurrent

Specifica il numero corrente di istanze di pin. Questo numero conta i pin di cui è già stata creata un'istanza nella factory dei pin nel filtro.

[in, out] FilterPossible

Specifica il numero massimo di pin di cui la factory di pin può creare un'istanza nel filtro. Impostare su KSINSTANCE_INDETERMINATE se non è presente alcun valore massimo.

[in, out] GlobalCurrent

Specifica il numero corrente di pin di cui è stata creata un'istanza nella factory del pin nel driver.

[in, out] GlobalPossible

Specifica il numero massimo di pin di cui la factory può creare un'istanza nel driver. Impostare su KSINSTANCE_INDETERMINATE se non è presente alcun valore massimo.

Valore restituito

Nessuno

Osservazioni

La chiamata PinCount ha due scopi:

  • Per comunicare al driver miniport i conteggi dei pin correnti.
  • Per dare al driver miniport l'opportunità di modificare i conteggi dei pin correnti.
FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrente GlobalPossible sono tutti parametri IN+OUT che puntano ai valori nella descrizione del filtro del driver miniport. Durante la chiamata PinCount, il driver miniport può esaminare questi valori e ha la possibilità di modificare i valori per indicare in modo più accurato il numero di pin aggiuntivi che possono essere creati dalle risorse rimanenti.

FilterCurrent e FilterPossible specificare i valori per filtro per la factory di pin specificata da PinId.

GlobalCurrent e GlobalPossible specificare i valori totali per la factory di pin in tutte le istanze del filtro.

I driver Miniport in genere non devono modificare il parametro FilterNecessary, ma è incluso per motivi di completezza.

Durante la chiamata IPort::Init, il driver della porta chiama il IMiniport::GetDescription metodo per ottenere un puntatore al descrittore di filtro, che include la matrice di descrittore pin del driver miniport (vedere PCPIN_DESCRIPTOR). Successivamente, il driver della porta accede ai descrittori pin per rispondere alle query per le proprietà dei pin.

Se il driver miniport supporta l'interfaccia IPinCount, il driver della porta chiama PinCount per fornire al driver miniport l'opportunità di aggiornare i conteggi dei pin prima di rispondere a una richiesta di proprietà pin. Se il driver miniport non supporta IPinCount, il driver della porta usa semplicemente i limiti del numero di pin statici nella matrice del descrittore pin.

Il driver della porta chiama il metodo PinCount quando riceve una delle richieste di proprietà KS seguenti:

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls chiama anche il metodo PinCount ogni volta che viene creato un nuovo flusso.

I driver Miniport non devono causare in modo esplicito la creazione o l'eliminazione definitiva dei flussi dall'interno del metodo PinCount. I driver miniport non sono altrimenti limitati in ciò che possono fare durante questa chiamata.

Il metodo PinCount viene chiamato in PASSIVE_LEVEL IRQL. Il codice per questo metodo deve risiedere nella memoria di paging.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione portcls.h (include Portcls.h)
IRQL PASSIVE_LEVEL

Vedere anche

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR