Es sieht so aus:
Delphi-Quellcode:
ZeroMemory(@ipFlt.ipFltIn, SizeOf(ipFlt.ipFltIn));
ipFlt.ipFltIn.dwFilterFlags := 0;
ipFlt.ipFltIn.dwRule := 0;
ipFlt.ipFltIn.pfatType := PF_IPV4;
ipFlt.ipFltIn.fLateBound := 0;
ipFlt.ipFltIn.dwProtocol := FILTER_PROTO_TCP;
ipFlt.ipFltIn.wDstPort := FILTER_TCPUDP_PORT_ANY;
ipFlt.ipFltIn.wDstPortHighRange := FILTER_TCPUDP_PORT_ANY;
ipFlt.ipFltIn.DstAddr := @ipMy;
ipFlt.ipFltIn.DstMask := @ipMyMask;
ipFlt.ipFltIn.wSrcPort := 3389;
ipFlt.ipFltIn.wSrcPortHighRange := 3389;
ipFlt.ipFltIn.SrcAddr := @ipOther;
ipFlt.ipFltIn.SrcMask := @ipOtherMask;
// Ausgehende Pakete
ZeroMemory(@ipFlt.ipFltOut, SizeOf(ipFlt.ipFltOut));
ipFlt.ipFltOut.dwFilterFlags := 0;
ipFlt.ipFltOut.dwRule := 0;
ipFlt.ipFltOut.pfatType := PF_IPV4;
ipFlt.ipFltOut.fLateBound := 0;
ipFlt.ipFltOut.dwProtocol := FILTER_PROTO_TCP;
ipFlt.ipFltOut.wDstPort := 3389;
ipFlt.ipFltOut.wDstPortHighRange := 3389;
ipFlt.ipFltOut.DstAddr := @ipOther;
ipFlt.ipFltOut.DstMask := @ipOtherMask;
ipFlt.ipFltOut.wSrcPort := FILTER_TCPUDP_PORT_ANY;
ipFlt.ipFltOut.wSrcPortHighRange := FILTER_TCPUDP_PORT_ANY;
ipFlt.ipFltOut.SrcAddr := @ipMy;
ipFlt.ipFltOut.SrcMask := @ipMyMask;
PfAddFiltersToInterface(Handle_Interface, 1, @ipFlt.ipFltIn, 1, @ipFlt.ipFltOut, nil);
ich denke @ipOther (0.0.0.0) steht für "Any", oder?