Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een bijschriftstuurprogramma kan de volgende WFP-functies aanroepen om pended of gewijzigde pakketgegevens in de TCP/IP-stack te injecteren. De toepasselijke lagen waaruit gegevens kunnen worden geïnjecteerd, samen met mogelijke bestemmingen, worden vermeld in de volgende tabel.
| Injection function | Applicable layer | Destination |
|---|---|---|
network layer |
het pad naar het doorsturen van gegevens |
|
network layer |
het gegevenspad ontvangen |
|
network layer |
het gegevenspad verzenden |
|
pakketgegevens van de transport-, datagramgegevens-, ICMP-fout- of ALE-lagen |
het gegevenspad ontvangen |
|
pakketgegevens van de transport-, datagramgegevens-, ICMP-fout- of ALE-lagen |
het gegevenspad verzenden |
|
TCP-gegevenssegmenten |
een gegevensstroom |
In addition, the FwpsQueryPacketInjectionState0 function is used to inspect the injection history of packet data.
Kruislaaginjectie is ingeschakeld als het bijschrift alle benodigde informatie kan leveren die vereist is voor de injectiefunctie en de netbufferlijst de indeling heeft die door de injectiefunctie wordt verwacht. For example, a callout can capture a packet at the forward path, modify its destination address to that of the local computer, and call FwpsInjectTransportReceiveAsync0 to redirect the packet into the local computer's TCP/IP stack.
Behalve de stroominjectie (TCP-gegevens), injecteerde binnenkomende pakketten opnieuw vanaf de 'onderkant' van de stack- en WFP-lagen, terwijl uitgaande pakketten opnieuw worden geïnjecteerd vanaf de 'bovenkant' van de stack- en WFP-lagen. Een UDP-pakket dat is geïnjecteerd vanuit de binnenkomende datagramgegevenslaag, voert bijvoorbeeld de stack opnieuw in en doorkruist de netwerklaag, de transportlaag, de ALE-ontvangst- of acceptlaag (optioneel) en gaat terug naar de datagramgegevenslaag. Een ander UDP-pakket dat is geïnjecteerd vanuit de uitgaande netwerklaag, voert de stack opnieuw in en doorkruist de ALE (optioneel), datagramgegevens en transportlagen en terug naar de netwerklaag.
FwpsInjectTransportReceiveAsync0 automatically bypasses IPsec processing for the reinjected packet because it had previously gone through IPsec verification.
Een pakket dat door een WFP-bijschriftstuurprogramma wordt geïnjecteerd, wordt opnieuw aangegeven in het bijschrift, behalve in de gevallen waarin wijziging van het pakket ervoor zorgt dat deze de oorspronkelijke filtervoorwaarden mist. WFP provides the FwpsQueryPacketInjectionState0 function for callouts to query whether the packet was injected (or injected earlier) by the callout. Om oneindige lussen te voorkomen, moeten bijschriften zelfingevoerde pakketten toestaan.
Bijschriften moeten de controlesom van de IP- of transportlaag aanpassen, of beide, nadat ze een IP-pakket hebben gewijzigd. Een bijschrift kan de controlesom instellen op 0 voor UDP via IPv4-pakketten. Een bijschrift kan de volgende logica gebruiken om compatibel te zijn met offload van transportlaagcontrolesom en om de volledige controlesom versus pseudo-controlesomberekeningen dienovereenkomstig aan te passen:
NDIS_TCP_IP_CHECKSUM_PACKET_INFO ChecksumInfo;
ChecksumInfo.Value =
(ULONG) (ULONG_PTR)NET_BUFFER_LIST_INFO(
NetBufferList,TcpIpChecksumNetBufferListInfo);
If ChecksumInfo.Transmit.NdisPacketTcpChecksum is TRUE, the TCP send operation will be offloaded. If ChecksumInfo.Transmit.NdisPacketUdpChecksum is TRUE, the UDP send operation will be offloaded.
In Windows Vista met Service Pack 1 (SP1) en Windows Server 2008, als inMetaValues-headerIncludeHeaderLength> groter is dan 0, is het uitgaande pakket een RAW-verzendherinjectie die een IP-header bevat. Als u RAW-verzendrejecties wilt uitvoeren met een IP-header voor Windows Vista met SP1 en Windows Server 2008, moet u het gekloonde pakket terugtrekken op basis van de hoeveelheid inMetaValues-headerIncludeHeaderLength> en de inMetaValues-headerIncludeHeader> over de zojuist uitgebreide ruimte kopiëren. Then, use FwpsInjectTransportSendAsync0 with the net buffer list for the packet and leave the FWPS_TRANSPORT_SEND_PARAMS0 parameter set to NULL. Zie Retreat en Advance Operations voor meer informatie over retraitebewerkingen voor netbufferlijsten.
Note For raw send operations, the net buffer list must contain only a single net buffer. Als uw netbufferlijst meer dan één netbuffer bevat, moet u de netbufferlijst converteren naar een reeks lijsten met netbuffers en elke in de reeks moet één nettobuffer bevatten. For more information about net buffer list management, see NET_BUFFER Architecture.