Condividi tramite


Invio di pacchetti da un driver Miniport della rete WAN CoNDIS

Un driver di livello superiore chiama NdisCoSendNetBufferLists per inviare pacchetti di dati di rete a un driver miniport della rete WAN CoNDIS sottostante in un elenco di strutture NET_BUFFER_LIST. Il driver intermedio NDISWAN inoltra tali strutture NET_BUFFER_LIST dal driver di livello superiore. NDISWAN riconfeziona le strutture prima di inviarle. NDISWAN inoltra i pacchetti nelle nuove strutture di NET_BUFFER_LIST.

Il driver intermedio NDISWAN chiama NDIS per inoltrare le nuove strutture NET_BUFFER_LIST, dopodiché NDIS chiama la funzione MiniportCoSendNetBufferLists del driver miniport WAN .

Il driver miniport WAN CoNDIS possiede sia le strutture NET_BUFFER_LIST che i dati associati finché la trasmissione non è completata. Il driver miniport deve chiamare successivamente NdisMSendNetBufferListsComplete per completare la richiesta di invio.

Una chiamata di completamento non indica necessariamente che i dati di rete sono stati trasmessi; tuttavia, ad eccezione delle schede di interfaccia di rete intelligenti, i dati di rete in genere sono stati trasmessi. Tuttavia, una chiamata di completamento indica che il driver miniport è pronto a rilasciare la proprietà delle strutture NET_BUFFER_LIST.

Dopo che il driver miniport WAN CoNDIS riceve la struttura NET_BUFFER_LIST che contiene un pacchetto di dati di rete, deve inviare il pacchetto su una connessione virtuale attiva (VC).

Un driver miniport CoNDIS WAN specifica il numero di pacchetti in attesa che può avere per VC nel membro MaxSendWindow della struttura NDIS_WAN_CO_INFO. Il driver miniport fornisce questa struttura quando il driver miniport risponde alla richiesta di OID_WAN_CO_GET_INFO dal driver di protocollo. Tuttavia, il driver miniport può regolare questo numero in modo dinamico e in base al VC usando il membro SendWindow nella struttura WAN_CO_LINKPARAMS. Il driver miniport passa questa struttura alla funzione NdisMCoIndicateStatusEx . NDISWAN usa il valore SendWindow corrente come limite per gli invii in sospeso. Il driver miniport può impostare il valore del membro SendWindow su zero per specificare che non può gestire alcun pacchetto in sospeso. Ovvero, se il membro SendWindow è impostato su zero, la finestra di invio viene chiusa e NDISWAN sospende l'invio di pacchetti per il particolare VC.

I pacchetti inviati da un driver miniport WAN contengono semplici frame HDLC PPP se è impostato il frame PPP. Per l'incapsulamento SLIP o RAS, i pacchetti contengono solo la porzione di dati senza alcuna struttura. Per altre informazioni sul frame di pacchetti WAN, vedere WAN Packet Frame.

Il driver miniport WAN non deve tentare di fornire loopback software o loopback in modalità promiscua. Entrambi questi tipi di loopback sono completamente supportati dal driver NDISWAN.