//This was de Delphi omzetting van fltdefs.h, maar waar is de bron?
eenheid fltdefs;
////////////////////////////////////////////////////////////////////////////////
//
// Delphi omzetting van fltdefs.h voor gebruik met IPHLPAPI.DLL
//
////////////////////////////////////////////////////////////////////////////////
interface
gebruik
Vensters;
const
IPHLPAPI = „IPHLPAPI.DLL“;
// de serie van de Byte
type
TByteArray = Serie [0. Pred (MaxInt)] van Byte;
PByteArray = ^TByteArray;
// de types van Gegevens
type
FILTER_HANDLE = Wijzer;
PFILTER_HANDLE = ^FILTER_HANDLE;
INTERFACE_HANDLE = Wijzer;
PINTERFACE_HANDLE = ^INTERFACE_HANDLE;
// GlobalFilter opsomming
const
GF_FRAGMENTS = 2;
GF_STRONGHOST = 8;
GF_FRAGCACHE = 9;
type
GLOBAL_FILTER = Geheel;
PGLOBAL_FILTER = ^GLOBAL_FILTER;
// PFAddressType opsomming
const
PF_IPV4 = 0;
PF_IPV6 = 1;
type
PFADDRESSTYPE = Geheel;
PPFADDRESSTYPE = ^PFADDRESSTYPE;
// PFForwardAction opsomming
const
PF_ACTION_FORWARD = 0;
PF_ACTION_DROP = 1;
type
PFFORWARD_ACTION = Geheel;
PPFFORWARD_ACTION = ^PPFFORWARD_ACTION;
// PFFrameType opsomming
const
PFFT_FILTER = 1;
PFFT_FRAG = 2;
PFFT_SPOOF = 3;
type
PFFRAMETYPE = Geheel;
PPFFRAMETYPE = ^PFFRAMETYPE;
type
_PF_FILTER_DESCRIPTOR = pakte verslag in
dwFilterFlags: DWORD;
dwRule: DWORD;
pfatType: PFADDRESSTYPE;
SrcAddr: PByteArray;
SrcMask: PByteArray;
DstAddr: PByteArray;
DstMask: PByteArray;
dwProtocol: DWORD;
fLateBound: DWORD;
wSrcPort: Word;
wDstPort: Word;
wSrcPortHighRange: Word;
wDstPortHighRange: Word;
eind;
PF_FILTER_DESCRIPTOR = _PF_FILTER_DESCRIPTOR;
PPF_FILTER_DESCRIPTOR = ^PF_FILTER_DESCRIPTOR;
type
_PF_FILTER_STATS = pakte verslag in
dwNumPacketsFiltered: DWORD;
info: PF_FILTER_DESCRIPTOR;
eind;
PF_FILTER_STATS = _PF_FILTER_STATS;
PPF_FILTER_STATS = ^PF_FILTER_STATS;
type
_PF_INTERFACE_STATS = pakte verslag in
pvDriverContext: Wijzer;
dwFlags: DWORD;
dwInDrops: DWORD;
dwOutDrops: DWORD;
eaInAction: PFFORWARD_ACTION;
eaOutAction: PFFORWARD_ACTION;
dwNumInFilters: DWORD;
dwNumOutFilters: DWORD;
dwFrag: DWORD;
dwSpoof: DWORD;
dwReserved1: DWORD;
dwReserved2: DWORD;
liSyn: LARGE_INTEGER;
liTotalLogged: LARGE_INTEGER;
dwLostLogEntries: DWORD;
FilterInfo: Serie [0..0] van PF_FILTER_STATS;
eind;
PF_INTERFACE_STATS = _PF_INTERFACE_STATS;
PPF_INTERFACE_STATS = ^PF_INTERFACE_STATS;
type
_PF_LATEBIND_INFO = pakte verslag in
SrcAddr: PByteArray;
DstAddr: PByteArray;
Masker: PByteArray;
eind;
PF_LATEBIND_INFO = _PF_LATEBIND_INFO;
PPF_LATEBIND_INFO = ^PF_LATEBIND_INFO;
type
_PFLOGFRAME = pakte verslag in
Timestamp: LARGE_INTEGER;
pfeTypeOfFrame: PFFRAMETYPE;
dwTotalSizeUsed: DWORD;
dwFilterRule: DWORD;
wSizeOfAdditionalData: Word;
wSizeOfIpHeader: Word;
dwInterfaceName: DWORD;
dwIPIndex: DWORD;
bPacketData: Serie [0..0] van Byte;
eind;
PFLOGFRAME = _PFLOGFRAME;
PPFLOGFRAME = ^PFLOGFRAME;
const
FILTER_PROTO_ANY = $00;
FILTER_PROTO_ICMP = $01;
FILTER_PROTO_TCP = $06;
FILTER_PROTO_UDP = $11;
FILTER_TCPUDP_PORT_ANY = $00;
const
FILTER_ICMP_TYPE_ANY = $FF;
FILTER_ICMP_CODE_ANY = $FF;
const
FD_FLAGS_NOSYN = $01;
FD_FLAGS_ALLFLAGS = FD_FLAGS_NOSYN;
const
LB_SRC_ADDR_USE_SRCADDR_FLAG = $00000001;
LB_SRC_ADDR_USE_DSTADDR_FLAG = $00000002;
LB_DST_ADDR_USE_SRCADDR_FLAG = $00000004;
LB_DST_ADDR_USE_DSTADDR_FLAG = $00000008;
LB_SRC_MASK_LATE_FLAG = $00000010;
LB_DST_MASK_LATE_FLAG = $00000020;
const
ERROR_BASE = 23000;
PFERROR_NO_PF_INTERFACE = (ERROR_BASE + 0); nooit teruggekeerd //.
PFERROR_NO_FILTERS_GIVEN = (ERROR_BASE + 1);
PFERROR_BUFFER_TOO_SMALL = (ERROR_BASE + 2);
ERROR_IPV6_NOT_IMPLEMENTED = (ERROR_BASE + 3);
////////////////////////////////////////////////////////////////////////////////
//
// de functies van de Filter door IPHLPAPI worden uitgevoerd die
//
////////////////////////////////////////////////////////////////////////////////
functie PfCreateInterface (
dwName: DWORD;
inactiviteit: PFFORWARD_ACTION;
outAction: PFFORWARD_ACTION;
bUseLog: BOOL;
bMustBeUnique: BOOL;
var ppInterface: INTERFACE_HANDLE): DWORD;
stdcall; externe IPHLPAPI naam „_PfCreateInterface@24“;
functie PfDeleteInterface (
pInterface: INTERFACE_HANDLE): DWORD;
stdcall; externe IPHLPAPI naam „_PfDeleteInterface@4“;
functie PfAddFiltersToInterface (
ih: INTERFACE_HANDLE;
cInFilters: DWORD;
pfiltIn: PPF_FILTER_DESCRIPTOR;
cOutFilters: DWORD;
pfiltOut: PPF_FILTER_DESCRIPTOR;
pfHandle: PFILTER_HANDLE): DWORD;
stdcall; externe IPHLPAPI naam „_PfAddFiltersToInterface@24“;
functie PfRemoveFiltersFromInterface (
ih: INTERFACE_HANDLE;
cInFilters: DWORD;
pfiltIn: PPF_FILTER_DESCRIPTOR;
cOutFilters: DWORD;
pfiltOut: PPF_FILTER_DESCRIPTOR): DWORD;
stdcall; externe IPHLPAPI naam „_PfRemoveFiltersFromInterface@20“;
functie PfRemoveFilterHandles (
pInterface: INTERFACE_HANDLE;
cFilters: DWORD;
pvHandles: PFILTER_HANDLE): DWORD;
stdcall; externe IPHLPAPI naam „_PfRemoveFilterHandles@12“;
functie PfUnBindInterface (
pInterface: INTERFACE_HANDLE): DWORD;
stdcall; externe IPHLPAPI naam „_PfUnBindInterface@4“;
functie PfBindInterfaceToIndex (
pInterface: INTERFACE_HANDLE;
dwIndex: DWORD;
pfatLinkType: PFADDRESSTYPE;
LinkIPAddress: PByteArray): DWORD;
stdcall; externe IPHLPAPI naam „_PfBindInterfaceToIndex@16“;
functie PfBindInterfaceToIPAddress (
pInterface: INTERFACE_HANDLE;
pfatLinkType: PFADDRESSTYPE;
IPAddress: PByteArray): DWORD;
stdcall; externe IPHLPAPI naam „_PfBindInterfaceToIPAddress@12“;
functie PfRebindFilters (
pInterface: INTERFACE_HANDLE;
pLateBindInfo: PPF_LATEBIND_INFO): DWORD;
stdcall; externe IPHLPAPI naam „_PfRebindFilters@8“;
functie PfAddGlobalFilterToInterface (
pInterface: INTERFACE_HANDLE;
gfFilter: GLOBAL_FILTER): DWORD;
stdcall; externe IPHLPAPI naam „_PfAddGlobalFilterToInterface@8“;
functie PfRemoveGlobalFilterFromInterface (
pInterface: INTERFACE_HANDLE;
gfFilter: GLOBAL_FILTER): DWORD;
stdcall; externe IPHLPAPI naam „_PfRemoveGlobalFilterFromInterface@8“;
////////////////////////////////////////////////////////////////////////////////
//
Het Logboek APIs van //. Merk op dat er hoogstens één logboek is en het moet worden gecre�ërd
// vóór om het even welke interface die het gecre�ërd vereisen wordt. Er is geen manier om a te plaatsen
// logboek op een bestaande interface. Het logboek kan op om het even welk worden toegepast of elk van
// de interfaces.
//
///////////////////////////////////////////////////////////////////////
functie PfMakeLog (
hEvent: T-hendel): DWORD;
stdcall; externe IPHLPAPI naam „_PfMakeLog@4“;
functie PfSetLogBuffer (
pbBuffer: PByteArray;
dwSize: DWORD;
dwThreshold: DWORD;
dwEntries: DWORD;
pdwLoggedEntries: PDWORD;
pdwLostEntries: PDWORD;
pdwSizeUsed: PDWORD): DWORD;
stdcall; externe IPHLPAPI naam „_PfSetLogBuffer@28“;
functie PfDeleteLog (
): DWORD;
stdcall; externe IPHLPAPI naam „_PfDeleteLog@0“;
////////////////////////////////////////////////////////////////////////////////
//
// krijgt statistieken. De nota pdwBufferSize in een parameter IN/OUT. Als
// ERROR_INSUFFICIENT_BUFFER is teruggekeerd, zijn de gemeenschappelijke statistieken
beschikbaar // en de correcte bytetelling zijn binnen *pdwBufferSize. Als slechts
// de interfacestatistieken zijn nodig, verstrekken een buffer van grootte
// slechts PF_INTERFACE_STATS. Als de filterbeschrijvingen ook nodig zijn,
// levert dan een grote buffer, of gebruikt de teruggekeerde telling van de eerste vraag
// om een buffer van voldoende grootte toe te wijzen. Neem nota van dat voor een gedeelde interface,
// deze tweede vraag met ERROR_INSUFFICIENT_BUFFER kan ontbreken. Dit kan gebeuren
// als andere sharers filters in de tussentijd toevoegen. Dit zou niet moeten gebeuren voor
// een UNIEKE interface.
//
////////////////////////////////////////////////////////////////////////////////
functie PfGetInterfaceStatistics (
pInterface: INTERFACE_HANDLE;
ppfStats: PPF_INTERFACE_STATS;
pdwBufferSize: PDWORD;
fResetCounters: BOOL): DWORD;
stdcall; externe IPHLPAPI naam „_PfGetInterfaceStatistics@16“;
////////////////////////////////////////////////////////////////////////////////
//
// Test een pakket. Deze vraag zal het pakket tegen gegeven evalueren
// de interfaces en keren de het filtreren actie terug.
//
////////////////////////////////////////////////////////////////////////////////
functie PfTestPacket (
pInInterface: INTERFACE_HANDLE;
pOutInterface: INTERFACE_HANDLE;
cBytes: DWORD;
pbPacket: PByteArray;
ppAction: PPFFORWARD_ACTION): DWORD;
stdcall; externe IPHLPAPI naam „_PfTestPacket@20“;
implementatie
eind.
|