struttura KSTOPOLOGY_CONNECTION (ks.h)

La struttura KSTOPOLOGY_CONNECTION descrive una singola connessione percorso dati all'interno di un filtro di streaming del kernel.

PCCONNECTION_DESCRIPTOR è un alias per KSTOPOLOGY_CONNECTION.

Sintassi

typedef struct {
  ULONG FromNode;
  ULONG FromNodePin;
  ULONG ToNode;
  ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;

Members

FromNode

Specifica l'ID nodo del nodo sulla fine upstream della connessione. Se questa fine della connessione è un pin esterno nel filtro, non un pin logico in un nodo, m imposta questo membro sul valore null node-ID, KSFILTER_NODE.

FromNodePin

Specifica l'ID pin per l'estremità upstream della connessione. Se **FromNode **è KSFILTER_NODE, il pin in questa estremità della connessione è un pin esterno nel filtro. In caso contrario, il pin di questa estremità è un pin logico in un nodo interno.

ToNode

Specifica l'ID nodo del nodo sulla fine downstream della connessione. Se questa fine della connessione è un pin esterno nel filtro, non un pin logico in un nodo, impostare questo membro sul valore NULL node-ID KSFILTER_NODE.

ToNodePin

Specifica l'ID pin per la fine downstream della connessione. Se ToNode è KSFILTER_NODE, il pin in questa estremità della connessione è un pin esterno nel filtro. In caso contrario, il pin di questa estremità è un pin logico in un nodo interno.

Commenti

KSTOPOLOGY_CONNECTION rappresenta una singola connessione all'interno di un filtro, tra pin esterni, nodi interni o un pin esterno e un nodo interno.

Un driver di streaming restituisce una matrice di strutture KSTOPOLOGY_CONNECTION in risposta a una richiesta get-property KSPROPERTY_TOPOLOGY_CONNECTIONS .

Quando rappresenta una connessione tra due pin esterni, sia FromNode che ToNode devono essere impostati su KSFILTER_NODE e FromNodePin e ToNodePin devono essere l'ID del tipo di pin dei rispettivi pin. Per una descrizione degli ID di tipo pin, vedere KSPROPSETID_Pin .

In caso contrario, FromNodePin o ToNodePin rappresentano un pin logico in ingresso o in uscita per la connessione. I numeri di pin logici vengono usati esclusivamente per descrivere una connessione tra nodi; non esistono al di fuori della proprietà KSPROPERTY_TOPOLOGY_CONNECTIONS.

PCCONNECTION_DESCRIPTOR

Il nome della struttura PCCONNECTION_DESCRIPTOR è un alias per KSTOPOLOGY_CONNECTION. PCCONNECTION_DESCRIPTOR per IMiniport::GetDescription() è una descrizione di una connessione di nodo nella topologia del filtro implementato dal miniport. Viene definito come segue nell'intestazione portcls.h:

typedef KSTOPOLOGY_CONNECTION PCCONNECTION_DESCRIPTOR, *PPCCONNECTION_DESCRIPTOR;

Si noti che per le descrizioni dei parametri, il PCFILTER_NODE viene usato con PCCONNECTION_DESCRIPTOR invece di KSFILTER_NODE.

La struttura PCCONNECTION_DESCRIPTOR specifica una singola connessione all'interno di un filtro. La connessione può essere una delle seguenti:

  • Connessione tra due nodi interni

  • Una connessione tra un nodo interno e un pin sul filtro

  • Una connessione tra due puntini sul filtro

L'ultimo tipo di connessione si verifica quando un pin di input su un filtro trasmette i dati direttamente a un pin di output sullo stesso filtro.

Un driver dell'adattatore usa una matrice di strutture per specificare la topologia interna di un filtro.

Il flusso di dati passa dall'endpoint FromNode alla fine di ToNode della connessione.

Per usare la struttura PCCONNECTION_DESCRIPTOR , il writer di driver assegna i pin "logici" ai nodi all'interno del filtro. Questi "pin" sono punti di connessione nei nodi e sono analoghi ai pin esterni usati dal filtro per connettersi ad altri filtri. Tuttavia, i pin logici nei nodi vengono usati esclusivamente per specificare le connessioni all'interno del filtro.

Un nodo semplice con un singolo input e un singolo output in genere numera i relativi pin di input e output uno e zero, rispettivamente. Per convenzione, questa numerazione si basa sulla direzione del flusso IRP anziché sul flusso di dati.

I nodi più complessi potrebbero richiedere ID pin standardizzati per consentire ai client di determinare più facilmente l'assegnazione di funzioni a pin specifici. Ad esempio, il nodo KSNODETYPE_ACOUSTIC_ECHO_CANCEL usa ID standardizzati per i quattro pin.

Quando il pin in un'estremità di una connessione è un pin di input o di output nel filtro anziché un pin logico in un nodo, impostare il membro FromNode o ToNode (a seconda della fine della connessione specificata) sul valore di ID nodo Null, PCFILTER_NODE.

Evitare di confondere i pin logici, usati esclusivamente per descrivere i punti di connessione nei nodi all'interno di un filtro, con i pin esterni usati dai filtri per connettersi ad altri filtri. I pin logici vengono usati raramente all'esterno della struttura PCCONNECTION_DESCRIPTOR . In questo documento il termine pin fa riferimento a un pin su un filtro KS anziché a un pin logico in un nodo, se non diversamente specificato.

Il metodo IMiniport::GetDescription restituisce una struttura PCFILTER_DESCRIPTOR che contiene un puntatore a una matrice di PCCONNECTION_DESCRIPTOR .

Per un semplice esempio di codice che mostra come viene usata la struttura PCCONNECTION_DESCRIPTOR , vedere Esposizione della topologia filtro.

Requisiti

Requisito Valore
Intestazione ks.h (include Ks.h)

Vedi anche

BdaPropertyTemplateConnections

KSPROPERTY_TOPOLOGY_CONNECTIONS

KSPROPSETID_Pin

KSPROPSETID_Topology