Mercurial > games > semicongine
diff fuhtark_test/include/winapi/netmon.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/netmon.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,3187 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error This stub requires an updated version of <rpcndr.h> +#endif + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif + +#ifndef __netmon_h__ +#define __netmon_h__ + +#ifndef __IDelaydC_FWD_DEFINED__ +#define __IDelaydC_FWD_DEFINED__ +typedef struct IDelaydC IDelaydC; +#endif + +#ifndef __IRTC_FWD_DEFINED__ +#define __IRTC_FWD_DEFINED__ +typedef struct IRTC IRTC; +#endif + +#ifndef __IStats_FWD_DEFINED__ +#define __IStats_FWD_DEFINED__ +typedef struct IStats IStats; +#endif + +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef __MIDL_user_allocate_free_DEFINED__ +#define __MIDL_user_allocate_free_DEFINED__ + void *__RPC_API MIDL_user_allocate(size_t); + void __RPC_API MIDL_user_free(void *); +#endif + +#include <winerror.h> +#include <winerror.h> + +#pragma pack(1) + +#ifdef I_X86_ +#pragma pack(1) +#else +#pragma pack() +#endif + + typedef BYTE *LPBYTE; + typedef const void *HBLOB; + +#define MAC_TYPE_UNKNOWN (0) +#define MAC_TYPE_ETHERNET (1) +#define MAC_TYPE_TOKENRING (2) +#define MAC_TYPE_FDDI (3) +#define MAC_TYPE_ATM (4) +#define MAC_TYPE_1394 (5) +#define MACHINE_NAME_LENGTH (16) +#define USER_NAME_LENGTH (32) +#define ADAPTER_COMMENT_LENGTH (32) +#define CONNECTION_FLAGS_WANT_CONVERSATION_STATS (0x1) + + typedef struct _TRANSMITSTATS { + DWORD TotalFramesSent; + DWORD TotalBytesSent; + DWORD TotalTransmitErrors; + } TRANSMITSTATS; + + typedef TRANSMITSTATS *LPTRANSMITSTATS; + +#define TRANSMITSTATS_SIZE (sizeof(TRANSMITSTATS)) + + typedef struct _STATISTICS { + __MINGW_EXTENSION __int64 TimeElapsed; + DWORD TotalFramesCaptured; + DWORD TotalBytesCaptured; + DWORD TotalFramesFiltered; + DWORD TotalBytesFiltered; + DWORD TotalMulticastsFiltered; + DWORD TotalBroadcastsFiltered; + DWORD TotalFramesSeen; + DWORD TotalBytesSeen; + DWORD TotalMulticastsReceived; + DWORD TotalBroadcastsReceived; + DWORD TotalFramesDropped; + DWORD TotalFramesDroppedFromBuffer; + DWORD MacFramesReceived; + DWORD MacCRCErrors; + __MINGW_EXTENSION __int64 MacBytesReceivedEx; + DWORD MacFramesDropped_NoBuffers; + DWORD MacMulticastsReceived; + DWORD MacBroadcastsReceived; + DWORD MacFramesDropped_HwError; + } STATISTICS; + + typedef STATISTICS *LPSTATISTICS; + +#define STATISTICS_SIZE (sizeof(STATISTICS)) + +#pragma pack(push,1) + +#define MAX_NAME_SIZE (32) +#define IP_ADDRESS_SIZE (4) +#define MAC_ADDRESS_SIZE (6) +#define IP6_ADDRESS_SIZE (16) +#define MAX_ADDRESS_SIZE (16) + +#define ADDRESS_TYPE_ETHERNET (0) +#define ADDRESS_TYPE_IP (1) +#define ADDRESS_TYPE_IPX (2) +#define ADDRESS_TYPE_TOKENRING (3) +#define ADDRESS_TYPE_FDDI (4) +#define ADDRESS_TYPE_XNS (5) +#define ADDRESS_TYPE_ANY (6) +#define ADDRESS_TYPE_ANY_GROUP (7) +#define ADDRESS_TYPE_FIND_HIGHEST (8) +#define ADDRESS_TYPE_VINES_IP (9) +#define ADDRESS_TYPE_LOCAL_ONLY (10) +#define ADDRESS_TYPE_ATM (11) +#define ADDRESS_TYPE_1394 (12) +#define ADDRESS_TYPE_IP6 (13) + +#define ADDRESSTYPE_FLAGS_NORMALIZE (0x1) +#define ADDRESSTYPE_FLAGS_BIT_REVERSE (0x2) + + typedef struct _VINES_IP_ADDRESS { + DWORD NetID; + WORD SubnetID; + } VINES_IP_ADDRESS; + + typedef VINES_IP_ADDRESS *LPVINES_IP_ADDRESS; + +#define VINES_IP_ADDRESS_SIZE (sizeof(VINES_IP_ADDRESS)) + + typedef struct _IPX_ADDR { + BYTE Subnet[4]; + BYTE Address[6]; + } IPX_ADDR; + + typedef IPX_ADDR *LPIPX_ADDR; + +#define IPX_ADDR_SIZE (sizeof(IPX_ADDR)) + + typedef IPX_ADDR XNS_ADDRESS; + typedef IPX_ADDR *LPXNS_ADDRESS; + + typedef struct _ETHERNET_SRC_ADDRESS { + BYTE RoutingBit: 1; + BYTE LocalBit: 1; + BYTE Byte0: 6; + BYTE Reserved[5]; + } ETHERNET_SRC_ADDRESS; + + typedef ETHERNET_SRC_ADDRESS *LPETHERNET_SRC_ADDRESS; + + typedef struct _ETHERNET_DST_ADDRESS { + BYTE GroupBit: 1; + BYTE AdminBit: 1; + BYTE Byte0: 6; + BYTE Reserved[5]; + } ETHERNET_DST_ADDRESS; + + typedef ETHERNET_DST_ADDRESS *LPETHERNET_DST_ADDRESS; + typedef ETHERNET_SRC_ADDRESS FDDI_SRC_ADDRESS; + typedef ETHERNET_DST_ADDRESS FDDI_DST_ADDRESS; + typedef FDDI_SRC_ADDRESS *LPFDDI_SRC_ADDRESS; + typedef FDDI_DST_ADDRESS *LPFDDI_DST_ADDRESS; + + typedef struct _TOKENRING_SRC_ADDRESS { + BYTE Byte0: 6; + BYTE LocalBit: 1; + BYTE RoutingBit: 1; + BYTE Byte1; + BYTE Byte2: 7; + BYTE Functional: 1; + BYTE Reserved[3]; + } TOKENRING_SRC_ADDRESS; + + typedef TOKENRING_SRC_ADDRESS *LPTOKENRING_SRC_ADDRESS; + + typedef struct _TOKENRING_DST_ADDRESS { + BYTE Byte0: 6; + BYTE AdminBit: 1; + BYTE GroupBit: 1; + BYTE Reserved[5]; + } TOKENRING_DST_ADDRESS; + + typedef TOKENRING_DST_ADDRESS *LPTOKENRING_DST_ADDRESS; + + typedef struct _ADDRESS2 { + DWORD Type; + __MINGW_EXTENSION union { + BYTE MACAddress[MAC_ADDRESS_SIZE]; + BYTE IPAddress[IP_ADDRESS_SIZE]; + BYTE IP6Address[IP6_ADDRESS_SIZE]; + BYTE IPXRawAddress[IPX_ADDR_SIZE]; + IPX_ADDR IPXAddress; + BYTE VinesIPRawAddress[VINES_IP_ADDRESS_SIZE]; + VINES_IP_ADDRESS VinesIPAddress; + ETHERNET_SRC_ADDRESS EthernetSrcAddress; + ETHERNET_DST_ADDRESS EthernetDstAddress; + TOKENRING_SRC_ADDRESS TokenringSrcAddress; + TOKENRING_DST_ADDRESS TokenringDstAddress; + FDDI_SRC_ADDRESS FddiSrcAddress; + FDDI_DST_ADDRESS FddiDstAddress; + }; + WORD Flags; + } ADDRESS2; + + typedef ADDRESS2 *LPADDRESS2; + +#define ADDRESS2_SIZE sizeof(ADDRESS2) + +#pragma pack(pop) + +#define ADDRESS_FLAGS_MATCH_DST (0x1) +#define ADDRESS_FLAGS_MATCH_SRC (0x2) +#define ADDRESS_FLAGS_EXCLUDE (0x4) +#define ADDRESS_FLAGS_DST_GROUP_ADDR (0x8) +#define ADDRESS_FLAGS_MATCH_BOTH (0x3) + + typedef struct _ADDRESSPAIR2 { + WORD AddressFlags; + WORD NalReserved; + ADDRESS2 DstAddress; + ADDRESS2 SrcAddress; + } ADDRESSPAIR2; + + typedef ADDRESSPAIR2 *LPADDRESSPAIR2; + +#define ADDRESSPAIR2_SIZE sizeof(ADDRESSPAIR2) + +#define MAX_ADDRESS_PAIRS (8) + + typedef struct _ADDRESSTABLE2 { + DWORD nAddressPairs; + DWORD nNonMacAddressPairs; + ADDRESSPAIR2 AddressPair[MAX_ADDRESS_PAIRS]; + } ADDRESSTABLE2; + + typedef ADDRESSTABLE2 *LPADDRESSTABLE2; + +#define ADDRESSTABLE2_SIZE sizeof(ADDRESSTABLE2) + +#define NETWORKINFO_FLAGS_PMODE_NOT_SUPPORTED (0x1) +#define NETWORKINFO_FLAGS_REMOTE_NAL (0x4) +#define NETWORKINFO_FLAGS_REMOTE_NAL_CONNECTED (0x8) +#define NETWORKINFO_FLAGS_REMOTE_CARD (0x10) +#define NETWORKINFO_FLAGS_RAS (0x20) +#define NETWORKINFO_RESERVED_FIELD_SIZE (FIELD_OFFSET(ADDRESS2,IPXAddress) + sizeof(IPX_ADDR)) + + typedef struct _NETWORKINFO { + BYTE PermanentAddr[6]; + BYTE CurrentAddr[6]; + BYTE Reserved[NETWORKINFO_RESERVED_FIELD_SIZE]; + DWORD LinkSpeed; + DWORD MacType; + DWORD MaxFrameSize; + DWORD Flags; + DWORD TimestampScaleFactor; + BYTE NodeName[32]; + WINBOOL PModeSupported; + BYTE Comment[ADAPTER_COMMENT_LENGTH]; + } NETWORKINFO; + + typedef NETWORKINFO *LPNETWORKINFO; + +#define NETWORKINFO_SIZE sizeof(NETWORKINFO) +#define MINIMUM_FRAME_SIZE (32) +#define MAX_PATTERN_LENGTH (16) + +#define PATTERN_MATCH_FLAGS_NOT (0x1) +#define PATTERN_MATCH_FLAGS_RESERVED_1 (0x2) +#define PATTERN_MATCH_FLAGS_PORT_SPECIFIED (0x8) + +#define OFFSET_BASIS_RELATIVE_TO_FRAME (0) +#define OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL (1) +#define OFFSET_BASIS_RELATIVE_TO_IPX (2) +#define OFFSET_BASIS_RELATIVE_TO_IP (3) +#define OFFSET_BASIS_RELATIVE_TO_IP6 (4) + + typedef union __MIDL___MIDL_itf_netmon_0000_0001 { + BYTE NextHeader; + BYTE IPPort; + WORD ByteSwappedIPXPort; + } GENERIC_PORT; + + typedef struct _PATTERNMATCH { + DWORD Flags; + BYTE OffsetBasis; + GENERIC_PORT Port; + WORD Offset; + WORD Length; + BYTE PatternToMatch[16]; + } PATTERNMATCH; + + typedef PATTERNMATCH *LPPATTERNMATCH; + +#define PATTERNMATCH_SIZE (sizeof(PATTERNMATCH)) + +#define MAX_PATTERNS (4) + + typedef struct _ANDEXP { + DWORD nPatternMatches; + PATTERNMATCH PatternMatch[4]; + } ANDEXP; + + typedef ANDEXP *LPANDEXP; + +#define ANDEXP_SIZE (sizeof(ANDEXP)) + + typedef struct _EXPRESSION { + DWORD nAndExps; + ANDEXP AndExp[4]; + } EXPRESSION; + + typedef EXPRESSION *LPEXPRESSION; + +#define EXPRESSION_SIZE (sizeof(EXPRESSION)) + +#define TRIGGER_TYPE_PATTERN_MATCH (1) +#define TRIGGER_TYPE_BUFFER_CONTENT (2) +#define TRIGGER_TYPE_PATTERN_MATCH_THEN_BUFFER_CONTENT (3) +#define TRIGGER_TYPE_BUFFER_CONTENT_THEN_PATTERN_MATCH (4) + +#define TRIGGER_FLAGS_FRAME_RELATIVE (0) +#define TRIGGER_FLAGS_DATA_RELATIVE (0x1) + +#define TRIGGER_ACTION_NOTIFY (0) +#define TRIGGER_ACTION_STOP (0x2) +#define TRIGGER_ACTION_PAUSE (0x3) + +#define TRIGGER_BUFFER_FULL_25_PERCENT (0) +#define TRIGGER_BUFFER_FULL_50_PERCENT (1) +#define TRIGGER_BUFFER_FULL_75_PERCENT (2) +#define TRIGGER_BUFFER_FULL_100_PERCENT (3) + + typedef struct _TRIGGER { + WINBOOL TriggerActive; + BYTE TriggerType; + BYTE TriggerAction; + DWORD TriggerFlags; + PATTERNMATCH TriggerPatternMatch; + DWORD TriggerBufferSize; + DWORD TriggerReserved; + char TriggerCommandLine[260]; + } TRIGGER; + + typedef TRIGGER *LPTRIGGER; + +#define TRIGGER_SIZE (sizeof(TRIGGER)) + +#define CAPTUREFILTER_FLAGS_INCLUDE_ALL_SAPS (0x1) +#define CAPTUREFILTER_FLAGS_INCLUDE_ALL_ETYPES (0x2) +#define CAPTUREFILTER_FLAGS_TRIGGER (0x4) +#define CAPTUREFILTER_FLAGS_LOCAL_ONLY (0x8) +#define CAPTUREFILTER_FLAGS_DISCARD_COMMENTS (0x10) +#define CAPTUREFILTER_FLAGS_KEEP_RAW (0x20) +#define CAPTUREFILTER_FLAGS_INCLUDE_ALL (0x3) + +#define BUFFER_FULL_25_PERCENT (0) +#define BUFFER_FULL_50_PERCENT (1) +#define BUFFER_FULL_75_PERCENT (2) +#define BUFFER_FULL_100_PERCENT (3) + + typedef struct _CAPTUREFILTER { + DWORD FilterFlags; + LPBYTE lpSapTable; + LPWORD lpEtypeTable; + WORD nSaps; + WORD nEtypes; + LPADDRESSTABLE2 AddressTable; + EXPRESSION FilterExpression; + TRIGGER Trigger; + DWORD nFrameBytesToCopy; + DWORD Reserved; + + } CAPTUREFILTER; + + typedef CAPTUREFILTER *LPCAPTUREFILTER; + +#define CAPTUREFILTER_SIZE sizeof(CAPTUREFILTER) + + typedef struct _FRAME { + __MINGW_EXTENSION __int64 TimeStamp; + DWORD FrameLength; + DWORD nBytesAvail; + BYTE MacFrame[1]; + } FRAME; + + typedef FRAME *LPFRAME; + + typedef FRAME UNALIGNED *ULPFRAME; +#define FRAME_SIZE (sizeof(FRAME)) + +#define LOW_PROTOCOL_IPX (OFFSET_BASIS_RELATIVE_TO_IPX) + +#define LOW_PROTOCOL_IP (OFFSET_BASIS_RELATIVE_TO_IP) +#define LOW_PROTOCOL_IP6 (OFFSET_BASIS_RELATIVE_TO_IP6) +#define LOW_PROTOCOL_UNKNOWN ((BYTE)-1) + + typedef struct _FRAME_DESCRIPTOR { + LPBYTE FramePointer; + __MINGW_EXTENSION __int64 TimeStamp; + DWORD FrameLength; + DWORD nBytesAvail; + WORD Etype; + BYTE Sap; + BYTE LowProtocol; + WORD LowProtocolOffset; + union { + WORD Reserved; + BYTE IPPort; + WORD ByteSwappedIPXPort; + } HighPort; + WORD HighProtocolOffset; + } FRAME_DESCRIPTOR; + + typedef FRAME_DESCRIPTOR *LPFRAME_DESCRIPTOR; + +#define FRAME_DESCRIPTOR_SIZE (sizeof(FRAME_DESCRIPTOR)) + + typedef struct _FRAMETABLE { + DWORD FrameTableLength; + DWORD StartIndex; + DWORD EndIndex; + DWORD FrameCount; + FRAME_DESCRIPTOR Frames[1]; + } FRAMETABLE; + + typedef FRAMETABLE *LPFRAMETABLE; + +#define STATIONSTATS_FLAGS_INITIALIZED (0x1) +#define STATIONSTATS_FLAGS_EVENTPOSTED (0x2) + +#define STATIONSTATS_POOL_SIZE (100) + + typedef struct _STATIONSTATS { + DWORD NextStationStats; + DWORD SessionPartnerList; + DWORD Flags; + BYTE StationAddress[6]; + WORD Pad; + DWORD TotalPacketsReceived; + DWORD TotalDirectedPacketsSent; + DWORD TotalBroadcastPacketsSent; + DWORD TotalMulticastPacketsSent; + DWORD TotalBytesReceived; + DWORD TotalBytesSent; + } STATIONSTATS; + + typedef STATIONSTATS *LPSTATIONSTATS; + +#define STATIONSTATS_SIZE (sizeof(STATIONSTATS)) + +#define SESSION_FLAGS_INITIALIZED (0x1) +#define SESSION_FLAGS_EVENTPOSTED (0x2) + +#define SESSION_POOL_SIZE (100) + + typedef struct _SESSIONSTATS { + DWORD NextSession; + DWORD StationOwner; + DWORD StationPartner; + DWORD Flags; + DWORD TotalPacketsSent; + } SESSIONSTATS; + + typedef SESSIONSTATS *LPSESSIONSTATS; + +#define SESSIONSTATS_SIZE (sizeof(SESSIONSTATS)) + +#pragma pack(push,1) + typedef struct _STATIONQUERY { + DWORD Flags; + BYTE BCDVerMinor; + BYTE BCDVerMajor; + DWORD LicenseNumber; + BYTE MachineName[16]; + BYTE UserName[32]; + BYTE Reserved[32]; + BYTE AdapterAddress[6]; + WCHAR WMachineName[16]; + WCHAR WUserName[32]; + } STATIONQUERY; + + typedef STATIONQUERY *LPSTATIONQUERY; + +#define STATIONQUERY_SIZE (sizeof(STATIONQUERY)) + +#pragma pack(pop) + + typedef struct _QUERYTABLE { + DWORD nStationQueries; + STATIONQUERY StationQuery[1]; + } QUERYTABLE; + + typedef QUERYTABLE *LPQUERYTABLE; + +#define QUERYTABLE_SIZE (sizeof(QUERYTABLE)) + + typedef struct _LINK *LPLINK; + + typedef struct _LINK { + LPLINK PrevLink; + LPLINK NextLink; + } LINK; + +#pragma pack(push,1) +#define MAX_SECURITY_BREACH_REASON_SIZE (100) + +#define MAX_SIGNATURE_LENGTH (128) +#define MAX_USER_NAME_LENGTH (256) + + typedef struct _SECURITY_PERMISSION_RESPONSE { + UINT Version; + DWORD RandomNumber; + BYTE MachineName[16]; + BYTE Address[6]; + BYTE UserName[256]; + BYTE Reason[100]; + DWORD SignatureLength; + BYTE Signature[128]; + } SECURITY_PERMISSION_RESPONSE; + + typedef SECURITY_PERMISSION_RESPONSE *LPSECURITY_PERMISSION_RESPONSE; + typedef SECURITY_PERMISSION_RESPONSE UNALIGNED *ULPSECURITY_PERMISSION_RESPONSE; + +#define SECURITY_PERMISSION_RESPONSE_SIZE (sizeof(SECURITY_PERMISSION_RESPONSE)) + +#pragma pack(pop) + +#define UPDATE_EVENT_TERMINATE_THREAD (0) +#define UPDATE_EVENT_NETWORK_STATUS (0x1) +#define UPDATE_EVENT_RTC_INTERVAL_ELAPSED (0x2) +#define UPDATE_EVENT_RTC_FRAME_TABLE_FULL (0x3) +#define UPDATE_EVENT_RTC_BUFFER_FULL (0x4) +#define UPDATE_EVENT_TRIGGER_BUFFER_CONTENT (0x5) +#define UPDATE_EVENT_TRIGGER_PATTERN_MATCH (0x6) +#define UPDATE_EVENT_TRIGGER_BUFFER_PATTERN (0x7) +#define UPDATE_EVENT_TRIGGER_PATTERN_BUFFER (0x8) +#define UPDATE_EVENT_TRANSMIT_STATUS (0x9) +#define UPDATE_EVENT_SECURITY_BREACH (0xa) +#define UPDATE_EVENT_REMOTE_FAILURE (0xb) + +#define UPDATE_ACTION_TERMINATE_THREAD (0) +#define UPDATE_ACTION_NOTIFY (0x1) +#define UPDATE_ACTION_STOP_CAPTURE (0x2) +#define UPDATE_ACTION_PAUSE_CAPTURE (0x3) +#define UPDATE_ACTION_RTC_BUFFER_SWITCH (0x4) + + __MINGW_EXTENSION typedef struct _UPDATE_EVENT { + USHORT Event; + DWORD Action; + DWORD Status; + DWORD Value; + __MINGW_EXTENSION __int64 TimeStamp; + DWORD_PTR lpUserContext; + DWORD_PTR lpReserved; + UINT FramesDropped; + __MINGW_EXTENSION union { + DWORD Reserved; + LPFRAMETABLE lpFrameTable; + DWORD_PTR lpPacketQueue; + SECURITY_PERMISSION_RESPONSE SecurityResponse; + }; + LPSTATISTICS lpFinalStats; + } UPDATE_EVENT; + + typedef UPDATE_EVENT *PUPDATE_EVENT; + typedef DWORD (WINAPI *LPNETWORKCALLBACKPROC)(UPDATE_EVENT); + + typedef struct _NETWORKSTATUS { + DWORD State; + DWORD Flags; + } NETWORKSTATUS; + + typedef NETWORKSTATUS *LPNETWORKSTATUS; + +#define NETWORKSTATUS_SIZE (sizeof(NETWORKSTATUS)) + +#define NETWORKSTATUS_STATE_VOID (0) +#define NETWORKSTATUS_STATE_INIT (1) +#define NETWORKSTATUS_STATE_CAPTURING (2) +#define NETWORKSTATUS_STATE_PAUSED (3) + +#define NETWORKSTATUS_FLAGS_TRIGGER_PENDING (0x1) + +#define MAKE_WORD(l,h) (((WORD) (l)) | (((WORD) (h)) << 8)) +#define MAKE_LONG(l,h) (((DWORD) (l)) | (((DWORD) (h)) << 16L)) +#define MAKE_SIG(a,b,c,d) MAKE_LONG(MAKE_WORD(a,b),MAKE_WORD(c,d)) + +#define MAX_SESSIONS (100) +#define MAX_STATIONS (100) + + typedef struct _STATISTICSPARAM { + DWORD StatisticsSize; + STATISTICS Statistics; + DWORD StatisticsTableEntries; + STATIONSTATS StatisticsTable[100]; + DWORD SessionTableEntries; + SESSIONSTATS SessionTable[100]; + } STATISTICSPARAM; + + typedef STATISTICSPARAM *LPSTATISTICSPARAM; + +#define STATISTICSPARAM_SIZE (sizeof(STATISTICSPARAM)) + +#pragma pack(push,1) +#define CAPTUREFILE_VERSION_MAJOR (2) + +#define CAPTUREFILE_VERSION_MINOR (0) + +#define MakeVersion(Major,Minor) ((DWORD) MAKEWORD(Minor,Major)) +#define GetCurrentVersion() MakeVersion(CAPTUREFILE_VERSION_MAJOR,CAPTUREFILE_VERSION_MINOR) +#define NETMON_1_0_CAPTUREFILE_SIGNATURE MAKE_IDENTIFIER('R','T','S','S') +#define NETMON_2_0_CAPTUREFILE_SIGNATURE MAKE_IDENTIFIER('G','M','B','U') + + typedef struct _CAPTUREFILE_HEADER_VALUES { + DWORD Signature; + BYTE BCDVerMinor; + BYTE BCDVerMajor; + WORD MacType; + SYSTEMTIME TimeStamp; + DWORD FrameTableOffset; + DWORD FrameTableLength; + DWORD UserDataOffset; + DWORD UserDataLength; + DWORD CommentDataOffset; + DWORD CommentDataLength; + DWORD StatisticsOffset; + DWORD StatisticsLength; + DWORD NetworkInfoOffset; + DWORD NetworkInfoLength; + DWORD ConversationStatsOffset; + DWORD ConversationStatsLength; + } CAPTUREFILE_HEADER_VALUES; + + typedef CAPTUREFILE_HEADER_VALUES *LPCAPTUREFILE_HEADER_VALUES; + +#define CAPTUREFILE_HEADER_VALUES_SIZE (sizeof(CAPTUREFILE_HEADER_VALUES)) + +#pragma pack(pop) + +#pragma pack(push,1) + typedef struct _CAPTUREFILE_HEADER { + __MINGW_EXTENSION union { + CAPTUREFILE_HEADER_VALUES ActualHeader; + BYTE Buffer[72]; + }; + BYTE Reserved[56]; + } CAPTUREFILE_HEADER; + + typedef CAPTUREFILE_HEADER *LPCAPTUREFILE_HEADER; + +#define CAPTUREFILE_HEADER_SIZE (sizeof(CAPTUREFILE_HEADER)) + +#pragma pack(pop) + +#pragma pack(push,1) + typedef struct _EFRAMEHDR { + BYTE SrcAddress[6]; + BYTE DstAddress[6]; + WORD Length; + BYTE DSAP; + BYTE SSAP; + BYTE Control; + BYTE ProtocolID[3]; + WORD EtherType; + } EFRAMEHDR; + + typedef struct _TRFRAMEHDR { + BYTE AC; + BYTE FC; + BYTE SrcAddress[6]; + BYTE DstAddress[6]; + BYTE DSAP; + BYTE SSAP; + BYTE Control; + BYTE ProtocolID[3]; + WORD EtherType; + } TRFRAMEHDR; + +#define DEFAULT_TR_AC (0) + +#define DEFAULT_TR_FC (0x40) +#define DEFAULT_SAP (0xaa) + +#define DEFAULT_CONTROL (0x3) + +#define DEFAULT_ETHERTYPE (0x8419) + + typedef struct _FDDIFRAMEHDR { + BYTE FC; + BYTE SrcAddress[6]; + BYTE DstAddress[6]; + BYTE DSAP; + BYTE SSAP; + BYTE Control; + BYTE ProtocolID[3]; + WORD EtherType; + } FDDIFRAMEHDR; + +#define DEFAULT_FDDI_FC (0x10) + + typedef struct _FDDISTATFRAME { + __MINGW_EXTENSION __int64 TimeStamp; + DWORD FrameLength; + DWORD nBytesAvail; + FDDIFRAMEHDR FrameHeader; + BYTE FrameID[4]; + DWORD Flags; + DWORD FrameType; + WORD StatsDataLen; + DWORD StatsVersion; + STATISTICS Statistics; + } FDDISTATFRAME; + + typedef FDDISTATFRAME *LPFDDISTATFRAME; + + typedef FDDISTATFRAME UNALIGNED *ULPFDDISTATFRAME; +#define FDDISTATFRAME_SIZE (sizeof(FDDISTATFRAME)) + + typedef struct _ATMFRAMEHDR { + BYTE SrcAddress[6]; + BYTE DstAddress[6]; + WORD Vpi; + WORD Vci; + } ATMFRAMEHDR; + + typedef struct _ATMSTATFRAME { + __MINGW_EXTENSION __int64 TimeStamp; + DWORD FrameLength; + DWORD nBytesAvail; + ATMFRAMEHDR FrameHeader; + BYTE FrameID[4]; + DWORD Flags; + DWORD FrameType; + WORD StatsDataLen; + DWORD StatsVersion; + STATISTICS Statistics; + } ATMSTATFRAME; + + typedef ATMSTATFRAME *LPATMSTATFRAME; + typedef ATMSTATFRAME UNALIGNED *ULPATMSTATFRAME; + +#define ATMSTATFRAME_SIZE (sizeof(ATMSTATFRAME)) + + typedef struct _TRSTATFRAME { + __MINGW_EXTENSION __int64 TimeStamp; + DWORD FrameLength; + DWORD nBytesAvail; + TRFRAMEHDR FrameHeader; + BYTE FrameID[4]; + DWORD Flags; + DWORD FrameType; + WORD StatsDataLen; + DWORD StatsVersion; + STATISTICS Statistics; + } TRSTATFRAME; + + typedef TRSTATFRAME *LPTRSTATFRAME; + typedef TRSTATFRAME UNALIGNED *ULPTRSTATFRAME; + +#define TRSTATFRAME_SIZE (sizeof(TRSTATFRAME)) + + typedef struct _ESTATFRAME { + __MINGW_EXTENSION __int64 TimeStamp; + DWORD FrameLength; + DWORD nBytesAvail; + EFRAMEHDR FrameHeader; + BYTE FrameID[4]; + DWORD Flags; + DWORD FrameType; + WORD StatsDataLen; + DWORD StatsVersion; + STATISTICS Statistics; + } ESTATFRAME; + + typedef ESTATFRAME *LPESTATFRAME; + typedef ESTATFRAME UNALIGNED *ULPESTATFRAME; + +#define ESTATFRAME_SIZE (sizeof(ESTATFRAME)) + +#define STATISTICS_VERSION_1_0 (0) +#define STATISTICS_VERSION_2_0 (0x20) +#define MAX_STATSFRAME_SIZE (sizeof(TRSTATFRAME)) +#define STATS_FRAME_TYPE (103) + +#pragma pack(pop) +#pragma pack(push,1) + + typedef struct _ADDRESS { + DWORD Type; + __MINGW_EXTENSION union { + BYTE MACAddress[MAC_ADDRESS_SIZE]; + BYTE IPAddress[IP_ADDRESS_SIZE]; + BYTE IPXRawAddress[IPX_ADDR_SIZE]; + IPX_ADDR IPXAddress; + BYTE VinesIPRawAddress[VINES_IP_ADDRESS_SIZE]; + VINES_IP_ADDRESS VinesIPAddress; + ETHERNET_SRC_ADDRESS EthernetSrcAddress; + ETHERNET_DST_ADDRESS EthernetDstAddress; + TOKENRING_SRC_ADDRESS TokenringSrcAddress; + TOKENRING_DST_ADDRESS TokenringDstAddress; + FDDI_SRC_ADDRESS FddiSrcAddress; + FDDI_DST_ADDRESS FddiDstAddress; + }; + WORD Flags; + } ADDRESS; + + typedef ADDRESS *LPADDRESS; +#define ADDRESS_SIZE sizeof(ADDRESS) + +#pragma pack(pop) + + typedef struct _ADDRESSPAIR { + WORD AddressFlags; + WORD NalReserved; + ADDRESS DstAddress; + ADDRESS SrcAddress; + + } ADDRESSPAIR; + + typedef ADDRESSPAIR *LPADDRESSPAIR; + +#define ADDRESSPAIR_SIZE sizeof(ADDRESSPAIR) + + typedef struct _ADDRESSTABLE { + DWORD nAddressPairs; + DWORD nNonMacAddressPairs; + ADDRESSPAIR AddressPair[MAX_ADDRESS_PAIRS]; + + } ADDRESSTABLE; + + typedef ADDRESSTABLE *LPADDRESSTABLE; + +#define ADDRESSTABLE_SIZE sizeof(ADDRESSTABLE) + + typedef struct _ADDRESSINFO { + ADDRESS Address; + WCHAR Name[MAX_NAME_SIZE]; + DWORD Flags; + LPVOID lpAddressInstData; + } ADDRESSINFO; + + typedef struct _ADDRESSINFO *LPADDRESSINFO; + +#define ADDRESSINFO_SIZE sizeof(ADDRESSINFO) + + typedef struct _ADDRESSINFOTABLE { + DWORD nAddressInfos; + LPADDRESSINFO lpAddressInfo[0]; + } ADDRESSINFOTABLE; + + typedef ADDRESSINFOTABLE *LPADDRESSINFOTABLE; + +#define ADDRESSINFOTABLE_SIZE sizeof(ADDRESSINFOTABLE) + + DWORD __cdecl SetNPPAddressFilterInBlob(HBLOB hBlob,LPADDRESSTABLE pAddressTable); + DWORD __cdecl GetNPPAddressFilterFromBlob(HBLOB hBlob,LPADDRESSTABLE pAddressTable,HBLOB hErrorBlob); + +#pragma pack(push,8) + + typedef enum __MIDL___MIDL_itf_netmon_0000_0005 { + NMCOLUMNTYPE_UINT8 = 0, + NMCOLUMNTYPE_SINT8,NMCOLUMNTYPE_UINT16,NMCOLUMNTYPE_SINT16,NMCOLUMNTYPE_UINT32,NMCOLUMNTYPE_SINT32, + NMCOLUMNTYPE_FLOAT64,NMCOLUMNTYPE_FRAME,NMCOLUMNTYPE_YESNO,NMCOLUMNTYPE_ONOFF,NMCOLUMNTYPE_TRUEFALSE, + NMCOLUMNTYPE_MACADDR,NMCOLUMNTYPE_IPXADDR,NMCOLUMNTYPE_IPADDR,NMCOLUMNTYPE_VARTIME,NMCOLUMNTYPE_STRING + } NMCOLUMNTYPE; + + typedef struct _NMCOLUMNVARIANT { + NMCOLUMNTYPE Type; + union { + BYTE Uint8Val; + char Sint8Val; + WORD Uint16Val; + short Sint16Val; + DWORD Uint32Val; + long Sint32Val; + DOUBLE Float64Val; + DWORD FrameVal; + WINBOOL YesNoVal; + WINBOOL OnOffVal; + WINBOOL TrueFalseVal; + BYTE MACAddrVal[6]; + IPX_ADDR IPXAddrVal; + DWORD IPAddrVal; + DOUBLE VarTimeVal; + LPCSTR pStringVal; + } Value; + } NMCOLUMNVARIANT; + + typedef struct _NMCOLUMNINFO { + LPSTR szColumnName; + NMCOLUMNVARIANT VariantData; + } NMCOLUMNINFO; + + typedef NMCOLUMNINFO *PNMCOLUMNINFO; + typedef LPSTR JTYPE; + + typedef struct _NMEVENTDATA { + LPSTR pszReserved; + BYTE Version; + DWORD EventIdent; + DWORD Flags; + DWORD Severity; + BYTE NumColumns; + LPSTR szSourceName; + LPSTR szEventName; + LPSTR szDescription; + LPSTR szMachine; + JTYPE Justification; + PVOID pvReserved; + SYSTEMTIME SysTime; + NMCOLUMNINFO Column[0]; + } NMEVENTDATA; + + typedef NMEVENTDATA *PNMEVENTDATA; + +#pragma pack(pop) + +#define NMEVENTFLAG_EXPERT (0x1) +#define NMEVENTFLAG_DO_NOT_DISPLAY_SEVERITY (0x80000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_SOURCE (0x40000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_EVENT_NAME (0x20000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_DESCRIPTION (0x10000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_MACHINE (0x8000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_TIME (0x4000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_DATE (0x2000000) +#define NMEVENTFLAG_DO_NOT_DISPLAY_FIXED_COLUMNS (0xfe000000) + + enum _NMEVENT_SEVERITIES { + NMEVENT_SEVERITY_INFORMATIONAL = 0,NMEVENT_SEVERITY_WARNING, + NMEVENT_SEVERITY_STRONG_WARNING,NMEVENT_SEVERITY_ERROR, + NMEVENT_SEVERITY_SEVERE_ERROR,NMEVENT_SEVERITY_CRITICAL_ERROR + }; + + typedef struct __MIDL___MIDL_itf_netmon_0000_0007 { + DWORD dwNumBlobs; + HBLOB hBlobs[1]; + } BLOB_TABLE; + + typedef BLOB_TABLE *PBLOB_TABLE; + + typedef struct __MIDL___MIDL_itf_netmon_0000_0008 { + DWORD size; + BYTE *pBytes; + } MBLOB; + + typedef struct __MIDL___MIDL_itf_netmon_0000_0009 { + DWORD dwNumBlobs; + MBLOB mBlobs[1]; + } MBLOB_TABLE; + + typedef MBLOB_TABLE *PMBLOB_TABLE; + + DWORD __cdecl GetNPPBlobTable(HBLOB hFilterBlob,PBLOB_TABLE *ppBlobTable); + DWORD __cdecl GetNPPBlobFromUI(HWND hwnd,HBLOB hFilterBlob,HBLOB *phBlob); + DWORD __cdecl GetNPPBlobFromUIExU(HWND hwnd,HBLOB hFilterBlob,HBLOB *phBlob,char *szHelpFileName); + DWORD __cdecl SelectNPPBlobFromTable(HWND hwnd,PBLOB_TABLE pBlobTable,HBLOB *hBlob); + DWORD __cdecl SelectNPPBlobFromTableExU(HWND hwnd,PBLOB_TABLE pBlobTable,HBLOB *hBlob,char *szHelpFileName); + + static __inline DWORD BLOB_TABLE_SIZE(DWORD dwNumBlobs) { return (DWORD) (sizeof(BLOB_TABLE)+dwNumBlobs*sizeof(HBLOB)); } + static __inline PBLOB_TABLE AllocBlobTable(DWORD dwNumBlobs) { + DWORD size = BLOB_TABLE_SIZE(dwNumBlobs); + return (PBLOB_TABLE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size); + } + static __inline DWORD MBLOB_TABLE_SIZE(DWORD dwNumBlobs) { return (DWORD) (sizeof(MBLOB_TABLE)+dwNumBlobs*sizeof(MBLOB)); } + static __inline PMBLOB_TABLE AllocMBlobTable(DWORD dwNumBlobs) { + DWORD size = MBLOB_TABLE_SIZE(dwNumBlobs); + return (PMBLOB_TABLE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size); + } + DWORD __cdecl GetNPPBlobs(PBLOB_TABLE *ppBlobTable); + + typedef DWORD (_cdecl *BLOBSPROC) (PBLOB_TABLE *ppBlobTable); + + DWORD __cdecl GetConfigBlob(HBLOB *phBlob); + + typedef DWORD (_cdecl *GETCFGBLOB)(HBLOB,HBLOB*); + typedef DWORD (_cdecl *CFGPROC)(HWND hwnd,HBLOB SpecialBlob,PBLOB_TABLE *ppBlobTable); + + WINBOOL __cdecl FilterNPPBlob(HBLOB hBlob,HBLOB FilterBlob); + WINBOOL __cdecl RaiseNMEvent(HINSTANCE hInstance,WORD EventType,DWORD EventID,WORD nStrings,const char **aInsertStrs,LPVOID lpvData,DWORD dwDataSize); + +#ifndef __cplusplus +#ifndef try +#define try __try +#endif + +#ifndef except +#define except __except +#endif +#endif + +#define WINDOWS_VERSION_UNKNOWN (0) +#define WINDOWS_VERSION_WIN32S (1) +#define WINDOWS_VERSION_WIN32C (2) +#define WINDOWS_VERSION_WIN32 (3) + +#define FRAME_MASK_ETHERNET ((BYTE)~0x1) +#define FRAME_MASK_TOKENRING ((BYTE)~0x80) +#define FRAME_MASK_FDDI ((BYTE)~0x1) + + typedef LPVOID HOBJECTHEAP; + typedef VOID (WINAPI *OBJECTPROC)(HOBJECTHEAP,LPVOID); + typedef struct _TIMER *HTIMER; + typedef VOID (WINAPI *BHTIMERPROC)(LPVOID); + + HTIMER WINAPI BhSetTimer(BHTIMERPROC TimerProc,LPVOID InstData,DWORD TimeOut); + VOID WINAPI BhKillTimer(HTIMER hTimer); + DWORD WINAPI BhGetLastError(VOID); + DWORD WINAPI BhSetLastError(DWORD Error); + HOBJECTHEAP WINAPI CreateObjectHeap(DWORD ObjectSize,OBJECTPROC ObjectProc); + HOBJECTHEAP WINAPI DestroyObjectHeap(HOBJECTHEAP hObjectHeap); + LPVOID WINAPI AllocObject(HOBJECTHEAP hObjectHeap); + LPVOID WINAPI FreeObject(HOBJECTHEAP hObjectHeap,LPVOID ObjectMemory); + DWORD WINAPI GrowObjectHeap(HOBJECTHEAP hObjectHeap,DWORD nObjects); + DWORD WINAPI GetObjectHeapSize(HOBJECTHEAP hObjectHeap); + VOID WINAPI PurgeObjectHeap(HOBJECTHEAP hObjectHeap); + LPVOID WINAPI AllocMemory(SIZE_T size); + LPVOID WINAPI ReallocMemory(LPVOID ptr,SIZE_T NewSize); + VOID WINAPI FreeMemory(LPVOID ptr); + VOID WINAPI TestMemory(LPVOID ptr); + SIZE_T WINAPI MemorySize(LPVOID ptr); + HANDLE WINAPI MemoryHandle(LPBYTE ptr); + LPEXPRESSION WINAPI InitializeExpression(LPEXPRESSION Expression); + LPPATTERNMATCH WINAPI InitializePattern(LPPATTERNMATCH Pattern,LPVOID ptr,DWORD offset,DWORD length); + LPEXPRESSION WINAPI AndExpression(LPEXPRESSION Expression,LPPATTERNMATCH Pattern); + LPEXPRESSION WINAPI OrExpression(LPEXPRESSION Expression,LPPATTERNMATCH Pattern); + LPPATTERNMATCH WINAPI NegatePattern(LPPATTERNMATCH Pattern); + LPADDRESSTABLE2 WINAPI AdjustOperatorPrecedence(LPADDRESSTABLE2 AddressTable); + LPADDRESS2 WINAPI NormalizeAddress(LPADDRESS2 Address); + LPADDRESSTABLE2 WINAPI NormalizeAddressTable(LPADDRESSTABLE2 AddressTable); + DWORD WINAPI BhGetWindowsVersion(VOID); + WINBOOL WINAPI IsDaytona(VOID); + VOID __cdecl dprintf(LPSTR format,...); + + typedef VOID UNALIGNED *ULPVOID; + typedef BYTE UNALIGNED *ULPBYTE; + typedef WORD UNALIGNED *ULPWORD; + typedef DWORD UNALIGNED *ULPDWORD; + typedef CHAR UNALIGNED *ULPSTR; + typedef SYSTEMTIME UNALIGNED *ULPSYSTEMTIME; + typedef struct _PARSER *HPARSER; + typedef struct _CAPFRAMEDESC *HFRAME; + typedef struct _CAPTURE *HCAPTURE; + typedef struct _FILTER *HFILTER; + typedef struct _ADDRESSDB *HADDRESSDB; + typedef struct _PROTOCOL *HPROTOCOL; + typedef DWORD_PTR HPROPERTY; + typedef HPROTOCOL *LPHPROTOCOL; + +#define GetTableSize(TableBaseSize,nElements,ElementSize) ((TableBaseSize) + ((nElements) *(ElementSize))) + + typedef DWORD OBJECTTYPE; + +#ifndef MAKE_IDENTIFIER +#define MAKE_IDENTIFIER(a,b,c,d) ((DWORD) MAKELONG(MAKEWORD(a,b),MAKEWORD(c,d))) +#endif +#define HANDLE_TYPE_INVALID MAKE_IDENTIFIER(-1,-1,-1,-1) +#define HANDLE_TYPE_CAPTURE MAKE_IDENTIFIER('C','A','P','$') +#define HANDLE_TYPE_PARSER MAKE_IDENTIFIER('P','S','R','$') +#define HANDLE_TYPE_ADDRESSDB MAKE_IDENTIFIER('A','D','R','$') +#define HANDLE_TYPE_PROTOCOL MAKE_IDENTIFIER('P','R','T','$') +#define HANDLE_TYPE_BUFFER MAKE_IDENTIFIER('B','U','F','$') + +#define INLINE __inline +#define BHAPI WINAPI +#define MAX_NAME_LENGTH (16) + +#define MAX_ADDR_LENGTH (6) + +#define ETYPE_LOOP (0x9000) +#define ETYPE_3COM_NETMAP1 (0x9001) +#define ETYPE_3COM_NETMAP2 (0x9002) +#define ETYPE_IBM_RT (0x80d5) +#define ETYPE_NETWARE (0x8137) +#define ETYPE_XNS1 (0x600) +#define ETYPE_XNS2 (0x807) +#define ETYPE_3COM_NBP0 (0x3c00) +#define ETYPE_3COM_NBP1 (0x3c01) +#define ETYPE_3COM_NBP2 (0x3c02) +#define ETYPE_3COM_NBP3 (0x3c03) +#define ETYPE_3COM_NBP4 (0x3c04) +#define ETYPE_3COM_NBP5 (0x3c05) +#define ETYPE_3COM_NBP6 (0x3c06) +#define ETYPE_3COM_NBP7 (0x3c07) +#define ETYPE_3COM_NBP8 (0x3c08) +#define ETYPE_3COM_NBP9 (0x3c09) +#define ETYPE_3COM_NBP10 (0x3c0a) +#define ETYPE_IP (0x800) +#define ETYPE_ARP1 (0x806) +#define ETYPE_ARP2 (0x807) +#define ETYPE_RARP (0x8035) +#define ETYPE_TRLR0 (0x1000) +#define ETYPE_TRLR1 (0x1001) +#define ETYPE_TRLR2 (0x1002) +#define ETYPE_TRLR3 (0x1003) +#define ETYPE_TRLR4 (0x1004) +#define ETYPE_TRLR5 (0x1005) +#define ETYPE_PUP (0x200) +#define ETYPE_PUP_ARP (0x201) +#define ETYPE_APPLETALK_ARP (0x80f3) +#define ETYPE_APPLETALK_LAP (0x809b) +#define ETYPE_SNMP (0x814c) + +#define SAP_SNAP (0xaa) +#define SAP_BPDU (0x42) +#define SAP_IBM_NM (0xf4) +#define SAP_IBM_NETBIOS (0xf0) +#define SAP_SNA1 (0x4) +#define SAP_SNA2 (0x5) +#define SAP_SNA3 (0x8) +#define SAP_SNA4 (0xc) +#define SAP_NETWARE1 (0x10) +#define SAP_NETWARE2 (0xe0) +#define SAP_NETWARE3 (0xfe) +#define SAP_IP (0x6) +#define SAP_X25 (0x7e) +#define SAP_RPL1 (0xf8) +#define SAP_RPL2 (0xfc) +#define SAP_UB (0xfa) +#define SAP_XNS (0x80) + +#define PROP_TYPE_VOID (0) +#define PROP_TYPE_SUMMARY (0x1) +#define PROP_TYPE_BYTE (0x2) +#define PROP_TYPE_WORD (0x3) +#define PROP_TYPE_DWORD (0x4) +#define PROP_TYPE_LARGEINT (0x5) +#define PROP_TYPE_ADDR (0x6) +#define PROP_TYPE_TIME (0x7) +#define PROP_TYPE_STRING (0x8) +#define PROP_TYPE_IP_ADDRESS (0x9) +#define PROP_TYPE_IPX_ADDRESS (0xa) +#define PROP_TYPE_BYTESWAPPED_WORD (0xb) +#define PROP_TYPE_BYTESWAPPED_DWORD (0xc) +#define PROP_TYPE_TYPED_STRING (0xd) +#define PROP_TYPE_RAW_DATA (0xe) +#define PROP_TYPE_COMMENT (0xf) +#define PROP_TYPE_SRCFRIENDLYNAME (0x10) +#define PROP_TYPE_DSTFRIENDLYNAME (0x11) +#define PROP_TYPE_TOKENRING_ADDRESS (0x12) +#define PROP_TYPE_FDDI_ADDRESS (0x13) +#define PROP_TYPE_ETHERNET_ADDRESS (0x14) +#define PROP_TYPE_OBJECT_IDENTIFIER (0x15) +#define PROP_TYPE_VINES_IP_ADDRESS (0x16) +#define PROP_TYPE_VAR_LEN_SMALL_INT (0x17) +#define PROP_TYPE_ATM_ADDRESS (0x18) +#define PROP_TYPE_1394_ADDRESS (0x19) +#define PROP_TYPE_IP6_ADDRESS (0x1a) + +#define PROP_QUAL_NONE (0) +#define PROP_QUAL_RANGE (0x1) +#define PROP_QUAL_SET (0x2) +#define PROP_QUAL_BITFIELD (0x3) +#define PROP_QUAL_LABELED_SET (0x4) +#define PROP_QUAL_LABELED_BITFIELD (0x8) +#define PROP_QUAL_CONST (0x9) +#define PROP_QUAL_FLAGS (0xa) +#define PROP_QUAL_ARRAY (0xb) + + typedef LARGE_INTEGER *LPLARGEINT; + typedef LARGE_INTEGER UNALIGNED *ULPLARGEINT; + + typedef struct _RANGE { + DWORD MinValue; + DWORD MaxValue; + } RANGE; + + typedef RANGE *LPRANGE; + + typedef struct _LABELED_BYTE { + BYTE Value; + LPSTR Label; + } LABELED_BYTE; + + typedef LABELED_BYTE *LPLABELED_BYTE; + + typedef struct _LABELED_WORD { + WORD Value; + LPSTR Label; + } LABELED_WORD; + + typedef LABELED_WORD *LPLABELED_WORD; + + typedef struct _LABELED_DWORD { + DWORD Value; + LPSTR Label; + } LABELED_DWORD; + + typedef LABELED_DWORD *LPLABELED_DWORD; + + typedef struct _LABELED_LARGEINT { + LARGE_INTEGER Value; + LPSTR Label; + } LABELED_LARGEINT; + + typedef LABELED_LARGEINT *LPLABELED_LARGEINT; + + typedef struct _LABELED_SYSTEMTIME { + SYSTEMTIME Value; + LPSTR Label; + } LABELED_SYSTEMTIME; + + typedef LABELED_SYSTEMTIME *LPLABELED_SYSTEMTIME; + + typedef struct _LABELED_BIT { + BYTE BitNumber; + LPSTR LabelOff; + LPSTR LabelOn; + } LABELED_BIT; + + typedef LABELED_BIT *LPLABELED_BIT; + +#define TYPED_STRING_NORMAL (1) +#define TYPED_STRING_UNICODE (2) + +#define TYPED_STRING_EXFLAG (1) + + typedef struct _TYPED_STRING { + BYTE StringType:7; + BYTE fStringEx:1; + LPSTR lpString; + BYTE Byte[0]; + } TYPED_STRING; + + typedef TYPED_STRING *LPTYPED_STRING; + + typedef struct _OBJECT_IDENTIFIER { + DWORD Length; + LPDWORD lpIdentifier; + } OBJECT_IDENTIFIER; + + typedef OBJECT_IDENTIFIER *LPOBJECT_IDENTIFIER; + + typedef struct _SET { + DWORD nEntries; + __MINGW_EXTENSION union { + LPVOID lpVoidTable; + LPBYTE lpByteTable; + LPWORD lpWordTable; + LPDWORD lpDwordTable; + LPLARGEINT lpLargeIntTable; + LPSYSTEMTIME lpSystemTimeTable; + LPLABELED_BYTE lpLabeledByteTable; + LPLABELED_WORD lpLabeledWordTable; + LPLABELED_DWORD lpLabeledDwordTable; + LPLABELED_LARGEINT lpLabeledLargeIntTable; + LPLABELED_SYSTEMTIME lpLabeledSystemTimeTable; + LPLABELED_BIT lpLabeledBit; + }; + } SET; + + typedef SET *LPSET; + + typedef struct _STRINGTABLE { + DWORD nStrings; + LPSTR String[0]; + } STRINGTABLE; + + typedef STRINGTABLE *LPSTRINGTABLE; +#define STRINGTABLE_SIZE sizeof(STRINGTABLE) + + typedef struct _RECOGNIZEDATA { + WORD ProtocolID; + WORD nProtocolOffset; + LPVOID InstData; + } RECOGNIZEDATA; + + typedef RECOGNIZEDATA *LPRECOGNIZEDATA; + + typedef struct _RECOGNIZEDATATABLE { + WORD nRecognizeDatas; + RECOGNIZEDATA RecognizeData[0]; + } RECOGNIZEDATATABLE; + + typedef RECOGNIZEDATATABLE *LPRECOGNIZEDATATABLE; + + typedef struct _PROPERTYINFO { + HPROPERTY hProperty; + DWORD Version; + LPSTR Label; + LPSTR Comment; + BYTE DataType; + BYTE DataQualifier; + __MINGW_EXTENSION union { + LPVOID lpExtendedInfo; + LPRANGE lpRange; + LPSET lpSet; + DWORD Bitmask; + DWORD Value; + }; + WORD FormatStringSize; + LPVOID InstanceData; + } PROPERTYINFO; + + typedef PROPERTYINFO *LPPROPERTYINFO; + +#define PROPERTYINFO_SIZE (sizeof(PROPERTYINFO)) + + typedef struct _PROPERTYINSTEX { + WORD Length; + WORD LengthEx; + ULPVOID lpData; + __MINGW_EXTENSION union { + BYTE Byte[1]; + WORD Word[1]; + DWORD Dword[1]; + LARGE_INTEGER LargeInt[1]; + SYSTEMTIME SysTime[1]; + TYPED_STRING TypedString; + }; + } PROPERTYINSTEX; + typedef PROPERTYINSTEX *LPPROPERTYINSTEX; + typedef PROPERTYINSTEX UNALIGNED *ULPPROPERTYINSTEX; + +#define PROPERTYINSTEX_SIZE sizeof(PROPERTYINSTEX) + + typedef struct _PROPERTYINST { + LPPROPERTYINFO lpPropertyInfo; + LPSTR szPropertyText; + __MINGW_EXTENSION union { + LPVOID lpData; + ULPBYTE lpByte; + ULPWORD lpWord; + ULPDWORD lpDword; + ULPLARGEINT lpLargeInt; + ULPSYSTEMTIME lpSysTime; + LPPROPERTYINSTEX lpPropertyInstEx; + }; + WORD DataLength; + WORD Level : 4; + WORD HelpID : 12; + DWORD IFlags; + } PROPERTYINST; + + typedef PROPERTYINST *LPPROPERTYINST; + +#define PROPERTYINST_SIZE sizeof(PROPERTYINST) + +#define IFLAG_ERROR (0x1) +#define IFLAG_SWAPPED (0x2) +#define IFLAG_UNICODE (0x4) + + typedef struct _PROPERTYINSTTABLE { + WORD nPropertyInsts; + WORD nPropertyInstIndex; + } PROPERTYINSTTABLE; + + typedef PROPERTYINSTTABLE *LPPROPERTYINSTTABLE; + +#define PROPERTYINSTTABLE_SIZE (sizeof(PROPERTYINSTTABLE)) + + typedef struct _PROPERTYTABLE { + LPVOID lpFormatBuffer; + DWORD FormatBufferLength; + DWORD nTotalPropertyInsts; + LPPROPERTYINST lpFirstPropertyInst; + BYTE nPropertyInstTables; + PROPERTYINSTTABLE PropertyInstTable[0]; + } PROPERTYTABLE; + + typedef PROPERTYTABLE *LPPROPERTYTABLE; + +#define PROPERTYTABLE_SIZE sizeof(PROPERTYTABLE) + + typedef VOID (WINAPI *REGISTER)(HPROTOCOL); + typedef VOID (WINAPI *DEREGISTER)(HPROTOCOL); + typedef LPBYTE (WINAPI *RECOGNIZEFRAME)(HFRAME,ULPBYTE,ULPBYTE,DWORD,DWORD,HPROTOCOL,DWORD,LPDWORD,LPHPROTOCOL,PDWORD_PTR); + typedef LPBYTE (WINAPI *ATTACHPROPERTIES)(HFRAME,ULPBYTE,ULPBYTE,DWORD,DWORD,HPROTOCOL,DWORD,DWORD_PTR); + typedef DWORD (WINAPI *FORMATPROPERTIES)(HFRAME,ULPBYTE,ULPBYTE,DWORD,LPPROPERTYINST); + + typedef struct _ENTRYPOINTS { + REGISTER Register; + DEREGISTER Deregister; + RECOGNIZEFRAME RecognizeFrame; + ATTACHPROPERTIES AttachProperties; + FORMATPROPERTIES FormatProperties; + } ENTRYPOINTS; + + typedef ENTRYPOINTS *LPENTRYPOINTS; + +#define ENTRYPOINTS_SIZE sizeof(ENTRYPOINTS) + + typedef struct _PROPERTYDATABASE { + DWORD nProperties; + LPPROPERTYINFO PropertyInfo[0]; + } PROPERTYDATABASE; + +#define PROPERTYDATABASE_SIZE sizeof(PROPERTYDATABASE) + + typedef PROPERTYDATABASE *LPPROPERTYDATABASE; + + typedef struct _PROTOCOLINFO { + DWORD ProtocolID; + LPPROPERTYDATABASE PropertyDatabase; + BYTE ProtocolName[16]; + BYTE HelpFile[16]; + BYTE Comment[128]; + } PROTOCOLINFO; + + typedef PROTOCOLINFO *LPPROTOCOLINFO; + +#define PROTOCOLINFO_SIZE sizeof(PROTOCOLINFO) + + typedef struct _PROTOCOLTABLE { + DWORD nProtocols; + HPROTOCOL hProtocol[1]; + } PROTOCOLTABLE; + + typedef PROTOCOLTABLE *LPPROTOCOLTABLE; + +#define PROTOCOLTABLE_SIZE (sizeof(PROTOCOLTABLE) - sizeof(HPROTOCOL)) +#define PROTOCOLTABLE_ACTUAL_SIZE(p) GetTableSize(PROTOCOLTABLE_SIZE,(p)->nProtocols,sizeof(HPROTOCOL)) + +#define SORT_BYADDRESS (0) +#define SORT_BYNAME (1) +#define PERMANENT_NAME (0x100) + + typedef struct _ADDRESSINFO2 { + ADDRESS2 Address; + WCHAR Name[MAX_NAME_SIZE]; + DWORD Flags; + LPVOID lpAddressInstData; + } ADDRESSINFO2; + + typedef struct _ADDRESSINFO2 *LPADDRESSINFO2; + +#define ADDRESSINFO2_SIZE sizeof(ADDRESSINFO2) + + typedef struct _ADDRESSINFOTABLE2 { + DWORD nAddressInfos; + LPADDRESSINFO2 lpAddressInfo[0]; + } ADDRESSINFOTABLE2; + + typedef ADDRESSINFOTABLE2 *LPADDRESSINFOTABLE2; + +#define ADDRESSINFOTABLE2_SIZE sizeof(ADDRESSINFOTABLE2) + + typedef DWORD (WINAPI *FILTERPROC)(HCAPTURE,HFRAME,LPVOID); + +#define NMERR_SUCCESS (0) +#define NMERR_MEMORY_MAPPED_FILE_ERROR (1) +#define NMERR_INVALID_HFILTER (2) +#define NMERR_CAPTURING (3) +#define NMERR_NOT_CAPTURING (4) +#define NMERR_NO_MORE_FRAMES (5) +#define NMERR_BUFFER_TOO_SMALL (6) +#define NMERR_FRAME_NOT_RECOGNIZED (7) +#define NMERR_FILE_ALREADY_EXISTS (8) +#define NMERR_DRIVER_NOT_FOUND (9) +#define NMERR_ADDRESS_ALREADY_EXISTS (10) +#define NMERR_INVALID_HFRAME (11) +#define NMERR_INVALID_HPROTOCOL (12) +#define NMERR_INVALID_HPROPERTY (13) +#define NMERR_LOCKED (14) +#define NMERR_STACK_EMPTY (15) +#define NMERR_STACK_OVERFLOW (16) +#define NMERR_TOO_MANY_PROTOCOLS (17) +#define NMERR_FILE_NOT_FOUND (18) +#define NMERR_OUT_OF_MEMORY (19) +#define NMERR_CAPTURE_PAUSED (20) +#define NMERR_NO_BUFFERS (21) +#define NMERR_BUFFERS_ALREADY_EXIST (22) +#define NMERR_NOT_LOCKED (23) +#define NMERR_OUT_OF_RANGE (24) +#define NMERR_LOCK_NESTING_TOO_DEEP (25) +#define NMERR_LOAD_PARSER_FAILED (26) +#define NMERR_UNLOAD_PARSER_FAILED (27) +#define NMERR_INVALID_HADDRESSDB (28) +#define NMERR_ADDRESS_NOT_FOUND (29) +#define NMERR_NETWORK_NOT_PRESENT (30) +#define NMERR_NO_PROPERTY_DATABASE (31) +#define NMERR_PROPERTY_NOT_FOUND (32) +#define NMERR_INVALID_HPROPERTYDB (33) +#define NMERR_PROTOCOL_NOT_ENABLED (34) +#define NMERR_PROTOCOL_NOT_FOUND (35) +#define NMERR_INVALID_PARSER_DLL (36) +#define NMERR_NO_ATTACHED_PROPERTIES (37) +#define NMERR_NO_FRAMES (38) +#define NMERR_INVALID_FILE_FORMAT (39) +#define NMERR_COULD_NOT_CREATE_TEMPFILE (40) +#define NMERR_OUT_OF_DOS_MEMORY (41) +#define NMERR_NO_PROTOCOLS_ENABLED (42) +#define NMERR_UNKNOWN_MACTYPE (46) +#define NMERR_ROUTING_INFO_NOT_PRESENT (47) +#define NMERR_INVALID_HNETWORK (48) +#define NMERR_NETWORK_ALREADY_OPENED (49) +#define NMERR_NETWORK_NOT_OPENED (50) +#define NMERR_FRAME_NOT_FOUND (51) +#define NMERR_NO_HANDLES (53) +#define NMERR_INVALID_NETWORK_ID (54) +#define NMERR_INVALID_HCAPTURE (55) +#define NMERR_PROTOCOL_ALREADY_ENABLED (56) +#define NMERR_FILTER_INVALID_EXPRESSION (57) +#define NMERR_TRANSMIT_ERROR (58) +#define NMERR_INVALID_HBUFFER (59) +#define NMERR_INVALID_DATA (60) +#define NMERR_MSDOS_DRIVER_NOT_LOADED (61) +#define NMERR_WINDOWS_DRIVER_NOT_LOADED (62) +#define NMERR_MSDOS_DRIVER_INIT_FAILURE (63) +#define NMERR_WINDOWS_DRIVER_INIT_FAILURE (64) +#define NMERR_NETWORK_BUSY (65) +#define NMERR_CAPTURE_NOT_PAUSED (66) +#define NMERR_INVALID_PACKET_LENGTH (67) +#define NMERR_INTERNAL_EXCEPTION (69) +#define NMERR_PROMISCUOUS_MODE_NOT_SUPPORTED (70) +#define NMERR_MAC_DRIVER_OPEN_FAILURE (71) +#define NMERR_RUNAWAY_PROTOCOL (72) +#define NMERR_PENDING (73) +#define NMERR_ACCESS_DENIED (74) +#define NMERR_INVALID_HPASSWORD (75) +#define NMERR_INVALID_PARAMETER (76) +#define NMERR_FILE_READ_ERROR (77) +#define NMERR_FILE_WRITE_ERROR (78) +#define NMERR_PROTOCOL_NOT_REGISTERED (79) +#define NMERR_IP_ADDRESS_NOT_FOUND (80) +#define NMERR_TRANSMIT_CANCELLED (81) +#define NMERR_LOCKED_FRAMES (82) +#define NMERR_NO_TRANSMITS_PENDING (83) +#define NMERR_PATH_NOT_FOUND (84) +#define NMERR_WINDOWS_ERROR (85) +#define NMERR_NO_FRAME_NUMBER (86) +#define NMERR_FRAME_HAS_NO_CAPTURE (87) +#define NMERR_FRAME_ALREADY_HAS_CAPTURE (88) +#define NMERR_NAL_IS_NOT_REMOTE (89) +#define NMERR_NOT_SUPPORTED (90) +#define NMERR_DISCARD_FRAME (91) +#define NMERR_CANCEL_SAVE_CAPTURE (92) +#define NMERR_LOST_CONNECTION (93) +#define NMERR_INVALID_MEDIA_TYPE (94) +#define NMERR_AGENT_IN_USE (95) +#define NMERR_TIMEOUT (96) +#define NMERR_DISCONNECTED (97) +#define NMERR_SETTIMER_FAILED (98) +#define NMERR_NETWORK_ERROR (99) +#define NMERR_INVALID_FRAMESPROC (100) +#define NMERR_UNKNOWN_CAPTURETYPE (101) +#define NMERR_NOT_CONNECTED (102) +#define NMERR_ALREADY_CONNECTED (103) +#define NMERR_INVALID_REGISTRY_CONFIGURATION (104) +#define NMERR_DELAYED (105) +#define NMERR_NOT_DELAYED (106) +#define NMERR_REALTIME (107) +#define NMERR_NOT_REALTIME (108) +#define NMERR_STATS_ONLY (109) +#define NMERR_NOT_STATS_ONLY (110) +#define NMERR_TRANSMIT (111) +#define NMERR_NOT_TRANSMIT (112) +#define NMERR_TRANSMITTING (113) +#define NMERR_DISK_NOT_LOCAL_FIXED (114) +#define NMERR_COULD_NOT_CREATE_DIRECTORY (115) +#define NMERR_NO_DEFAULT_CAPTURE_DIRECTORY (116) +#define NMERR_UPLEVEL_CAPTURE_FILE (117) +#define NMERR_LOAD_EXPERT_FAILED (118) +#define NMERR_EXPERT_REPORT_FAILED (119) +#define NMERR_REG_OPERATION_FAILED (120) +#define NMERR_NO_DLLS_FOUND (121) +#define NMERR_NO_CONVERSATION_STATS (122) +#define NMERR_SECURITY_BREACH_CAPTURE_DELETED (123) +#define NMERR_FRAME_FAILED_FILTER (124) +#define NMERR_EXPERT_TERMINATE (125) +#define NMERR_REMOTE_NOT_A_SERVER (126) +#define NMERR_REMOTE_VERSION_OUTOFSYNC (127) +#define NMERR_INVALID_EXPERT_GROUP (128) +#define NMERR_INVALID_EXPERT_NAME (129) +#define NMERR_INVALID_EXPERT_HANDLE (130) +#define NMERR_GROUP_NAME_ALREADY_EXISTS (131) +#define NMERR_INVALID_GROUP_NAME (132) +#define NMERR_EXPERT_ALREADY_IN_GROUP (133) +#define NMERR_EXPERT_NOT_IN_GROUP (134) +#define NMERR_NOT_INITIALIZED (135) +#define NMERR_INVALID_GROUP_ROOT (136) +#define NMERR_BAD_VERSION (137) +#define NMERR_ESP (138) +#define NMERR_NOT_ESP (139) +#define NMERR_BLOB_NOT_INITIALIZED (1000) +#define NMERR_INVALID_BLOB (1001) +#define NMERR_UPLEVEL_BLOB (1002) +#define NMERR_BLOB_ENTRY_ALREADY_EXISTS (1003) +#define NMERR_BLOB_ENTRY_DOES_NOT_EXIST (1004) +#define NMERR_AMBIGUOUS_SPECIFIER (1005) +#define NMERR_BLOB_OWNER_NOT_FOUND (1006) +#define NMERR_BLOB_CATEGORY_NOT_FOUND (1007) +#define NMERR_UNKNOWN_CATEGORY (1008) +#define NMERR_UNKNOWN_TAG (1009) +#define NMERR_BLOB_CONVERSION_ERROR (1010) +#define NMERR_ILLEGAL_TRIGGER (1011) +#define NMERR_BLOB_STRING_INVALID (1012) +#define NMERR_UNABLE_TO_LOAD_LIBRARY (1013) +#define NMERR_UNABLE_TO_GET_PROCADDR (1014) +#define NMERR_CLASS_NOT_REGISTERED (1015) +#define NMERR_INVALID_REMOTE_COMPUTERNAME (1016) +#define NMERR_RPC_REMOTE_FAILURE (1017) +#define NMERR_NO_NPPS (3016) +#define NMERR_NO_MATCHING_NPPS (3017) +#define NMERR_NO_NPP_SELECTED (3018) +#define NMERR_NO_INPUT_BLOBS (3019) +#define NMERR_NO_NPP_DLLS (3020) +#define NMERR_NO_VALID_NPP_DLLS (3021) + +#ifndef INLINE +#define INLINE __CRT_INLINE +#endif + typedef LONG HRESULT; + + INLINE HRESULT NMERR_TO_HRESULT(DWORD nmerror) { + HRESULT hResult; + if(nmerror==NMERR_SUCCESS) hResult = NOERROR; + else hResult = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,(WORD)nmerror); + return hResult; + } + + INLINE DWORD HRESULT_TO_NMERR(HRESULT hResult) { return HRESULT_CODE(hResult); } + + typedef HFILTER *LPHFILTER; + typedef DWORD FILTERACTIONTYPE; + typedef DWORD VALUETYPE; + +#define PROTOCOL_NUM_ANY (-1) + + typedef PROTOCOLTABLE PROTOCOLTABLETYPE; + typedef PROTOCOLTABLETYPE *LPPROTOCOLTABLETYPE; + typedef DWORD FILTERBITS; + typedef FILTERBITS *LPFILTERBITS; + typedef SYSTEMTIME *LPTIME; + typedef SYSTEMTIME UNALIGNED *ULPTIME; + + typedef struct _FILTEROBJECT2 { + FILTERACTIONTYPE Action; + HPROPERTY hProperty; + __MINGW_EXTENSION union { + VALUETYPE Value; + HPROTOCOL hProtocol; + LPVOID lpArray; + LPPROTOCOLTABLETYPE lpProtocolTable; + LPADDRESS2 lpAddress; + ULPLARGEINT lpLargeInt; + ULPTIME lpTime; + LPOBJECT_IDENTIFIER lpOID; + }; + __MINGW_EXTENSION union { + WORD ByteCount; + WORD ByteOffset; + }; + struct _FILTEROBJECT2 *pNext; + } FILTEROBJECT2; + + typedef FILTEROBJECT2 *LPFILTEROBJECT2; + +#define FILTERINFO_SIZE (sizeof(FILTEROBJECT2)) + + typedef struct _FILTERDESC2 { + WORD NumEntries; + WORD Flags; + LPFILTEROBJECT2 lpStack; + LPFILTEROBJECT2 lpKeepLast; + LPVOID UIInstanceData; + LPFILTERBITS lpFilterBits; + LPFILTERBITS lpCheckBits; + } FILTERDESC2; + + typedef FILTERDESC2 *LPFILTERDESC2; + +#define FILTERDESC2_SIZE sizeof(FILTERDESC2) + + typedef struct _FILTEROBJECT { + FILTERACTIONTYPE Action; + HPROPERTY hProperty; + __MINGW_EXTENSION union { + VALUETYPE Value; + HPROTOCOL hProtocol; + LPVOID lpArray; + LPPROTOCOLTABLETYPE lpProtocolTable; + LPADDRESS lpAddress; + ULPLARGEINT lpLargeInt; + ULPTIME lpTime; + LPOBJECT_IDENTIFIER lpOID; + }; + __MINGW_EXTENSION union { + WORD ByteCount; + WORD ByteOffset; + }; + struct _FILTEROBJECT *pNext; + } FILTEROBJECT; + typedef FILTEROBJECT *LPFILTEROBJECT; + + typedef struct _FILTERDESC { + WORD NumEntries; + WORD Flags; + LPFILTEROBJECT lpStack; + LPFILTEROBJECT lpKeepLast; + LPVOID UIInstanceData; + LPFILTERBITS lpFilterBits; + LPFILTERBITS lpCheckBits; + } FILTERDESC; + + typedef FILTERDESC *LPFILTERDESC; + +#define FILTERDESC_SIZE sizeof(FILTERDESC) + +#define FilterGetUIInstanceData(hfilt) (((LPFILTERDESC2)hfilt)->UIInstanceData) +#define FilterSetUIInstanceData(hfilt,inst) (((LPFILTERDESC2)hfilt)->UIInstanceData = (LPVOID)inst) + +#define FILTERFREEPOOLSTART (20) + +#define INVALIDELEMENT (-1) +#define INVALIDVALUE ((VALUETYPE)-9999) +#define FILTER_FAIL_WITH_ERROR (-1) +#define FILTER_PASSED (TRUE) +#define FILTER_FAILED (FALSE) + +#define FILTERACTION_INVALID (0) +#define FILTERACTION_PROPERTY (1) +#define FILTERACTION_VALUE (2) +#define FILTERACTION_STRING (3) +#define FILTERACTION_ARRAY (4) +#define FILTERACTION_AND (5) +#define FILTERACTION_OR (6) +#define FILTERACTION_XOR (7) +#define FILTERACTION_PROPERTYEXIST (8) +#define FILTERACTION_CONTAINSNC (9) +#define FILTERACTION_CONTAINS (10) +#define FILTERACTION_NOT (11) +#define FILTERACTION_EQUALNC (12) +#define FILTERACTION_EQUAL (13) +#define FILTERACTION_NOTEQUALNC (14) +#define FILTERACTION_NOTEQUAL (15) +#define FILTERACTION_GREATERNC (16) +#define FILTERACTION_GREATER (17) +#define FILTERACTION_LESSNC (18) +#define FILTERACTION_LESS (19) +#define FILTERACTION_GREATEREQUALNC (20) +#define FILTERACTION_GREATEREQUAL (21) +#define FILTERACTION_LESSEQUALNC (22) +#define FILTERACTION_LESSEQUAL (23) +#define FILTERACTION_PLUS (24) +#define FILTERACTION_MINUS (25) +#define FILTERACTION_ADDRESS (26) +#define FILTERACTION_ADDRESSANY (27) +#define FILTERACTION_FROM (28) +#define FILTERACTION_TO (29) +#define FILTERACTION_FROMTO (30) +#define FILTERACTION_AREBITSON (31) +#define FILTERACTION_AREBITSOFF (32) +#define FILTERACTION_PROTOCOLSEXIST (33) +#define FILTERACTION_PROTOCOLEXIST (34) +#define FILTERACTION_ARRAYEQUAL (35) +#define FILTERACTION_DEREFPROPERTY (36) +#define FILTERACTION_LARGEINT (37) +#define FILTERACTION_TIME (38) +#define FILTERACTION_ADDR_ETHER (39) +#define FILTERACTION_ADDR_TOKEN (40) +#define FILTERACTION_ADDR_FDDI (41) +#define FILTERACTION_ADDR_IPX (42) +#define FILTERACTION_ADDR_IP (43) +#define FILTERACTION_OID (44) +#define FILTERACTION_OID_CONTAINS (45) +#define FILTERACTION_OID_BEGINS_WITH (46) +#define FILTERACTION_OID_ENDS_WITH (47) +#define FILTERACTION_ADDR_VINES (48) +#define FILTERACTION_ADDR_IP6 (49) +#define FILTERACTION_EXPRESSION (97) +#define FILTERACTION_BOOL (98) +#define FILTERACTION_NOEVAL (99) +#define FILTER_NO_MORE_FRAMES (0xffffffff) +#define FILTER_CANCELED (0xfffffffe) +#define FILTER_DIRECTION_NEXT (TRUE) +#define FILTER_DIRECTION_PREV (FALSE) + + typedef WINBOOL (WINAPI *STATUSPROC)(DWORD,HCAPTURE,HFILTER,LPVOID); + + HFILTER WINAPI CreateFilter(VOID); + DWORD WINAPI DestroyFilter(HFILTER hFilter); + HFILTER WINAPI FilterDuplicate(HFILTER hFilter); + DWORD WINAPI DisableParserFilter(HFILTER hFilter,HPARSER hParser); + DWORD WINAPI EnableParserFilter(HFILTER hFilter,HPARSER hParser); + DWORD WINAPI FilterAddObject(HFILTER hFilter,LPFILTEROBJECT2 lpFilterObject); + VOID WINAPI FilterFlushBits(HFILTER hFilter); + DWORD WINAPI FilterFrame(HFRAME hFrame,HFILTER hFilter,HCAPTURE hCapture); + WINBOOL WINAPI FilterAttachesProperties(HFILTER hFilter); + DWORD WINAPI FilterFindFrame (HFILTER hFilter,HCAPTURE hCapture,DWORD nFrame,STATUSPROC StatusProc,LPVOID UIInstance,DWORD TimeDelta,WINBOOL FilterDirection); + HFRAME FilterFindPropertyInstance (HFRAME hFrame,HFILTER hMasterFilter,HCAPTURE hCapture,HFILTER hInstanceFilter,LPPROPERTYINST *lpPropRestartKey,STATUSPROC StatusProc,LPVOID UIInstance,DWORD TimeDelta,WINBOOL FilterForward); + VOID WINAPI SetCurrentFilter(HFILTER); + HFILTER WINAPI GetCurrentFilter(VOID); + + typedef struct _ETHERNET { + BYTE DstAddr[MAX_ADDR_LENGTH]; + BYTE SrcAddr[MAX_ADDR_LENGTH]; + __MINGW_EXTENSION union { + WORD Length; + WORD Type; + }; + BYTE Info[0]; + } ETHERNET; + + typedef ETHERNET *LPETHERNET; + typedef ETHERNET UNALIGNED *ULPETHERNET; + +#define ETHERNET_SIZE sizeof(ETHERNET) +#define ETHERNET_HEADER_LENGTH (14) + +#define ETHERNET_DATA_LENGTH (0x5dc) +#define ETHERNET_FRAME_LENGTH (0x5ea) +#define ETHERNET_FRAME_TYPE (0x600) + + typedef struct _NM_ATM { + UCHAR DstAddr[6]; + UCHAR SrcAddr[6]; + ULONG Vpi; + ULONG Vci; + } NM_ATM; + + typedef NM_ATM *PNM_ATM; + typedef NM_ATM *UPNM_ATM; + +#define NM_ATM_HEADER_LENGTH sizeof(NM_ATM) + +#pragma pack(push,1) + + typedef struct _NM_1394 { + UCHAR DstAddr[6]; + UCHAR SrcAddr[6]; + ULONGLONG VcId; + } NM_1394; + + typedef NM_1394 *PNM_1394; + typedef NM_1394 *UPNM_1394; + +#define NM_1394_HEADER_LENGTH sizeof(NM_1394) + + typedef struct _TOKENRING { + BYTE AccessCtrl; + BYTE FrameCtrl; + BYTE DstAddr[MAX_ADDR_LENGTH]; + BYTE SrcAddr[MAX_ADDR_LENGTH]; + __MINGW_EXTENSION union { + BYTE Info[0]; + WORD RoutingInfo[0]; + }; + } TOKENRING; + + typedef TOKENRING *LPTOKENRING; + typedef TOKENRING UNALIGNED *ULPTOKENRING; +#define TOKENRING_SIZE sizeof(TOKENRING) +#define TOKENRING_HEADER_LENGTH (14) + +#define TOKENRING_SA_ROUTING_INFO (0x80) + +#define TOKENRING_SA_LOCAL (0x40) +#define TOKENRING_DA_LOCAL (0x40) +#define TOKENRING_DA_GROUP (0x80) +#define TOKENRING_RC_LENGTHMASK (0x1f) +#define TOKENRING_BC_MASK (0xe0) +#define TOKENRING_TYPE_MAC (0) +#define TOKENRING_TYPE_LLC (0x40) + +#pragma pack(pop) + +#pragma pack(push,1) + + typedef struct _FDDI { + BYTE FrameCtrl; + BYTE DstAddr[MAX_ADDR_LENGTH]; + BYTE SrcAddr[MAX_ADDR_LENGTH]; + BYTE Info[0]; + } FDDI; + +#define FDDI_SIZE sizeof(FDDI) + + typedef FDDI *LPFDDI; + typedef FDDI UNALIGNED *ULPFDDI; + +#define FDDI_HEADER_LENGTH (13) +#define FDDI_TYPE_MAC (0) +#define FDDI_TYPE_LLC (0x10) +#define FDDI_TYPE_LONG_ADDRESS (0x40) + +#pragma pack(pop) + +#pragma pack(push,1) + + typedef struct _LLC { + BYTE dsap; + BYTE ssap; + struct { + __MINGW_EXTENSION union { + BYTE Command; + BYTE NextSend; + }; + __MINGW_EXTENSION union { + BYTE NextRecv; + BYTE Data[1]; + }; + } ControlField; + } LLC; + + typedef LLC *LPLLC; + typedef LLC UNALIGNED *ULPLLC; + +#define LLC_SIZE (sizeof(LLC)) + +#pragma pack(pop) + +#define IsRoutingInfoPresent(f) ((((ULPTOKENRING) (f))->SrcAddr[0] & TOKENRING_SA_ROUTING_INFO) ? TRUE : FALSE) +#define GetRoutingInfoLength(f) (IsRoutingInfoPresent(f) ? (((ULPTOKENRING) (f))->RoutingInfo[0] & TOKENRING_RC_LENGTHMASK) : 0) + + typedef VOID (WINAPIV *FORMAT)(LPPROPERTYINST,...); + +#define PROTOCOL_STATUS_RECOGNIZED (0) +#define PROTOCOL_STATUS_NOT_RECOGNIZED (1) +#define PROTOCOL_STATUS_CLAIMED (2) +#define PROTOCOL_STATUS_NEXT_PROTOCOL (3) + + extern BYTE HexTable[]; + +#define XCHG(x) MAKEWORD(HIBYTE(x),LOBYTE(x)) +#define DXCHG(x) MAKELONG(XCHG(HIWORD(x)),XCHG(LOWORD(x))) +#define LONIBBLE(b) ((BYTE) ((b) & 0x0F)) +#define HINIBBLE(b) ((BYTE) ((b) >> 4)) +#define HEX(b) (HexTable[LONIBBLE(b)]) +#define SWAPBYTES(w) ((w) = XCHG(w)) +#define SWAPWORDS(d) ((d) = DXCHG(d)) + + typedef union _MACFRAME { + LPBYTE MacHeader; + LPETHERNET Ethernet; + LPTOKENRING Tokenring; + LPFDDI Fddi; + } MACFRAME; + + typedef MACFRAME *LPMACFRAME; + +#define HOT_SIGNATURE MAKE_IDENTIFIER('H','O','T','$') +#define HOE_SIGNATURE MAKE_IDENTIFIER('H','O','E','$') + + typedef struct _HANDOFFENTRY { + DWORD hoe_sig; + DWORD hoe_ProtIdentNumber; + HPROTOCOL hoe_ProtocolHandle; + DWORD hoe_ProtocolData; + } HANDOFFENTRY; + + typedef HANDOFFENTRY *LPHANDOFFENTRY; + + typedef struct _HANDOFFTABLE { + DWORD hot_sig; + DWORD hot_NumEntries; + LPHANDOFFENTRY hot_Entries; + } HANDOFFTABLE; + + typedef struct _HANDOFFTABLE *LPHANDOFFTABLE; + + INLINE LPVOID GetPropertyInstanceData(LPPROPERTYINST PropertyInst) { + if(PropertyInst->DataLength!=(WORD) -1) return PropertyInst->lpData; + return (LPVOID) PropertyInst->lpPropertyInstEx->Byte; + } + +#define GetPropertyInstanceDataValue(p,type) ((type *) GetPropertyInstanceData(p))[0] + + INLINE DWORD GetPropertyInstanceFrameDataLength(LPPROPERTYINST PropertyInst) { + if(PropertyInst->DataLength!=(WORD) -1) return PropertyInst->DataLength; + return PropertyInst->lpPropertyInstEx->Length; + } + + INLINE DWORD GetPropertyInstanceExDataLength(LPPROPERTYINST PropertyInst) { + if(PropertyInst->DataLength==(WORD) -1) { + PropertyInst->lpPropertyInstEx->Length; + } + return (WORD) -1; + } + + LPLABELED_WORD WINAPI GetProtocolDescriptionTable(LPDWORD TableSize); + LPLABELED_WORD WINAPI GetProtocolDescription(DWORD ProtocolID); + DWORD WINAPI GetMacHeaderLength(LPVOID MacHeader,DWORD MacType); + DWORD WINAPI GetLLCHeaderLength(LPLLC Frame); + DWORD WINAPI GetEtype(LPVOID MacHeader,DWORD MacType); + DWORD WINAPI GetSaps(LPVOID MacHeader,DWORD MacType); + WINBOOL WINAPI IsLLCPresent(LPVOID MacHeader,DWORD MacType); + VOID WINAPI CanonicalizeHexString(LPSTR hex,LPSTR dest,DWORD len); + void WINAPI CanonHex(UCHAR *pDest,UCHAR *pSource,int iLen,WINBOOL fOx); + DWORD WINAPI ByteToBinary(LPSTR string,DWORD ByteValue); + DWORD WINAPI WordToBinary(LPSTR string,DWORD WordValue); + DWORD WINAPI DwordToBinary(LPSTR string,DWORD DwordValue); + LPSTR WINAPI AddressToString(LPSTR string,BYTE *lpAddress); + LPBYTE WINAPI StringToAddress(BYTE *lpAddress,LPSTR string); + LPDWORD WINAPI VarLenSmallIntToDword(LPBYTE pValue,WORD ValueLen,WINBOOL fIsByteswapped,LPDWORD lpDword); + LPBYTE WINAPI LookupByteSetString (LPSET lpSet,BYTE Value); + LPBYTE WINAPI LookupWordSetString (LPSET lpSet,WORD Value); + LPBYTE WINAPI LookupDwordSetString (LPSET lpSet,DWORD Value); + DWORD WINAPIV FormatByteFlags(LPSTR string,DWORD ByteValue,DWORD BitMask); + DWORD WINAPIV FormatWordFlags(LPSTR string,DWORD WordValue,DWORD BitMask); + DWORD WINAPIV FormatDwordFlags(LPSTR string,DWORD DwordValue,DWORD BitMask); + LPSTR WINAPIV FormatTimeAsString(SYSTEMTIME *time,LPSTR string); + VOID WINAPIV FormatLabeledByteSetAsFlags(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatLabeledWordSetAsFlags(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatLabeledDwordSetAsFlags(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatPropertyDataAsByte(LPPROPERTYINST lpPropertyInst,DWORD Base); + VOID WINAPIV FormatPropertyDataAsWord(LPPROPERTYINST lpPropertyInst,DWORD Base); + VOID WINAPIV FormatPropertyDataAsDword(LPPROPERTYINST lpPropertyInst,DWORD Base); + VOID WINAPIV FormatLabeledByteSet(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatLabeledWordSet(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatLabeledDwordSet(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatPropertyDataAsInt64(LPPROPERTYINST lpPropertyInst,DWORD Base); + VOID WINAPIV FormatPropertyDataAsTime(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatPropertyDataAsString(LPPROPERTYINST lpPropertyInst); + VOID WINAPIV FormatPropertyDataAsHexString(LPPROPERTYINST lpPropertyInst); + ULPBYTE WINAPI ParserTemporaryLockFrame(HFRAME hFrame); + LPVOID WINAPI GetCCInstPtr(VOID); + VOID WINAPI SetCCInstPtr(LPVOID lpCurCaptureInst); + LPVOID WINAPI CCHeapAlloc(DWORD dwBytes,WINBOOL bZeroInit); + LPVOID WINAPI CCHeapReAlloc(LPVOID lpMem,DWORD dwBytes,WINBOOL bZeroInit); + WINBOOL WINAPI CCHeapFree(LPVOID lpMem); + SIZE_T WINAPI CCHeapSize(LPVOID lpMem); + WINBOOL __cdecl BERGetInteger(ULPBYTE pCurrentPointer,ULPBYTE *ppValuePointer,LPDWORD pHeaderLength,LPDWORD pDataLength,ULPBYTE *ppNext); + WINBOOL __cdecl BERGetString(ULPBYTE pCurrentPointer,ULPBYTE *ppValuePointer,LPDWORD pHeaderLength,LPDWORD pDataLength,ULPBYTE *ppNext); + WINBOOL __cdecl BERGetHeader(ULPBYTE pCurrentPointer,ULPBYTE pTag,LPDWORD pHeaderLength,LPDWORD pDataLength,ULPBYTE *ppNext); + +#define MAX_PROTOCOL_COMMENT_LEN (256) + +#define NETMON_MAX_PROTOCOL_NAME_LEN (16) + +#ifndef MAX_PROTOCOL_NAME_LEN +#define MAX_PROTOCOL_NAME_LEN (NETMON_MAX_PROTOCOL_NAME_LEN) +#else +#undef MAX_PROTOCOL_NAME_LEN +#endif + + typedef enum __MIDL___MIDL_itf_netmon_0000_0015 { + HANDOFF_VALUE_FORMAT_BASE_UNKNOWN = 0,HANDOFF_VALUE_FORMAT_BASE_DECIMAL = 10,HANDOFF_VALUE_FORMAT_BASE_HEX = 16 + } PF_HANDOFFVALUEFORMATBASE; + + typedef struct _PF_HANDOFFENTRY { + char szIniFile[260]; + char szIniSection[260]; + char szProtocol[16]; + DWORD dwHandOffValue; + PF_HANDOFFVALUEFORMATBASE ValueFormatBase; + } PF_HANDOFFENTRY; + + typedef PF_HANDOFFENTRY *PPF_HANDOFFENTRY; + + typedef struct _PF_HANDOFFSET { + DWORD nEntries; + PF_HANDOFFENTRY Entry[0]; + } PF_HANDOFFSET; + + typedef PF_HANDOFFSET *PPF_HANDOFFSET; + + typedef struct _PF_FOLLOWENTRY { + char szProtocol[16]; + } PF_FOLLOWENTRY; + + typedef PF_FOLLOWENTRY *PPF_FOLLOWENTRY; + + typedef struct _PF_FOLLOWSET { + DWORD nEntries; + PF_FOLLOWENTRY Entry[0]; + } PF_FOLLOWSET; + + typedef PF_FOLLOWSET *PPF_FOLLOWSET; + + typedef struct _PF_PARSERINFO { + char szProtocolName[NETMON_MAX_PROTOCOL_NAME_LEN]; + char szComment[MAX_PROTOCOL_COMMENT_LEN]; + char szHelpFile[MAX_PATH]; + PPF_FOLLOWSET pWhoCanPrecedeMe; + PPF_FOLLOWSET pWhoCanFollowMe; + PPF_HANDOFFSET pWhoHandsOffToMe; + PPF_HANDOFFSET pWhoDoIHandOffTo; + } PF_PARSERINFO; + + typedef PF_PARSERINFO *PPF_PARSERINFO; + + typedef struct _PF_PARSERDLLINFO { + DWORD nParsers; + PF_PARSERINFO ParserInfo[0]; + } PF_PARSERDLLINFO; + + typedef PF_PARSERDLLINFO *PPF_PARSERDLLINFO; + +#define INI_PATH_LENGTH (256) + +#define MAX_HANDOFF_ENTRY_LENGTH (80) +#define MAX_PROTOCOL_NAME (40) +#define NUMALLOCENTRIES (10) +#define RAW_INI_STR_LEN (200) + +#define PARSERS_SUBDIR "PARSERS" +#define INI_EXTENSION "INI" +#define BASE10_FORMAT_STR "%ld=%s %ld" +#define BASE16_FORMAT_STR "%lx=%s %lx" + + LPSTR __cdecl BuildINIPath(char *FullPath,char *IniFileName); + DWORD WINAPI CreateHandoffTable(LPSTR secName,LPSTR iniFile,LPHANDOFFTABLE *hTable,DWORD nMaxProtocolEntries,DWORD base); + HPROTOCOL WINAPI GetProtocolFromTable(LPHANDOFFTABLE hTable,DWORD ItemToFind,PDWORD_PTR lpInstData); + VOID WINAPI DestroyHandoffTable(LPHANDOFFTABLE hTable); + BOOLEAN WINAPI IsRawIPXEnabled(LPSTR secName,LPSTR iniFile,LPSTR CurProtocol); + +#define EXPERTSTRINGLENGTH (260) +#define EXPERTGROUPNAMELENGTH (25) + + typedef LPVOID HEXPERTKEY; + typedef HEXPERTKEY *PHEXPERTKEY; + typedef LPVOID HEXPERT; + typedef HEXPERT *PHEXPERT; + typedef LPVOID HRUNNINGEXPERT; + typedef HRUNNINGEXPERT *PHRUNNINGEXPERT; + typedef struct _EXPERTENUMINFO *PEXPERTENUMINFO; + typedef struct _EXPERTCONFIG *PEXPERTCONFIG; + typedef struct _EXPERTSTARTUPINFO *PEXPERTSTARTUPINFO; + +#define EXPERTENTRY_REGISTER "Register" +#define EXPERTENTRY_CONFIGURE "Configure" +#define EXPERTENTRY_RUN "Run" + typedef WINBOOL (WINAPI *PEXPERTREGISTERPROC)(PEXPERTENUMINFO); + typedef WINBOOL (WINAPI *PEXPERTCONFIGPROC) (HEXPERTKEY,PEXPERTCONFIG*,PEXPERTSTARTUPINFO,DWORD,HWND); + typedef WINBOOL (WINAPI *PEXPERTRUNPROC) (HEXPERTKEY,PEXPERTCONFIG,PEXPERTSTARTUPINFO,DWORD,HWND); + + typedef struct _EXPERTENUMINFO { + char szName[EXPERTSTRINGLENGTH]; + char szVendor[EXPERTSTRINGLENGTH]; + char szDescription[EXPERTSTRINGLENGTH]; + DWORD Version; + DWORD Flags; + char szDllName[MAX_PATH]; + HEXPERT hExpert; + HINSTANCE hModule; + PEXPERTREGISTERPROC pRegisterProc; + PEXPERTCONFIGPROC pConfigProc; + PEXPERTRUNPROC pRunProc; + } EXPERTENUMINFO; + + typedef EXPERTENUMINFO *PEXPERTENUMINFO; + +#define EXPERT_ENUM_FLAG_CONFIGURABLE (0x1) +#define EXPERT_ENUM_FLAG_VIEWER_PRIVATE (0x2) +#define EXPERT_ENUM_FLAG_NO_VIEWER (0x4) +#define EXPERT_ENUM_FLAG_ADD_ME_TO_RMC_IN_SUMMARY (0x10) +#define EXPERT_ENUM_FLAG_ADD_ME_TO_RMC_IN_DETAIL (0x20) + + typedef struct _EXPERTSTARTUPINFO { + DWORD Flags; + HCAPTURE hCapture; + char szCaptureFile[MAX_PATH]; + DWORD dwFrameNumber; + HPROTOCOL hProtocol; + LPPROPERTYINST lpPropertyInst; + struct { + BYTE BitNumber; + WINBOOL bOn; + } sBitfield; + } EXPERTSTARTUPINFO; + + typedef struct _EXPERTCONFIG { + DWORD RawConfigLength; + BYTE RawConfigData[0]; + } EXPERTCONFIG; + + typedef EXPERTCONFIG *PEXPERTCONFIG; + + typedef struct { + HEXPERT hExpert; + DWORD StartupFlags; + PEXPERTCONFIG pConfig; + } CONFIGUREDEXPERT; + + typedef CONFIGUREDEXPERT *PCONFIGUREDEXPERT; + + typedef struct { + DWORD FrameNumber; + HFRAME hFrame; + ULPFRAME pFrame; + LPRECOGNIZEDATATABLE lpRecognizeDataTable; + LPPROPERTYTABLE lpPropertyTable; + } EXPERTFRAMEDESCRIPTOR; + + typedef EXPERTFRAMEDESCRIPTOR *LPEXPERTFRAMEDESCRIPTOR; + +#define GET_SPECIFIED_FRAME (0) +#define GET_FRAME_NEXT_FORWARD (1) +#define GET_FRAME_NEXT_BACKWARD (2) +#define FLAGS_DEFER_TO_UI_FILTER (0x1) +#define FLAGS_ATTACH_PROPERTIES (0x2) + + typedef enum __MIDL___MIDL_itf_netmon_0000_0016 { + EXPERTSTATUS_INACTIVE = 0,EXPERTSTATUS_STARTING,EXPERTSTATUS_RUNNING, + EXPERTSTATUS_PROBLEM,EXPERTSTATUS_ABORTED,EXPERTSTATUS_DONE + } EXPERTSTATUSENUMERATION; + +#define EXPERTSUBSTATUS_ABORTED_USER (0x1) +#define EXPERTSUBSTATUS_ABORTED_LOAD_FAIL (0x2) +#define EXPERTSUBSTATUS_ABORTED_THREAD_FAIL (0x4) +#define EXPERTSUBSTATUS_ABORTED_BAD_ENTRY (0x8) + + typedef struct __MIDL___MIDL_itf_netmon_0000_0017 { + EXPERTSTATUSENUMERATION Status; + DWORD SubStatus; + DWORD PercentDone; + DWORD Frame; + char szStatusText[260]; + } EXPERTSTATUS; + + typedef EXPERTSTATUS *PEXPERTSTATUS; + +#define EXPERT_STARTUP_FLAG_USE_STARTUP_DATA_OVER_CONFIG_DATA (0x1) +#define INVALID_FRAME_NUMBER ((DWORD)-1) +#define CAPTUREFILE_OPEN OPEN_EXISTING +#define CAPTUREFILE_CREATE CREATE_NEW + + LPSYSTEMTIME WINAPI GetCaptureTimeStamp(HCAPTURE hCapture); + DWORD WINAPI GetCaptureMacType(HCAPTURE hCapture); + DWORD WINAPI GetCaptureTotalFrames(HCAPTURE hCapture); + LPSTR WINAPI GetCaptureComment(HCAPTURE hCapture); + DWORD WINAPI MacTypeToAddressType(DWORD MacType); + DWORD WINAPI AddressTypeToMacType(DWORD AddressType); + DWORD WINAPI GetFrameDstAddressOffset(HFRAME hFrame,DWORD AddressType,LPDWORD AddressLength); + DWORD WINAPI GetFrameSrcAddressOffset(HFRAME hFrame,DWORD AddressType,LPDWORD AddressLength); + HCAPTURE WINAPI GetFrameCaptureHandle(HFRAME hFrame); + DWORD WINAPI GetFrameDestAddress(HFRAME hFrame,LPADDRESS2 lpAddress,DWORD AddressType,DWORD Flags); + DWORD WINAPI GetFrameSourceAddress(HFRAME hFrame,LPADDRESS2 lpAddress,DWORD AddressType,DWORD Flags); + DWORD WINAPI GetFrameMacHeaderLength(HFRAME hFrame); + WINBOOL WINAPI CompareFrameDestAddress(HFRAME hFrame,LPADDRESS2 lpAddress); + WINBOOL WINAPI CompareFrameSourceAddress(HFRAME hFrame,LPADDRESS2 lpAddress); + DWORD WINAPI GetFrameLength(HFRAME hFrame); + DWORD WINAPI GetFrameStoredLength(HFRAME hFrame); + DWORD WINAPI GetFrameMacType(HFRAME hFrame); + DWORD WINAPI GetFrameMacHeaderLength(HFRAME hFrame); + DWORD WINAPI GetFrameNumber(HFRAME hFrame); + __MINGW_EXTENSION __int64 WINAPI GetFrameTimeStamp(HFRAME hFrame); + ULPFRAME WINAPI GetFrameFromFrameHandle(HFRAME hFrame); + __MINGW_EXTENSION HFRAME WINAPI ModifyFrame(HCAPTURE hCapture,DWORD FrameNumber,LPBYTE FrameData,DWORD FrameLength,__int64 TimeStamp); + HFRAME WINAPI FindNextFrame(HFRAME hCurrentFrame,LPSTR ProtocolName,LPADDRESS2 lpDestAddress,LPADDRESS2 lpSrcAddress,LPWORD ProtocolOffset,DWORD OriginalFrameNumber,DWORD nHighestFrame); + HFRAME WINAPI FindPreviousFrame(HFRAME hCurrentFrame,LPSTR ProtocolName,LPADDRESS2 lpDstAddress,LPADDRESS2 lpSrcAddress,LPWORD ProtocolOffset,DWORD OriginalFrameNumber,DWORD nLowestFrame); + HCAPTURE WINAPI GetFrameCaptureHandle(HFRAME); + HFRAME WINAPI GetFrame(HCAPTURE hCapture,DWORD FrameNumber); + LPRECOGNIZEDATATABLE WINAPI GetFrameRecognizeData(HFRAME hFrame); + HPROTOCOL WINAPI CreateProtocol(LPSTR ProtocolName,LPENTRYPOINTS lpEntryPoints,DWORD cbEntryPoints); + VOID WINAPI DestroyProtocol(HPROTOCOL hProtocol); + LPPROTOCOLINFO WINAPI GetProtocolInfo(HPROTOCOL hProtocol); + HPROPERTY WINAPI GetProperty(HPROTOCOL hProtocol,LPSTR PropertyName); + HPROTOCOL WINAPI GetProtocolFromName(LPSTR ProtocolName); + DWORD WINAPI GetProtocolStartOffset(HFRAME hFrame,LPSTR ProtocolName); + DWORD WINAPI GetProtocolStartOffsetHandle(HFRAME hFrame,HPROTOCOL hProtocol); + DWORD WINAPI GetPreviousProtocolOffsetByName(HFRAME hFrame,DWORD dwStartOffset,LPSTR szProtocolName,DWORD *pdwPreviousOffset); + LPPROTOCOLTABLE WINAPI GetEnabledProtocols(HCAPTURE hCapture); + DWORD WINAPI CreatePropertyDatabase(HPROTOCOL hProtocol,DWORD nProperties); + DWORD WINAPI DestroyPropertyDatabase(HPROTOCOL hProtocol); + HPROPERTY WINAPI AddProperty(HPROTOCOL hProtocol,LPPROPERTYINFO PropertyInfo); + WINBOOL WINAPI AttachPropertyInstance(HFRAME hFrame,HPROPERTY hProperty,DWORD Length,ULPVOID lpData,DWORD HelpID,DWORD Level,DWORD IFlags); + WINBOOL WINAPI AttachPropertyInstanceEx(HFRAME hFrame,HPROPERTY hProperty,DWORD Length,ULPVOID lpData,DWORD ExLength,ULPVOID lpExData,DWORD HelpID,DWORD Level,DWORD IFlags); + LPPROPERTYINST WINAPI FindPropertyInstance(HFRAME hFrame,HPROPERTY hProperty); + LPPROPERTYINST WINAPI FindPropertyInstanceRestart (HFRAME hFrame,HPROPERTY hProperty,LPPROPERTYINST *lpRestartKey,WINBOOL DirForward); + LPPROPERTYINFO WINAPI GetPropertyInfo(HPROPERTY hProperty); + LPSTR WINAPI GetPropertyText(HFRAME hFrame,LPPROPERTYINST lpPI,LPSTR szBuffer,DWORD BufferSize); + DWORD WINAPI ResetPropertyInstanceLength(LPPROPERTYINST lpProp,WORD nOrgLen,WORD nNewLen); + DWORD WINAPI GetCaptureCommentFromFilename(LPSTR lpFilename,LPSTR lpComment,DWORD BufferSize); + int WINAPI CompareAddresses(LPADDRESS2 lpAddress1,LPADDRESS2 lpAddress2); + DWORD WINAPIV FormatPropertyInstance(LPPROPERTYINST lpPropertyInst,...); + __MINGW_EXTENSION SYSTEMTIME *WINAPI AdjustSystemTime(SYSTEMTIME *SystemTime,__int64 TimeDelta); + LPSTR WINAPI NMRtlIpv6AddressToStringA(const BYTE IP6Addr[],LPSTR S); + LPWSTR WINAPI NMRtlIpv6AddressToStringW(const BYTE IP6Addr[],LPWSTR S); + ULONG WINAPI NMRtlIpv6StringToAddressA(LPCSTR S,LPCSTR *Terminator,BYTE IP6Addr[]); + ULONG WINAPI NMRtlIpv6StringToAddressW(LPCWSTR S,LPCWSTR *Terminator,BYTE IP6Addr[]); + DWORD WINAPI ExpertGetFrame(HEXPERTKEY hExpertKey,DWORD Direction,DWORD RequestFlags,DWORD RequestedFrameNumber,HFILTER hFilter,LPEXPERTFRAMEDESCRIPTOR pEFrameDescriptor); + LPVOID WINAPI ExpertAllocMemory(HEXPERTKEY hExpertKey,SIZE_T nBytes,DWORD *pError); + LPVOID WINAPI ExpertReallocMemory(HEXPERTKEY hExpertKey,LPVOID pOriginalMemory,SIZE_T nBytes,DWORD *pError); + DWORD WINAPI ExpertFreeMemory(HEXPERTKEY hExpertKey,LPVOID pOriginalMemory); + SIZE_T WINAPI ExpertMemorySize(HEXPERTKEY hExpertKey,LPVOID pOriginalMemory); + DWORD WINAPI ExpertIndicateStatus(HEXPERTKEY hExpertKey,EXPERTSTATUSENUMERATION Status,DWORD SubStatus,const char *szText,LONG PercentDone); + DWORD WINAPI ExpertSubmitEvent(HEXPERTKEY hExpertKey,PNMEVENTDATA pExpertEvent); + DWORD WINAPI ExpertGetStartupInfo(HEXPERTKEY hExpertKey,PEXPERTSTARTUPINFO pExpertStartupInfo); + +#define INITIAL_RESTART_KEY (0xffffffff) + + DWORD __cdecl CreateBlob(HBLOB *phBlob); + DWORD __cdecl DestroyBlob(HBLOB hBlob); + DWORD __cdecl SetStringInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const char *pString); + DWORD __cdecl SetWStringInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const WCHAR *pwString); + DWORD __cdecl ConvertWStringToHexString(const WCHAR *pwsz,char **ppsz); + DWORD __cdecl GetStringFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const char **ppString); + DWORD __cdecl ConvertHexStringToWString(CHAR *psz,WCHAR **ppwsz); + DWORD __cdecl GetWStringFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,WCHAR **ppwString); + DWORD __cdecl GetStringsFromBlob(HBLOB hBlob,const char *pRequestedOwnerName,const char *pRequestedCategoryName,const char *pRequestedTagName,const char **ppReturnedOwnerName,const char **ppReturnedCategoryName,const char **ppReturnedTagName,const char **ppReturnedString,DWORD *pRestartKey); + DWORD __cdecl RemoveFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName); + DWORD __cdecl LockBlob(HBLOB hBlob); + DWORD __cdecl UnlockBlob(HBLOB hBlob); + DWORD __cdecl FindUnknownBlobCategories(HBLOB hBlob,const char *pOwnerName,const char *pKnownCategoriesTable[],HBLOB hUnknownCategoriesBlob); + DWORD __cdecl MergeBlob(HBLOB hDstBlob,HBLOB hSrcBlob); + DWORD __cdecl DuplicateBlob (HBLOB hSrcBlob,HBLOB *hBlobThatWillBeCreated); + DWORD __cdecl WriteBlobToFile(HBLOB hBlob,const char *pFileName); + DWORD __cdecl ReadBlobFromFile(HBLOB *phBlob,const char *pFileName); + DWORD __cdecl RegCreateBlobKey(HKEY hkey,const char *szBlobName,HBLOB hBlob); + DWORD __cdecl RegOpenBlobKey(HKEY hkey,const char *szBlobName,HBLOB *phBlob); + DWORD __cdecl MarshalBlob(HBLOB hBlob,DWORD *pSize,BYTE **ppBytes); + DWORD __cdecl UnMarshalBlob(HBLOB *phBlob,DWORD Size,BYTE *pBytes); + DWORD __cdecl SetDwordInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,DWORD Dword); + DWORD __cdecl GetDwordFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,DWORD *pDword); + DWORD __cdecl SetBoolInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,WINBOOL Bool); + DWORD __cdecl GetBoolFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,WINBOOL *pBool); + DWORD __cdecl GetMacAddressFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,BYTE *pMacAddress); + DWORD __cdecl SetMacAddressInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const BYTE *pMacAddress); + DWORD __cdecl FindUnknownBlobTags(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pKnownTagsTable[],HBLOB hUnknownTagsBlob); + DWORD __cdecl SetNetworkInfoInBlob(HBLOB hBlob,LPNETWORKINFO lpNetworkInfo); + DWORD __cdecl GetNetworkInfoFromBlob(HBLOB hBlob,LPNETWORKINFO lpNetworkInfo); + DWORD __cdecl CreateNPPInterface (HBLOB hBlob,REFIID iid,void **ppvObject); + DWORD __cdecl SetClassIDInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const CLSID *pClsID); + DWORD __cdecl GetClassIDFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,CLSID *pClsID); + DWORD __cdecl SetNPPPatternFilterInBlob(HBLOB hBlob,LPEXPRESSION pExpression,HBLOB hErrorBlob); + DWORD __cdecl GetNPPPatternFilterFromBlob(HBLOB hBlob,LPEXPRESSION pExpression,HBLOB hErrorBlob); + DWORD __cdecl SetNPPAddress2FilterInBlob(HBLOB hBlob,LPADDRESSTABLE2 pAddressTable); + DWORD __cdecl GetNPPAddress2FilterFromBlob(HBLOB hBlob,LPADDRESSTABLE2 pAddressTable,HBLOB hErrorBlob); + DWORD __cdecl SetNPPTriggerInBlob(HBLOB hBlob,LPTRIGGER pTrigger,HBLOB hErrorBlob); + DWORD __cdecl GetNPPTriggerFromBlob(HBLOB hBlob,LPTRIGGER pTrigger,HBLOB hErrorBlob); + DWORD __cdecl SetNPPEtypeSapFilter(HBLOB hBlob,WORD nSaps,WORD nEtypes,LPBYTE lpSapTable,LPWORD lpEtypeTable,DWORD FilterFlags,HBLOB hErrorBlob); + DWORD __cdecl GetNPPEtypeSapFilter(HBLOB hBlob,WORD *pnSaps,WORD *pnEtypes,LPBYTE *ppSapTable,LPWORD *ppEtypeTable,DWORD *pFilterFlags,HBLOB hErrorBlob); + DWORD __cdecl GetNPPMacTypeAsNumber(HBLOB hBlob,LPDWORD lpMacType); + WINBOOL __cdecl IsRemoteNPP (HBLOB hBLOB); + +#define OWNER_NPP "NPP" + +#define CATEGORY_NETWORKINFO "NetworkInfo" +#define TAG_MACTYPE "MacType" +#define TAG_CURRENTADDRESS "CurrentAddress" +#define TAG_LINKSPEED "LinkSpeed" +#define TAG_MAXFRAMESIZE "MaxFrameSize" +#define TAG_FLAGS "Flags" +#define TAG_TIMESTAMPSCALEFACTOR "TimeStampScaleFactor" +#define TAG_COMMENT "Comment" +#define TAG_NODENAME "NodeName" +#define TAG_NAME "Name" +#define TAG_FAKENPP "Fake" +#define TAG_PROMISCUOUS_MODE "PMode" + +#define CATEGORY_LOCATION "Location" +#define TAG_RAS "Dial-up Connection" +#define TAG_MACADDRESS "MacAddress" +#define TAG_CLASSID "ClassID" +#define TAG_NAME "Name" +#define TAG_CONNECTIONNAME "Connection Name" +#define TAG_FRIENDLYNAME "Friendly Name" + +#define CATEGORY_CONFIG "Config" +#define TAG_FRAME_SIZE "FrameSize" +#define TAG_UPDATE_FREQUENCY "UpdateFreq" +#define TAG_BUFFER_SIZE "BufferSize" +#define TAG_PATTERN_DESIGNATOR "PatternMatch" +#define TAG_PATTERN "Pattern" +#define TAG_ADDRESS_PAIR "AddressPair" +#define TAG_CONNECTIONFLAGS "ConnectionFlags" +#define TAG_ETYPES "Etypes" +#define TAG_SAPS "Saps" +#define TAG_NO_CONVERSATION_STATS "NoConversationStats" +#define TAG_NO_STATS_FRAME "NoStatsFrame" +#define TAG_DONT_DELETE_EMPTY_CAPTURE "DontDeleteEmptyCapture" +#define TAG_WANT_PROTOCOL_INFO "WantProtocolInfo" +#define TAG_INTERFACE_DELAYED_CAPTURE "IDdC" +#define TAG_INTERFACE_REALTIME_CAPTURE "IRTC" +#define TAG_INTERFACE_STATS "ISts" +#define TAG_INTERFACE_TRANSMIT "IXmt" +#define TAG_LOCAL_ONLY "LocalOnly" + +#define TAG_IS_REMOTE "IsRemote" + +#define CATEGORY_TRIGGER "Trigger" +#define TAG_TRIGGER "Trigger" + +#define CATEGORY_FINDER "Finder" +#define TAG_ROOT "Root" +#define TAG_PROCNAME "ProcName" +#define TAG_DISP_STRING "Display" +#define TAG_DLL_FILENAME "DLLName" +#define TAG_GET_SPECIAL_BLOBS "Specials" + +#define CATEGORY_REMOTE "Remote" +#define TAG_REMOTECOMPUTER "RemoteComputer" +#define TAG_REMOTECLASSID "ClassID" + +#define PROTOCOL_STRING_ETHERNET_TXT "ETHERNET" +#define PROTOCOL_STRING_TOKENRING_TXT "TOKENRING" +#define PROTOCOL_STRING_FDDI_TXT "FDDI" +#define PROTOCOL_STRING_ATM_TXT "ATM" +#define PROTOCOL_STRING_1394_TXT "IP/1394" + +#define PROTOCOL_STRING_IP_TXT "IP" +#define PROTOCOL_STRING_IP6_TXT "IP6" +#define PROTOCOL_STRING_IPX_TXT "IPX" +#define PROTOCOL_STRING_XNS_TXT "XNS" +#define PROTOCOL_STRING_VINES_IP_TXT "VINES IP" + +#define PROTOCOL_STRING_ICMP_TXT "ICMP" +#define PROTOCOL_STRING_TCP_TXT "TCP" +#define PROTOCOL_STRING_UDP_TXT "UDP" +#define PROTOCOL_STRING_SPX_TXT "SPX" +#define PROTOCOL_STRING_NCP_TXT "NCP" + +#define PROTOCOL_STRING_ANY_TXT "ANY" +#define PROTOCOL_STRING_ANY_GROUP_TXT "ANY GROUP" +#define PROTOCOL_STRING_HIGHEST_TXT "HIGHEST" +#define PROTOCOL_STRING_LOCAL_ONLY_TXT "LOCAL ONLY" +#define PROTOCOL_STRING_UNKNOWN_TXT "UNKNOWN" +#define PROTOCOL_STRING_DATA_TXT "DATA" +#define PROTOCOL_STRING_FRAME_TXT "FRAME" +#define PROTOCOL_STRING_NONE_TXT "NONE" +#define PROTOCOL_STRING_EFFECTIVE_TXT "EFFECTIVE" + +#define ADDRESS_PAIR_INCLUDE_TXT "INCLUDE" +#define ADDRESS_PAIR_EXCLUDE_TXT "EXCLUDE" + +#define INCLUDE_ALL_EXCEPT_TXT "INCLUDE ALL EXCEPT" +#define EXCLUDE_ALL_EXCEPT_TXT "EXCLUDE ALL EXCEPT" + +#define PATTERN_MATCH_OR_TXT "OR(" +#define PATTERN_MATCH_AND_TXT "AND(" + +#define TRIGGER_PATTERN_TXT "PATTERN MATCH" +#define TRIGGER_BUFFER_TXT "BUFFER CONTENT" + +#define TRIGGER_NOTIFY_TXT "NOTIFY" +#define TRIGGER_STOP_TXT "STOP" +#define TRIGGER_PAUSE_TXT "PAUSE" + +#define TRIGGER_25_PERCENT_TXT "25 PERCENT" +#define TRIGGER_50_PERCENT_TXT "50 PERCENT" +#define TRIGGER_75_PERCENT_TXT "75 PERCENT" +#define TRIGGER_100_PERCENT_TXT "100 PERCENT" + +#define PATTERN_MATCH_NOT_TXT "NOT" + + LPCSTR __cdecl FindOneOf(LPCSTR p1,LPCSTR p2); + LONG __cdecl recursiveDeleteKey(HKEY hKeyParent,const char *lpszKeyChild); + WINBOOL __cdecl SubkeyExists(const char *pszPath,const char *szSubkey); + WINBOOL __cdecl setKeyAndValue(const char *szKey,const char *szSubkey,const char *szValue,const char *szName); + +#pragma pack(push,1) + + typedef struct _IP { + __MINGW_EXTENSION union { + BYTE Version; + BYTE HdrLen; + }; + BYTE ServiceType; + WORD TotalLen; + WORD ID; + __MINGW_EXTENSION union { + WORD Flags; + WORD FragOff; + }; + BYTE TimeToLive; + BYTE Protocol; + WORD HdrChksum; + DWORD SrcAddr; + DWORD DstAddr; + BYTE Options[0]; + } IP; + + typedef IP *LPIP; + typedef IP UNALIGNED *ULPIP; + + typedef struct _PSUHDR { + DWORD ph_SrcIP; + DWORD ph_DstIP; + UCHAR ph_Zero; + UCHAR ph_Proto; + WORD ph_ProtLen; + } PSUHDR; + + typedef PSUHDR UNALIGNED *LPPSUHDR; + +#define IP_VERSION_MASK ((BYTE) 0xf0) +#define IP_VERSION_SHIFT (4) +#define IP_HDRLEN_MASK ((BYTE) 0x0f) +#define IP_HDRLEN_SHIFT (0) +#define IP_PRECEDENCE_MASK ((BYTE) 0xE0) +#define IP_PRECEDENCE_SHIFT (5) +#define IP_TOS_MASK ((BYTE) 0x1E) +#define IP_TOS_SHIFT (1) +#define IP_DELAY_MASK ((BYTE) 0x10) +#define IP_THROUGHPUT_MASK ((BYTE) 0x08) +#define IP_RELIABILITY_MASK ((BYTE) 0x04) +#define IP_FLAGS_MASK ((BYTE) 0xE0) +#define IP_FLAGS_SHIFT (13) +#define IP_DF_MASK ((BYTE) 0x40) +#define IP_MF_MASK ((BYTE) 0x20) +#define IP_MF_SHIFT (5) +#define IP_FRAGOFF_MASK ((WORD) 0x1FFF) +#define IP_FRAGOFF_SHIFT (3) +#define IP_TCC_MASK ((DWORD) 0xFFFFFF00) +#define IP_TIME_OPTS_MASK ((BYTE) 0x0F) +#define IP_MISS_STNS_MASK ((BYTE) 0xF0) + +#define IP_TIME_OPTS_SHIFT (0) +#define IP_MISS_STNS_SHIFT (4) + +#define IP_CHKSUM_OFF 10 + +#ifndef __CRT__NO_INLINE + INLINE BYTE IP_Version(ULPIP pIP) { return (pIP->Version & IP_VERSION_MASK) >> IP_VERSION_SHIFT; } + INLINE DWORD IP_HdrLen(ULPIP pIP) { return ((pIP->HdrLen & IP_HDRLEN_MASK) >> IP_HDRLEN_SHIFT) << 2; } + INLINE WORD IP_FragOff(ULPIP pIP) { return (XCHG(pIP->FragOff) & IP_FRAGOFF_MASK) << IP_FRAGOFF_SHIFT; } + INLINE DWORD IP_TotalLen(ULPIP pIP) { return XCHG(pIP->TotalLen); } + INLINE DWORD IP_MoreFragments(ULPIP pIP) { return (pIP->Flags & IP_MF_MASK) >> IP_MF_SHIFT; } +#endif + +#define PORT_TCPMUX 1 +#define PORT_RJE 5 +#define PORT_ECHO 7 +#define PORT_DISCARD 9 +#define PORT_USERS 11 +#define PORT_DAYTIME 13 +#define PORT_NETSTAT 15 +#define PORT_QUOTE 17 +#define PORT_CHARGEN 19 +#define PORT_FTPDATA 20 +#define PORT_FTP 21 +#define PORT_TELNET 23 +#define PORT_SMTP 25 +#define PORT_NSWFE 27 +#define PORT_MSGICP 29 +#define PORT_MSGAUTH 31 +#define PORT_DSP 33 +#define PORT_PRTSERVER 35 +#define PORT_TIME 37 +#define PORT_RLP 39 +#define PORT_GRAPHICS 41 +#define PORT_NAMESERVER 42 +#define PORT_NICNAME 43 +#define PORT_MPMFLAGS 44 +#define PORT_MPM 45 +#define PORT_MPMSND 46 +#define PORT_NIFTP 47 +#define PORT_LOGIN 49 +#define PORT_LAMAINT 51 +#define PORT_DOMAIN 53 +#define PORT_ISIGL 55 +#define PORT_ANYTERMACC 57 +#define PORT_ANYFILESYS 59 +#define PORT_NIMAIL 61 +#define PORT_VIAFTP 63 +#define PORT_TACACSDS 65 +#define PORT_BOOTPS 67 +#define PORT_BOOTPC 68 +#define PORT_TFTP 69 +#define PORT_NETRJS1 71 +#define PORT_NETRJS2 72 +#define PORT_NETRJS3 73 +#define PORT_NETRJS4 74 +#define PORT_ANYDIALOUT 75 +#define PORT_ANYRJE 77 +#define PORT_FINGER 79 +#define PORT_HTTP 80 +#define PORT_HOSTS2NS 81 +#define PORT_MITMLDEV1 83 +#define PORT_MITMLDEV2 85 +#define PORT_ANYTERMLINK 87 +#define PORT_SUMITTG 89 +#define PORT_MITDOV 91 +#define PORT_DCP 93 +#define PORT_SUPDUP 95 +#define PORT_SWIFTRVF 97 +#define PORT_TACNEWS 98 +#define PORT_METAGRAM 99 +#define PORT_NEWACCT 100 +#define PORT_HOSTNAME 101 +#define PORT_ISOTSAP 102 +#define PORT_X400 103 +#define PORT_X400SND 104 +#define PORT_CSNETNS 105 +#define PORT_RTELNET 107 +#define PORT_POP2 109 +#define PORT_POP3 110 +#define PORT_SUNRPC 111 +#define PORT_AUTH 113 +#define PORT_SFTP 115 +#define PORT_UUCPPATH 117 +#define PORT_NNTP 119 +#define PORT_ERPC 121 +#define PORT_NTP 123 +#define PORT_LOCUSMAP 125 +#define PORT_LOCUSCON 127 +#define PORT_PWDGEN 129 +#define PORT_CISCOFNA 130 +#define PORT_CISCOTNA 131 +#define PORT_CISCOSYS 132 +#define PORT_STATSRV 133 +#define PORT_INGRESNET 134 +#define PORT_LOCSRV 135 +#define PORT_PROFILE 136 +#define PORT_NETBIOSNS 137 +#define PORT_NETBIOSDGM 138 +#define PORT_NETBIOSSSN 139 +#define PORT_EMFISDATA 140 +#define PORT_EMFISCNTL 141 +#define PORT_BLIDM 142 +#define PORT_IMAP2 143 +#define PORT_NEWS 144 +#define PORT_UAAC 145 +#define PORT_ISOTP0 146 +#define PORT_ISOIP 147 +#define PORT_CRONUS 148 +#define PORT_AED512 149 +#define PORT_SQLNET 150 +#define PORT_HEMS 151 +#define PORT_BFTP 152 +#define PORT_SGMP 153 +#define PORT_NETSCPROD 154 +#define PORT_NETSCDEV 155 +#define PORT_SQLSRV 156 +#define PORT_KNETCMP 157 +#define PORT_PCMAILSRV 158 +#define PORT_NSSROUTING 159 +#define PORT_SGMPTRAPS 160 +#define PORT_SNMP 161 +#define PORT_SNMPTRAP 162 +#define PORT_CMIPMANAGE 163 +#define PORT_CMIPAGENT 164 +#define PORT_XNSCOURIER 165 +#define PORT_SNET 166 +#define PORT_NAMP 167 +#define PORT_RSVD 168 +#define PORT_SEND 169 +#define PORT_PRINTSRV 170 +#define PORT_MULTIPLEX 171 +#define PORT_CL1 172 +#define PORT_XYPLEXMUX 173 +#define PORT_MAILQ 174 +#define PORT_VMNET 175 +#define PORT_GENRADMUX 176 +#define PORT_XDMCP 177 +#define PORT_NEXTSTEP 178 +#define PORT_BGP 179 +#define PORT_RIS 180 +#define PORT_UNIFY 181 +#define PORT_UNISYSCAM 182 +#define PORT_OCBINDER 183 +#define PORT_OCSERVER 184 +#define PORT_REMOTEKIS 185 +#define PORT_KIS 186 +#define PORT_ACI 187 +#define PORT_MUMPS 188 +#define PORT_QFT 189 +#define PORT_GACP 190 +#define PORT_PROSPERO 191 +#define PORT_OSUNMS 192 +#define PORT_SRMP 193 +#define PORT_IRC 194 +#define PORT_DN6NLMAUD 195 +#define PORT_DN6SMMRED 196 +#define PORT_DLS 197 +#define PORT_DLSMON 198 +#define PORT_ATRMTP 201 +#define PORT_ATNBP 202 +#define PORT_AT3 203 +#define PORT_ATECHO 204 +#define PORT_AT5 205 +#define PORT_ATZIS 206 +#define PORT_AT7 207 +#define PORT_AT8 208 +#define PORT_SURMEAS 243 +#define PORT_LINK 245 +#define PORT_DSP3270 246 +#define PORT_LDAP1 389 +#define PORT_ISAKMP 500 +#define PORT_REXEC 512 +#define PORT_RLOGIN 513 +#define PORT_RSH 514 +#define PORT_LPD 515 +#define PORT_RIP 520 +#define PORT_TEMPO 526 +#define PORT_COURIER 530 +#define PORT_NETNEWS 532 +#define PORT_UUCPD 540 +#define PORT_KLOGIN 543 +#define PORT_KSHELL 544 +#define PORT_DSF 555 +#define PORT_REMOTEEFS 556 +#define PORT_CHSHELL 562 +#define PORT_METER 570 +#define PORT_PCSERVER 600 +#define PORT_NQS 607 +#define PORT_HMMP_INDICATION 612 +#define PORT_HMMP_OPERATION 613 +#define PORT_MDQS 666 +#define PORT_LPD721 721 +#define PORT_LPD722 722 +#define PORT_LPD723 723 +#define PORT_LPD724 724 +#define PORT_LPD725 725 +#define PORT_LPD726 726 +#define PORT_LPD727 727 +#define PORT_LPD728 728 +#define PORT_LPD729 729 +#define PORT_LPD730 730 +#define PORT_LPD731 731 +#define PORT_RFILE 750 +#define PORT_PUMP 751 +#define PORT_QRH 752 +#define PORT_RRH 753 +#define PORT_TELL 754 +#define PORT_NLOGIN 758 +#define PORT_CON 759 +#define PORT_NS 760 +#define PORT_RXE 761 +#define PORT_QUOTAD 762 +#define PORT_CYCLESERV 763 +#define PORT_OMSERV 764 +#define PORT_WEBSTER 765 +#define PORT_PHONEBOOK 767 +#define PORT_VID 769 +#define PORT_RTIP 771 +#define PORT_CYCLESERV2 772 +#define PORT_SUBMIT 773 +#define PORT_RPASSWD 774 +#define PORT_ENTOMB 775 +#define PORT_WPAGES 776 +#define PORT_WPGS 780 +#define PORT_MDBSDAEMON 800 +#define PORT_DEVICE 801 +#define PORT_MAITRD 997 +#define PORT_BUSBOY 998 +#define PORT_GARCON 999 +#define PORT_NFS 2049 +#define PORT_LDAP2 3268 +#define PORT_PPTP 5678 + + typedef struct _RequestReplyFields { + WORD ID; + WORD SeqNo; + } ReqReply; + + typedef struct _ParameterProblemFields { + BYTE Pointer; + BYTE junk[3]; + } ParmProb; + + typedef struct _TimestampFields { + DWORD tsOrig; + DWORD tsRecv; + DWORD tsXmit; + } TS; + + typedef struct _RouterAnnounceHeaderFields { + BYTE NumAddrs; + BYTE AddrEntrySize; + WORD Lifetime; + } RouterAH; + + typedef struct _RouterAnnounceEntry { + DWORD Address; + DWORD PreferenceLevel; + } RouterAE; + + typedef struct _ICMP { + BYTE Type; + BYTE Code; + WORD Checksum; + __MINGW_EXTENSION union { + DWORD Unused; + DWORD Address; + ReqReply RR; + ParmProb PP; + RouterAH RAH; + }; + __MINGW_EXTENSION union { + TS Time; + IP IP; + RouterAE RAE[0]; + }; + } ICMP; + + typedef ICMP *LPICMP; + typedef ICMP UNALIGNED *ULPICMP; +#define ICMP_HEADER_LENGTH (8) + +#define ICMP_IP_DATA_LENGTH (8) + +#define ECHO_REPLY (0) +#define DESTINATION_UNREACHABLE (3) +#define SOURCE_QUENCH (4) +#define REDIRECT (5) +#define ECHO (8) +#define ROUTER_ADVERTISEMENT (9) +#define ROUTER_SOLICITATION (10) +#define TIME_EXCEEDED (11) +#define PARAMETER_PROBLEM (12) +#define TIMESTAMP (13) +#define TIMESTAMP_REPLY (14) +#define INFORMATION_REQUEST (15) +#define INFORMATION_REPLY (16) +#define ADDRESS_MASK_REQUEST (17) +#define ADDRESS_MASK_REPLY (18) + + typedef struct __MIDL___MIDL_itf_netmon_0000_0018 { + UCHAR ha_address[6]; + } HOST_ADDRESS; + + typedef struct _IPXADDRESS { + ULONG ipx_NetNumber; + HOST_ADDRESS ipx_HostAddr; + } IPXADDRESS; + + typedef IPXADDRESS UNALIGNED *PIPXADDRESS; + + typedef struct _NET_ADDRESS { + IPXADDRESS na_IPXAddr; + USHORT na_socket; + } NET_ADDRESS; + + typedef NET_ADDRESS UNALIGNED *UPNET_ADDRESS; + + typedef struct __MIDL___MIDL_itf_netmon_0000_0019 { + USHORT ipx_checksum; + USHORT ipx_length; + UCHAR ipx_xport_control; + UCHAR ipx_packet_type; + NET_ADDRESS ipx_dest; + NET_ADDRESS ipx_source; + } IPX_HDR; + + typedef IPX_HDR UNALIGNED *ULPIPX_HDR; + + typedef struct _SPX_HDR { + IPX_HDR spx_idp_hdr; + UCHAR spx_conn_ctrl; + UCHAR spx_data_type; + USHORT spx_src_conn_id; + USHORT spx_dest_conn_id; + USHORT spx_sequence_num; + USHORT spx_ack_num; + USHORT spx_alloc_num; + } SPX_HDR; + + typedef SPX_HDR UNALIGNED *PSPX_HDR; + + typedef struct _TCP { + WORD SrcPort; + WORD DstPort; + DWORD SeqNum; + DWORD AckNum; + BYTE DataOff; + BYTE Flags; + WORD Window; + WORD Chksum; + WORD UrgPtr; + } TCP; + + typedef TCP *LPTCP; + + typedef TCP UNALIGNED *ULPTCP; + +#ifndef __CRT__NO_INLINE + INLINE DWORD TCP_HdrLen(ULPTCP pTCP) { return (pTCP->DataOff & 0xf0) >> 2; } + INLINE DWORD TCP_SrcPort(ULPTCP pTCP) { return XCHG(pTCP->SrcPort); } + INLINE DWORD TCP_DstPort(ULPTCP pTCP) { return XCHG(pTCP->DstPort); } +#endif + +#define TCP_OPTION_ENDOFOPTIONS (0) +#define TCP_OPTION_NOP (1) +#define TCP_OPTION_MAXSEGSIZE (2) +#define TCP_OPTION_WSCALE (3) +#define TCP_OPTION_SACK_PERMITTED (4) +#define TCP_OPTION_SACK (5) +#define TCP_OPTION_TIMESTAMPS (8) + +#define TCP_FLAG_URGENT (0x20) +#define TCP_FLAG_ACK (0x10) +#define TCP_FLAG_PUSH (0x8) +#define TCP_FLAG_RESET (0x4) +#define TCP_FLAG_SYN (0x2) +#define TCP_FLAG_FIN (0x1) +#define TCP_RESERVED_MASK (0xfc0) + +#pragma pack(pop) + +#define DEFAULT_DELAYED_BUFFER_SIZE (1) +#define USE_DEFAULT_DRIVE_LETTER (0) +#define RTC_FRAME_SIZE_FULL (0) + + extern RPC_IF_HANDLE __MIDL_itf_netmon_0000_v0_0_c_ifspec; + extern RPC_IF_HANDLE __MIDL_itf_netmon_0000_v0_0_s_ifspec; + +#ifndef __IDelaydC_INTERFACE_DEFINED__ +#define __IDelaydC_INTERFACE_DEFINED__ + EXTERN_C const IID IID_IDelaydC; +#if defined(__cplusplus) && !defined(CINTERFACE) + struct IDelaydC : public IUnknown { + public: + virtual HRESULT WINAPI Connect(HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob) = 0; + virtual HRESULT WINAPI Disconnect(void) = 0; + virtual HRESULT WINAPI QueryStatus(NETWORKSTATUS *pNetworkStatus) = 0; + virtual HRESULT WINAPI Configure(HBLOB hConfigurationBlob,HBLOB hErrorBlob) = 0; + virtual HRESULT WINAPI Start(char *pFileName) = 0; + virtual HRESULT WINAPI Pause(void) = 0; + virtual HRESULT WINAPI Resume(void) = 0; + virtual HRESULT WINAPI Stop(LPSTATISTICS lpStats) = 0; + virtual HRESULT WINAPI GetControlState(WINBOOL *IsRunnning,WINBOOL *IsPaused) = 0; + virtual HRESULT WINAPI GetTotalStatistics(LPSTATISTICS lpStats,WINBOOL fClearAfterReading) = 0; + virtual HRESULT WINAPI GetConversationStatistics(DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading) = 0; + virtual HRESULT WINAPI InsertSpecialFrame(DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength) = 0; + virtual HRESULT WINAPI QueryStations(QUERYTABLE *lpQueryTable) = 0; + }; +#else + typedef struct IDelaydCVtbl { + BEGIN_INTERFACE + HRESULT (WINAPI *QueryInterface)(IDelaydC *This,REFIID riid,void **ppvObject); + ULONG (WINAPI *AddRef)(IDelaydC *This); + ULONG (WINAPI *Release)(IDelaydC *This); + HRESULT (WINAPI *Connect)(IDelaydC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob); + HRESULT (WINAPI *Disconnect)(IDelaydC *This); + HRESULT (WINAPI *QueryStatus)(IDelaydC *This,NETWORKSTATUS *pNetworkStatus); + HRESULT (WINAPI *Configure)(IDelaydC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob); + HRESULT (WINAPI *Start)(IDelaydC *This,char *pFileName); + HRESULT (WINAPI *Pause)(IDelaydC *This); + HRESULT (WINAPI *Resume)(IDelaydC *This); + HRESULT (WINAPI *Stop)(IDelaydC *This,LPSTATISTICS lpStats); + HRESULT (WINAPI *GetControlState)(IDelaydC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused); + HRESULT (WINAPI *GetTotalStatistics)(IDelaydC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading); + HRESULT (WINAPI *GetConversationStatistics)(IDelaydC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading); + HRESULT (WINAPI *InsertSpecialFrame)(IDelaydC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength); + HRESULT (WINAPI *QueryStations)(IDelaydC *This,QUERYTABLE *lpQueryTable); + END_INTERFACE + } IDelaydCVtbl; + struct IDelaydC { + CONST_VTBL struct IDelaydCVtbl *lpVtbl; + }; +#ifdef COBJMACROS +#define IDelaydC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IDelaydC_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IDelaydC_Release(This) (This)->lpVtbl->Release(This) +#define IDelaydC_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob) (This)->lpVtbl->Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob) +#define IDelaydC_Disconnect(This) (This)->lpVtbl->Disconnect(This) +#define IDelaydC_QueryStatus(This,pNetworkStatus) (This)->lpVtbl->QueryStatus(This,pNetworkStatus) +#define IDelaydC_Configure(This,hConfigurationBlob,hErrorBlob) (This)->lpVtbl->Configure(This,hConfigurationBlob,hErrorBlob) +#define IDelaydC_Start(This,pFileName) (This)->lpVtbl->Start(This,pFileName) +#define IDelaydC_Pause(This) (This)->lpVtbl->Pause(This) +#define IDelaydC_Resume(This) (This)->lpVtbl->Resume(This) +#define IDelaydC_Stop(This,lpStats) (This)->lpVtbl->Stop(This,lpStats) +#define IDelaydC_GetControlState(This,IsRunnning,IsPaused) (This)->lpVtbl->GetControlState(This,IsRunnning,IsPaused) +#define IDelaydC_GetTotalStatistics(This,lpStats,fClearAfterReading) (This)->lpVtbl->GetTotalStatistics(This,lpStats,fClearAfterReading) +#define IDelaydC_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) (This)->lpVtbl->GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) +#define IDelaydC_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) (This)->lpVtbl->InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) +#define IDelaydC_QueryStations(This,lpQueryTable) (This)->lpVtbl->QueryStations(This,lpQueryTable) +#endif +#endif + HRESULT WINAPI IDelaydC_Connect_Proxy(IDelaydC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob); + void __RPC_STUB IDelaydC_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_Disconnect_Proxy(IDelaydC *This); + void __RPC_STUB IDelaydC_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_QueryStatus_Proxy(IDelaydC *This,NETWORKSTATUS *pNetworkStatus); + void __RPC_STUB IDelaydC_QueryStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_Configure_Proxy(IDelaydC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob); + void __RPC_STUB IDelaydC_Configure_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_Start_Proxy(IDelaydC *This,char *pFileName); + void __RPC_STUB IDelaydC_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_Pause_Proxy(IDelaydC *This); + void __RPC_STUB IDelaydC_Pause_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_Resume_Proxy(IDelaydC *This); + void __RPC_STUB IDelaydC_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_Stop_Proxy(IDelaydC *This,LPSTATISTICS lpStats); + void __RPC_STUB IDelaydC_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_GetControlState_Proxy(IDelaydC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused); + void __RPC_STUB IDelaydC_GetControlState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_GetTotalStatistics_Proxy(IDelaydC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading); + void __RPC_STUB IDelaydC_GetTotalStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_GetConversationStatistics_Proxy(IDelaydC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading); + void __RPC_STUB IDelaydC_GetConversationStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_InsertSpecialFrame_Proxy(IDelaydC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength); + void __RPC_STUB IDelaydC_InsertSpecialFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IDelaydC_QueryStations_Proxy(IDelaydC *This,QUERYTABLE *lpQueryTable); + void __RPC_STUB IDelaydC_QueryStations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); +#endif + +#define DEFAULT_RTC_BUFFER_SIZE (0x100000) + + extern RPC_IF_HANDLE __MIDL_itf_netmon_0010_v0_0_c_ifspec; + extern RPC_IF_HANDLE __MIDL_itf_netmon_0010_v0_0_s_ifspec; + +#ifndef __IRTC_INTERFACE_DEFINED__ +#define __IRTC_INTERFACE_DEFINED__ + EXTERN_C const IID IID_IRTC; +#if defined(__cplusplus) && !defined(CINTERFACE) + struct IRTC : public IUnknown { + public: + virtual HRESULT WINAPI Connect(HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID FramesCallbackProc,LPVOID UserContext,HBLOB hErrorBlob) = 0; + virtual HRESULT WINAPI Disconnect(void) = 0; + virtual HRESULT WINAPI QueryStatus(NETWORKSTATUS *pNetworkStatus) = 0; + virtual HRESULT WINAPI Configure(HBLOB hConfigurationBlob,HBLOB hErrorBlob) = 0; + virtual HRESULT WINAPI Start(void) = 0; + virtual HRESULT WINAPI Pause(void) = 0; + virtual HRESULT WINAPI Resume(void) = 0; + virtual HRESULT WINAPI Stop(void) = 0; + virtual HRESULT WINAPI GetControlState(WINBOOL *IsRunnning,WINBOOL *IsPaused) = 0; + virtual HRESULT WINAPI GetTotalStatistics(LPSTATISTICS lpStats,WINBOOL fClearAfterReading) = 0; + virtual HRESULT WINAPI GetConversationStatistics(DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading) = 0; + virtual HRESULT WINAPI InsertSpecialFrame(DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength) = 0; + virtual HRESULT WINAPI QueryStations(QUERYTABLE *lpQueryTable) = 0; + }; +#else + typedef struct IRTCVtbl { + BEGIN_INTERFACE + HRESULT (WINAPI *QueryInterface)(IRTC *This,REFIID riid,void **ppvObject); + ULONG (WINAPI *AddRef)(IRTC *This); + ULONG (WINAPI *Release)(IRTC *This); + HRESULT (WINAPI *Connect)(IRTC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID FramesCallbackProc,LPVOID UserContext,HBLOB hErrorBlob); + HRESULT (WINAPI *Disconnect)(IRTC *This); + HRESULT (WINAPI *QueryStatus)(IRTC *This,NETWORKSTATUS *pNetworkStatus); + HRESULT (WINAPI *Configure)(IRTC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob); + HRESULT (WINAPI *Start)(IRTC *This); + HRESULT (WINAPI *Pause)(IRTC *This); + HRESULT (WINAPI *Resume)(IRTC *This); + HRESULT (WINAPI *Stop)(IRTC *This); + HRESULT (WINAPI *GetControlState)(IRTC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused); + HRESULT (WINAPI *GetTotalStatistics)(IRTC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading); + HRESULT (WINAPI *GetConversationStatistics)(IRTC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading); + HRESULT (WINAPI *InsertSpecialFrame)(IRTC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength); + HRESULT (WINAPI *QueryStations)(IRTC *This,QUERYTABLE *lpQueryTable); + END_INTERFACE + } IRTCVtbl; + struct IRTC { + CONST_VTBL struct IRTCVtbl *lpVtbl; + }; +#ifdef COBJMACROS +#define IRTC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IRTC_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRTC_Release(This) (This)->lpVtbl->Release(This) +#define IRTC_Connect(This,hInputBlob,StatusCallbackProc,FramesCallbackProc,UserContext,hErrorBlob) (This)->lpVtbl->Connect(This,hInputBlob,StatusCallbackProc,FramesCallbackProc,UserContext,hErrorBlob) +#define IRTC_Disconnect(This) (This)->lpVtbl->Disconnect(This) +#define IRTC_QueryStatus(This,pNetworkStatus) (This)->lpVtbl->QueryStatus(This,pNetworkStatus) +#define IRTC_Configure(This,hConfigurationBlob,hErrorBlob) (This)->lpVtbl->Configure(This,hConfigurationBlob,hErrorBlob) +#define IRTC_Start(This) (This)->lpVtbl->Start(This) +#define IRTC_Pause(This) (This)->lpVtbl->Pause(This) +#define IRTC_Resume(This) (This)->lpVtbl->Resume(This) +#define IRTC_Stop(This) (This)->lpVtbl->Stop(This) +#define IRTC_GetControlState(This,IsRunnning,IsPaused) (This)->lpVtbl->GetControlState(This,IsRunnning,IsPaused) +#define IRTC_GetTotalStatistics(This,lpStats,fClearAfterReading) (This)->lpVtbl->GetTotalStatistics(This,lpStats,fClearAfterReading) +#define IRTC_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) (This)->lpVtbl->GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) +#define IRTC_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) (This)->lpVtbl->InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) +#define IRTC_QueryStations(This,lpQueryTable) (This)->lpVtbl->QueryStations(This,lpQueryTable) +#endif +#endif + HRESULT WINAPI IRTC_Connect_Proxy(IRTC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID FramesCallbackProc,LPVOID UserContext,HBLOB hErrorBlob); + void __RPC_STUB IRTC_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_Disconnect_Proxy(IRTC *This); + void __RPC_STUB IRTC_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_QueryStatus_Proxy(IRTC *This,NETWORKSTATUS *pNetworkStatus); + void __RPC_STUB IRTC_QueryStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_Configure_Proxy(IRTC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob); + void __RPC_STUB IRTC_Configure_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_Start_Proxy(IRTC *This); + void __RPC_STUB IRTC_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_Pause_Proxy(IRTC *This); + void __RPC_STUB IRTC_Pause_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_Resume_Proxy(IRTC *This); + void __RPC_STUB IRTC_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_Stop_Proxy(IRTC *This); + void __RPC_STUB IRTC_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_GetControlState_Proxy(IRTC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused); + void __RPC_STUB IRTC_GetControlState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_GetTotalStatistics_Proxy(IRTC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading); + void __RPC_STUB IRTC_GetTotalStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_GetConversationStatistics_Proxy(IRTC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading); + void __RPC_STUB IRTC_GetConversationStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_InsertSpecialFrame_Proxy(IRTC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength); + void __RPC_STUB IRTC_InsertSpecialFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IRTC_QueryStations_Proxy(IRTC *This,QUERYTABLE *lpQueryTable); + void __RPC_STUB IRTC_QueryStations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); +#endif + + extern RPC_IF_HANDLE __MIDL_itf_netmon_0012_v0_0_c_ifspec; + extern RPC_IF_HANDLE __MIDL_itf_netmon_0012_v0_0_s_ifspec; + +#ifndef __IStats_INTERFACE_DEFINED__ +#define __IStats_INTERFACE_DEFINED__ + EXTERN_C const IID IID_IStats; +#if defined(__cplusplus) && !defined(CINTERFACE) + struct IStats : public IUnknown { + public: + virtual HRESULT WINAPI Connect(HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob) = 0; + virtual HRESULT WINAPI Disconnect(void) = 0; + virtual HRESULT WINAPI QueryStatus(NETWORKSTATUS *pNetworkStatus) = 0; + virtual HRESULT WINAPI Configure(HBLOB hConfigurationBlob,HBLOB hErrorBlob) = 0; + virtual HRESULT WINAPI Start(void) = 0; + virtual HRESULT WINAPI Pause(void) = 0; + virtual HRESULT WINAPI Resume(void) = 0; + virtual HRESULT WINAPI Stop(void) = 0; + virtual HRESULT WINAPI GetControlState(WINBOOL *IsRunnning,WINBOOL *IsPaused) = 0; + virtual HRESULT WINAPI GetTotalStatistics(LPSTATISTICS lpStats,WINBOOL fClearAfterReading) = 0; + virtual HRESULT WINAPI GetConversationStatistics(DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading) = 0; + virtual HRESULT WINAPI InsertSpecialFrame(DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength) = 0; + virtual HRESULT WINAPI QueryStations(QUERYTABLE *lpQueryTable) = 0; + }; +#else + typedef struct IStatsVtbl { + BEGIN_INTERFACE + HRESULT (WINAPI *QueryInterface)(IStats *This,REFIID riid,void **ppvObject); + ULONG (WINAPI *AddRef)(IStats *This); + ULONG (WINAPI *Release)(IStats *This); + HRESULT (WINAPI *Connect)(IStats *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob); + HRESULT (WINAPI *Disconnect)(IStats *This); + HRESULT (WINAPI *QueryStatus)(IStats *This,NETWORKSTATUS *pNetworkStatus); + HRESULT (WINAPI *Configure)(IStats *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob); + HRESULT (WINAPI *Start)(IStats *This); + HRESULT (WINAPI *Pause)(IStats *This); + HRESULT (WINAPI *Resume)(IStats *This); + HRESULT (WINAPI *Stop)(IStats *This); + HRESULT (WINAPI *GetControlState)(IStats *This,WINBOOL *IsRunnning,WINBOOL *IsPaused); + HRESULT (WINAPI *GetTotalStatistics)(IStats *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading); + HRESULT (WINAPI *GetConversationStatistics)(IStats *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading); + HRESULT (WINAPI *InsertSpecialFrame)(IStats *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength); + HRESULT (WINAPI *QueryStations)(IStats *This,QUERYTABLE *lpQueryTable); + END_INTERFACE + } IStatsVtbl; + struct IStats { + CONST_VTBL struct IStatsVtbl *lpVtbl; + }; +#ifdef COBJMACROS +#define IStats_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IStats_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IStats_Release(This) (This)->lpVtbl->Release(This) +#define IStats_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob) (This)->lpVtbl->Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob) +#define IStats_Disconnect(This) (This)->lpVtbl->Disconnect(This) +#define IStats_QueryStatus(This,pNetworkStatus) (This)->lpVtbl->QueryStatus(This,pNetworkStatus) +#define IStats_Configure(This,hConfigurationBlob,hErrorBlob) (This)->lpVtbl->Configure(This,hConfigurationBlob,hErrorBlob) +#define IStats_Start(This) (This)->lpVtbl->Start(This) +#define IStats_Pause(This) (This)->lpVtbl->Pause(This) +#define IStats_Resume(This) (This)->lpVtbl->Resume(This) +#define IStats_Stop(This) (This)->lpVtbl->Stop(This) +#define IStats_GetControlState(This,IsRunnning,IsPaused) (This)->lpVtbl->GetControlState(This,IsRunnning,IsPaused) +#define IStats_GetTotalStatistics(This,lpStats,fClearAfterReading) (This)->lpVtbl->GetTotalStatistics(This,lpStats,fClearAfterReading) +#define IStats_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) (This)->lpVtbl->GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) +#define IStats_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) (This)->lpVtbl->InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) +#define IStats_QueryStations(This,lpQueryTable) (This)->lpVtbl->QueryStations(This,lpQueryTable) +#endif +#endif + HRESULT WINAPI IStats_Connect_Proxy(IStats *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob); + void __RPC_STUB IStats_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_Disconnect_Proxy(IStats *This); + void __RPC_STUB IStats_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_QueryStatus_Proxy(IStats *This,NETWORKSTATUS *pNetworkStatus); + void __RPC_STUB IStats_QueryStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_Configure_Proxy(IStats *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob); + void __RPC_STUB IStats_Configure_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_Start_Proxy(IStats *This); + void __RPC_STUB IStats_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_Pause_Proxy(IStats *This); + void __RPC_STUB IStats_Pause_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_Resume_Proxy(IStats *This); + void __RPC_STUB IStats_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_Stop_Proxy(IStats *This); + void __RPC_STUB IStats_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_GetControlState_Proxy(IStats *This,WINBOOL *IsRunnning,WINBOOL *IsPaused); + void __RPC_STUB IStats_GetControlState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_GetTotalStatistics_Proxy(IStats *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading); + void __RPC_STUB IStats_GetTotalStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_GetConversationStatistics_Proxy(IStats *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading); + void __RPC_STUB IStats_GetConversationStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_InsertSpecialFrame_Proxy(IStats *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength); + void __RPC_STUB IStats_InsertSpecialFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); + HRESULT WINAPI IStats_QueryStations_Proxy(IStats *This,QUERYTABLE *lpQueryTable); + void __RPC_STUB IStats_QueryStations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); +#endif + +#pragma pack() + + extern RPC_IF_HANDLE __MIDL_itf_netmon_0014_v0_0_c_ifspec; + extern RPC_IF_HANDLE __MIDL_itf_netmon_0014_v0_0_s_ifspec; + +#ifdef __cplusplus +} +#endif +#endif
