Invio di frame Ethernet
Il trasporto TCP/IP di Windows supporta un set di requisiti per l'invio di frame Ethernet. Qualsiasi driver (ad esempio, un driver intermedio MUX o un driver di filtro) che ha origine richieste di invio o modifica le richieste di invio di driver overlying deve supportare i requisiti implementati dal trasporto TCP/IP.
Nota Se qualsiasi driver in uno stack di driver non segue questi requisiti, i driver miniport sottostanti, i driver intermedi MUX e i driver di filtro potrebbero comportarsi imprevedibili.
Per le richieste di invio Ethernet, i driver devono supportare questi requisiti:
Se un driver ha origine una richiesta di invio, il driver deve allocare una struttura NET_BUFFER_LIST per i frame Ethernet. Il membro NetBufferListInfo in ogni struttura NET_BUFFER_LIST deve includere i dati fuori banda (OOB) necessari per l'uso specifico. I dati OOB si applicano a tutte le strutture NET_BUFFER associate a una struttura NET_BUFFER_LIST.
Se un driver ha origine una richiesta di invio, il driver deve allocare una o più strutture NET_BUFFER per i frame Ethernet e collegare queste strutture alla struttura NET_BUFFER_LIST. Ogni struttura NET_BUFFER collegata a una struttura NET_BUFFER_LIST descrive un singolo frame Ethernet. Il driver può incatenare più strutture NET_BUFFER_LIST in una richiesta di invio.
Tutte le strutture NET_BUFFER associate a una struttura NET_BUFFER_LIST devono avere lo stesso tipo di frame Ethernet e la versione del protocollo IP (IPv4 o IPv6).
Tutte le strutture NET_BUFFER associate a una struttura NET_BUFFER_LIST devono avere gli stessi indirizzi MAC di origine e destinazione.
Se un driver invia frame TCP o UDP, tutte le strutture NET_BUFFER associate a una struttura NET_BUFFER_LIST devono essere associate alla stessa connessione TCP o UDP. Nota Soggetto ai requisiti seguenti, i frame Ethernet trasmessi possono essere suddivisi. Vale a dire, è possibile associare più elenchi di descrittori di memoria (MDLs) a una struttura NET_BUFFER in una richiesta di invio.
Non suddividere l'intestazione MAC del frame Ethernet di trasmissione tra più MDL. Trattare il flag VLAN (Virtual LAN) (o Priority), se presente, come parte dell'intestazione MAC. Pertanto, questo flag deve essere nello stesso MDL del resto dell'intestazione MAC.
Se un driver modifica i collegamenti nella catena MDL in una struttura NET_BUFFER o nella catena di NET_BUFFER in una struttura NET_BUFFER_LIST, il driver deve ripristinare i collegamenti alla configurazione originale prima di restituire la proprietà del NET_BUFFER_LIST a un driver overlying. Tuttavia, i driver non sono necessari per ripristinare i collegamenti tra strutture NET_BUFFER_LIST.