Metodo IPinCount::P inCount (portcls.h)

Il PinCount metodo 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 vanno da 0 a 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 del pin. Questo numero conta i pin di cui è già stata creata un'istanza nella factory del pin nel filtro.

[in, out] FilterPossible

Specifica il numero massimo di pin che 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 di pin può creare un'istanza nel driver. Impostare su KSINSTANCE_INDETERMINATE se non è presente alcun valore massimo.

Valore restituito

nessuno

Osservazioni

La PinCount chiamata ha due scopi:

  • Per fare in modo che il driver miniport sappia i conteggi dei pin correnti.
  • Per dare al driver miniport un'opportunità per modificare i conteggi dei pin correnti.
FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent e GlobalPossible sono tutti parametri IN+OUT che puntano ai valori nella descrizione del filtro del driver miniport. Durante la chiamata a 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 specificano i valori per filtro per la factory di pin specificata da PinId.

GlobalCurrent e GlobalPossible specificano i valori totali per la factory di pin su 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 metodo IMiniport::GetDescription del driver miniport 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 PinCount metodo quando riceve una delle richieste di proprietà KS seguenti:

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls chiama anche il PinCount metodo 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 PinCount metodo. I driver miniport non sono altrimenti limitati in ciò che possono fare durante questa chiamata.

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

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione portcls.h (include Portcls.h)
IRQL PASSIVE_LEVEL

Vedi anche

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR