Skicka Ethernet-ramar

Windows TCP/IP-transport stöder en uppsättning krav för att skicka Ethernet-ramar. Alla drivrutiner (till exempel en mellanliggande MUX-drivrutin eller filterdrivrutin) som initierar eller ändrar skicka begäranden för överliggande drivrutiner måste uppfylla de krav som TCP/IP-transporten implementerar.

Observera Om någon drivrutin i en drivrutinsstacken inte följer dessa krav kan underliggande miniportdrivrutiner, MUX-mellanliggande drivrutiner och filterdrivrutiner bete sig oförutsägbart.

För Ethernet-sändningsbegäranden måste drivrutinerna ha stöd för följande krav:

  • Om en drivrutin initierar en sändningsbegäran ska drivrutinen allokera strukturen NET_BUFFER_LIST för Ethernet-ramarna. NetBufferListInfo-medlemmen i varje NET_BUFFER_LIST-struktur måste innehålla OOB-data (out-of-band) som krävs för den specifika användningen. OOB-data gäller för alla NET_BUFFER strukturer som är associerade med en NET_BUFFER_LIST struktur.

  • Om en drivrutin initierar en sändningsbegäran bör drivrutinen allokera en eller flera NET_BUFFER-strukturer för Ethernet frames och länka dessa strukturer till NET_BUFFER_LIST-strukturen. Varje NET_BUFFER struktur som är länkad till en NET_BUFFER_LIST struktur beskriver en enda Ethernet-ram. Drivrutinen kan länka flera NET_BUFFER_LIST strukturer i en sändningsbegäran.

  • Alla NET_BUFFER strukturer som är associerade med en NET_BUFFER_LIST struktur måste ha samma Ethernet-ramtyp och IP-protokollversion (IPv4 eller IPv6).

  • Alla NET_BUFFER strukturer som är associerade med en NET_BUFFER_LIST struktur måste ha samma MAC-adresser för källa och mål.

  • Om en drivrutin skickar TCP- eller UDP-ramar måste alla NET_BUFFER strukturer som är associerade med en NET_BUFFER_LIST struktur associeras med samma TCP- eller UDP-anslutning. Observera Under förutsättning av följande krav kan överförda Ethernet-ramar delas upp. Det vill: flera minnesbeskrivningslistor (MDL: er) kan associeras med en NET_BUFFER struktur i en sändningsbegäran.

  • Dela inte MAC-huvudet i överförings-Ethernet-ramen över flera MDL:er. Behandla, om den finns, flaggan Virtual LAN (VLAN) (eller Priority) som en del av MAC-huvudet. Den här flaggan måste därför finnas i samma MDL som resten av MAC-huvudet.

  • Om en drivrutin ändrar länkarna i MDL-kedjan i en NET_BUFFER struktur eller NET_BUFFER-kedjan i en NET_BUFFER_LIST struktur måste drivrutinen återställa länkarna till den ursprungliga konfigurationen innan den returnerar ägarskapet för NET_BUFFER_LIST till en överdrivande drivrutin. Drivrutiner krävs dock inte för att återställa länkarna mellan NET_BUFFER_LIST strukturer.