Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      7 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      8 #endif
      9 
     10 #include "rpc.h"
     11 #include "rpcndr.h"
     12 
     13 #ifndef __RPCNDR_H_VERSION__
     14 #error This stub requires an updated version of <rpcndr.h>
     15 #endif
     16 
     17 #ifndef COM_NO_WINDOWS_H
     18 #include "windows.h"
     19 #include "ole2.h"
     20 #endif
     21 
     22 #ifndef __netmon_h__
     23 #define __netmon_h__
     24 
     25 #ifndef __IDelaydC_FWD_DEFINED__
     26 #define __IDelaydC_FWD_DEFINED__
     27 typedef struct IDelaydC IDelaydC;
     28 #endif
     29 
     30 #ifndef __IRTC_FWD_DEFINED__
     31 #define __IRTC_FWD_DEFINED__
     32 typedef struct IRTC IRTC;
     33 #endif
     34 
     35 #ifndef __IStats_FWD_DEFINED__
     36 #define __IStats_FWD_DEFINED__
     37 typedef struct IStats IStats;
     38 #endif
     39 
     40 #include "unknwn.h"
     41 
     42 #ifdef __cplusplus
     43 extern "C"{
     44 #endif
     45 
     46 #ifndef __MIDL_user_allocate_free_DEFINED__
     47 #define __MIDL_user_allocate_free_DEFINED__
     48   void *__RPC_API MIDL_user_allocate(size_t);
     49   void __RPC_API MIDL_user_free(void *);
     50 #endif
     51 
     52 #include <winerror.h>
     53 #include <winerror.h>
     54 
     55 #pragma pack(1)
     56 
     57 #ifdef _X86_
     58 #pragma pack(1)
     59 #else
     60 #pragma pack()
     61 #endif
     62 
     63   typedef BYTE *LPBYTE;
     64   typedef const void *HBLOB;
     65 
     66 #define MAC_TYPE_UNKNOWN (0)
     67 #define MAC_TYPE_ETHERNET (1)
     68 #define MAC_TYPE_TOKENRING (2)
     69 #define MAC_TYPE_FDDI (3)
     70 #define MAC_TYPE_ATM (4)
     71 #define MAC_TYPE_1394 (5)
     72 #define MACHINE_NAME_LENGTH (16)
     73 #define USER_NAME_LENGTH (32)
     74 #define ADAPTER_COMMENT_LENGTH (32)
     75 #define CONNECTION_FLAGS_WANT_CONVERSATION_STATS (0x1)
     76 
     77   typedef struct _TRANSMITSTATS {
     78     DWORD TotalFramesSent;
     79     DWORD TotalBytesSent;
     80     DWORD TotalTransmitErrors;
     81   } TRANSMITSTATS;
     82 
     83   typedef TRANSMITSTATS *LPTRANSMITSTATS;
     84 
     85 #define TRANSMITSTATS_SIZE (sizeof(TRANSMITSTATS))
     86 
     87   typedef struct _STATISTICS {
     88     __MINGW_EXTENSION __int64 TimeElapsed;
     89     DWORD TotalFramesCaptured;
     90     DWORD TotalBytesCaptured;
     91     DWORD TotalFramesFiltered;
     92     DWORD TotalBytesFiltered;
     93     DWORD TotalMulticastsFiltered;
     94     DWORD TotalBroadcastsFiltered;
     95     DWORD TotalFramesSeen;
     96     DWORD TotalBytesSeen;
     97     DWORD TotalMulticastsReceived;
     98     DWORD TotalBroadcastsReceived;
     99     DWORD TotalFramesDropped;
    100     DWORD TotalFramesDroppedFromBuffer;
    101     DWORD MacFramesReceived;
    102     DWORD MacCRCErrors;
    103     __MINGW_EXTENSION __int64 MacBytesReceivedEx;
    104     DWORD MacFramesDropped_NoBuffers;
    105     DWORD MacMulticastsReceived;
    106     DWORD MacBroadcastsReceived;
    107     DWORD MacFramesDropped_HwError;
    108   } STATISTICS;
    109 
    110   typedef STATISTICS *LPSTATISTICS;
    111 
    112 #define STATISTICS_SIZE (sizeof(STATISTICS))
    113 
    114 #pragma pack(push,1)
    115 
    116 #define MAX_NAME_SIZE (32)
    117 #define IP_ADDRESS_SIZE (4)
    118 #define MAC_ADDRESS_SIZE (6)
    119 #define IP6_ADDRESS_SIZE (16)
    120 #define MAX_ADDRESS_SIZE (16)
    121 
    122 #define ADDRESS_TYPE_ETHERNET (0)
    123 #define ADDRESS_TYPE_IP (1)
    124 #define ADDRESS_TYPE_IPX (2)
    125 #define ADDRESS_TYPE_TOKENRING (3)
    126 #define ADDRESS_TYPE_FDDI (4)
    127 #define ADDRESS_TYPE_XNS (5)
    128 #define ADDRESS_TYPE_ANY (6)
    129 #define ADDRESS_TYPE_ANY_GROUP (7)
    130 #define ADDRESS_TYPE_FIND_HIGHEST (8)
    131 #define ADDRESS_TYPE_VINES_IP (9)
    132 #define ADDRESS_TYPE_LOCAL_ONLY (10)
    133 #define ADDRESS_TYPE_ATM (11)
    134 #define ADDRESS_TYPE_1394 (12)
    135 #define ADDRESS_TYPE_IP6 (13)
    136 
    137 #define ADDRESSTYPE_FLAGS_NORMALIZE (0x1)
    138 #define ADDRESSTYPE_FLAGS_BIT_REVERSE (0x2)
    139 
    140   typedef struct _VINES_IP_ADDRESS {
    141     DWORD NetID;
    142     WORD SubnetID;
    143   } VINES_IP_ADDRESS;
    144 
    145   typedef VINES_IP_ADDRESS *LPVINES_IP_ADDRESS;
    146 
    147 #define VINES_IP_ADDRESS_SIZE (sizeof(VINES_IP_ADDRESS))
    148 
    149   typedef struct _IPX_ADDR {
    150     BYTE Subnet[4];
    151     BYTE Address[6];
    152   } IPX_ADDR;
    153 
    154   typedef IPX_ADDR *LPIPX_ADDR;
    155 
    156 #define IPX_ADDR_SIZE (sizeof(IPX_ADDR))
    157 
    158   typedef IPX_ADDR XNS_ADDRESS;
    159   typedef IPX_ADDR *LPXNS_ADDRESS;
    160 
    161   typedef struct _ETHERNET_SRC_ADDRESS {
    162     BYTE RoutingBit: 1;
    163     BYTE LocalBit: 1;
    164     BYTE Byte0: 6;
    165     BYTE Reserved[5];
    166   } ETHERNET_SRC_ADDRESS;
    167 
    168   typedef ETHERNET_SRC_ADDRESS *LPETHERNET_SRC_ADDRESS;
    169 
    170   typedef struct _ETHERNET_DST_ADDRESS {
    171     BYTE GroupBit: 1;
    172     BYTE AdminBit: 1;
    173     BYTE Byte0: 6;
    174     BYTE Reserved[5];
    175   } ETHERNET_DST_ADDRESS;
    176 
    177   typedef ETHERNET_DST_ADDRESS *LPETHERNET_DST_ADDRESS;
    178   typedef ETHERNET_SRC_ADDRESS FDDI_SRC_ADDRESS;
    179   typedef ETHERNET_DST_ADDRESS FDDI_DST_ADDRESS;
    180   typedef FDDI_SRC_ADDRESS *LPFDDI_SRC_ADDRESS;
    181   typedef FDDI_DST_ADDRESS *LPFDDI_DST_ADDRESS;
    182 
    183   typedef struct _TOKENRING_SRC_ADDRESS {
    184     BYTE Byte0: 6;
    185     BYTE LocalBit: 1;
    186     BYTE RoutingBit: 1;
    187     BYTE Byte1;
    188     BYTE Byte2: 7;
    189     BYTE Functional: 1;
    190     BYTE Reserved[3];
    191   } TOKENRING_SRC_ADDRESS;
    192 
    193   typedef TOKENRING_SRC_ADDRESS *LPTOKENRING_SRC_ADDRESS;
    194 
    195   typedef struct _TOKENRING_DST_ADDRESS {
    196     BYTE Byte0: 6;
    197     BYTE AdminBit: 1;
    198     BYTE GroupBit: 1;
    199     BYTE Reserved[5];
    200   } TOKENRING_DST_ADDRESS;
    201 
    202   typedef TOKENRING_DST_ADDRESS *LPTOKENRING_DST_ADDRESS;
    203 
    204   typedef struct _ADDRESS2 {
    205     DWORD Type;
    206     __C89_NAMELESS union {
    207       BYTE MACAddress[MAC_ADDRESS_SIZE];
    208       BYTE IPAddress[IP_ADDRESS_SIZE];
    209       BYTE IP6Address[IP6_ADDRESS_SIZE];
    210       BYTE IPXRawAddress[IPX_ADDR_SIZE];
    211       IPX_ADDR IPXAddress;
    212       BYTE VinesIPRawAddress[VINES_IP_ADDRESS_SIZE];
    213       VINES_IP_ADDRESS VinesIPAddress;
    214       ETHERNET_SRC_ADDRESS EthernetSrcAddress;
    215       ETHERNET_DST_ADDRESS EthernetDstAddress;
    216       TOKENRING_SRC_ADDRESS TokenringSrcAddress;
    217       TOKENRING_DST_ADDRESS TokenringDstAddress;
    218       FDDI_SRC_ADDRESS FddiSrcAddress;
    219       FDDI_DST_ADDRESS FddiDstAddress;
    220     };
    221     WORD Flags;
    222   } ADDRESS2;
    223 
    224   typedef ADDRESS2 *LPADDRESS2;
    225 
    226 #define ADDRESS2_SIZE sizeof(ADDRESS2)
    227 
    228 #pragma pack(pop)
    229 
    230 #define ADDRESS_FLAGS_MATCH_DST (0x1)
    231 #define ADDRESS_FLAGS_MATCH_SRC (0x2)
    232 #define ADDRESS_FLAGS_EXCLUDE (0x4)
    233 #define ADDRESS_FLAGS_DST_GROUP_ADDR (0x8)
    234 #define ADDRESS_FLAGS_MATCH_BOTH (0x3)
    235 
    236   typedef struct _ADDRESSPAIR2 {
    237     WORD AddressFlags;
    238     WORD NalReserved;
    239     ADDRESS2 DstAddress;
    240     ADDRESS2 SrcAddress;
    241   } ADDRESSPAIR2;
    242 
    243   typedef ADDRESSPAIR2 *LPADDRESSPAIR2;
    244 
    245 #define ADDRESSPAIR2_SIZE sizeof(ADDRESSPAIR2)
    246 
    247 #define MAX_ADDRESS_PAIRS (8)
    248 
    249   typedef struct _ADDRESSTABLE2 {
    250     DWORD nAddressPairs;
    251     DWORD nNonMacAddressPairs;
    252     ADDRESSPAIR2 AddressPair[MAX_ADDRESS_PAIRS];
    253   } ADDRESSTABLE2;
    254 
    255   typedef ADDRESSTABLE2 *LPADDRESSTABLE2;
    256 
    257 #define ADDRESSTABLE2_SIZE sizeof(ADDRESSTABLE2)
    258 
    259 #define NETWORKINFO_FLAGS_PMODE_NOT_SUPPORTED (0x1)
    260 #define NETWORKINFO_FLAGS_REMOTE_NAL (0x4)
    261 #define NETWORKINFO_FLAGS_REMOTE_NAL_CONNECTED (0x8)
    262 #define NETWORKINFO_FLAGS_REMOTE_CARD (0x10)
    263 #define NETWORKINFO_FLAGS_RAS (0x20)
    264 #define NETWORKINFO_RESERVED_FIELD_SIZE (FIELD_OFFSET(ADDRESS2,IPXAddress) + sizeof(IPX_ADDR))
    265 
    266   typedef struct _NETWORKINFO {
    267     BYTE PermanentAddr[6];
    268     BYTE CurrentAddr[6];
    269     BYTE Reserved[NETWORKINFO_RESERVED_FIELD_SIZE];
    270     DWORD LinkSpeed;
    271     DWORD MacType;
    272     DWORD MaxFrameSize;
    273     DWORD Flags;
    274     DWORD TimestampScaleFactor;
    275     BYTE NodeName[32];
    276     WINBOOL PModeSupported;
    277     BYTE Comment[ADAPTER_COMMENT_LENGTH];
    278   } NETWORKINFO;
    279 
    280   typedef NETWORKINFO *LPNETWORKINFO;
    281 
    282 #define NETWORKINFO_SIZE sizeof(NETWORKINFO)
    283 #define MINIMUM_FRAME_SIZE (32)
    284 #define MAX_PATTERN_LENGTH (16)
    285 
    286 #define PATTERN_MATCH_FLAGS_NOT (0x1)
    287 #define PATTERN_MATCH_FLAGS_RESERVED_1 (0x2)
    288 #define PATTERN_MATCH_FLAGS_PORT_SPECIFIED (0x8)
    289 
    290 #define OFFSET_BASIS_RELATIVE_TO_FRAME (0)
    291 #define OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL (1)
    292 #define OFFSET_BASIS_RELATIVE_TO_IPX (2)
    293 #define OFFSET_BASIS_RELATIVE_TO_IP (3)
    294 #define OFFSET_BASIS_RELATIVE_TO_IP6 (4)
    295 
    296   typedef union __MIDL___MIDL_itf_netmon_0000_0001 {
    297     BYTE NextHeader;
    298     BYTE IPPort;
    299     WORD ByteSwappedIPXPort;
    300   } GENERIC_PORT;
    301 
    302   typedef struct _PATTERNMATCH {
    303     DWORD Flags;
    304     BYTE OffsetBasis;
    305     GENERIC_PORT Port;
    306     WORD Offset;
    307     WORD Length;
    308     BYTE PatternToMatch[16];
    309   } PATTERNMATCH;
    310 
    311   typedef PATTERNMATCH *LPPATTERNMATCH;
    312 
    313 #define PATTERNMATCH_SIZE (sizeof(PATTERNMATCH))
    314 
    315 #define MAX_PATTERNS (4)
    316 
    317   typedef struct _ANDEXP {
    318     DWORD nPatternMatches;
    319     PATTERNMATCH PatternMatch[4];
    320   } ANDEXP;
    321 
    322   typedef ANDEXP *LPANDEXP;
    323 
    324 #define ANDEXP_SIZE (sizeof(ANDEXP))
    325 
    326   typedef struct _EXPRESSION {
    327     DWORD nAndExps;
    328     ANDEXP AndExp[4];
    329   } EXPRESSION;
    330 
    331   typedef EXPRESSION *LPEXPRESSION;
    332 
    333 #define EXPRESSION_SIZE (sizeof(EXPRESSION))
    334 
    335 #define TRIGGER_TYPE_PATTERN_MATCH (1)
    336 #define TRIGGER_TYPE_BUFFER_CONTENT (2)
    337 #define TRIGGER_TYPE_PATTERN_MATCH_THEN_BUFFER_CONTENT (3)
    338 #define TRIGGER_TYPE_BUFFER_CONTENT_THEN_PATTERN_MATCH (4)
    339 
    340 #define TRIGGER_FLAGS_FRAME_RELATIVE (0)
    341 #define TRIGGER_FLAGS_DATA_RELATIVE (0x1)
    342 
    343 #define TRIGGER_ACTION_NOTIFY (0)
    344 #define TRIGGER_ACTION_STOP (0x2)
    345 #define TRIGGER_ACTION_PAUSE (0x3)
    346 
    347 #define TRIGGER_BUFFER_FULL_25_PERCENT (0)
    348 #define TRIGGER_BUFFER_FULL_50_PERCENT (1)
    349 #define TRIGGER_BUFFER_FULL_75_PERCENT (2)
    350 #define TRIGGER_BUFFER_FULL_100_PERCENT (3)
    351 
    352   typedef struct _TRIGGER {
    353     WINBOOL TriggerActive;
    354     BYTE TriggerType;
    355     BYTE TriggerAction;
    356     DWORD TriggerFlags;
    357     PATTERNMATCH TriggerPatternMatch;
    358     DWORD TriggerBufferSize;
    359     DWORD TriggerReserved;
    360     char TriggerCommandLine[260];
    361   } TRIGGER;
    362 
    363   typedef TRIGGER *LPTRIGGER;
    364 
    365 #define TRIGGER_SIZE (sizeof(TRIGGER))
    366 
    367 #define CAPTUREFILTER_FLAGS_INCLUDE_ALL_SAPS (0x1)
    368 #define CAPTUREFILTER_FLAGS_INCLUDE_ALL_ETYPES (0x2)
    369 #define CAPTUREFILTER_FLAGS_TRIGGER (0x4)
    370 #define CAPTUREFILTER_FLAGS_LOCAL_ONLY (0x8)
    371 #define CAPTUREFILTER_FLAGS_DISCARD_COMMENTS (0x10)
    372 #define CAPTUREFILTER_FLAGS_KEEP_RAW (0x20)
    373 #define CAPTUREFILTER_FLAGS_INCLUDE_ALL (0x3)
    374 
    375 #define BUFFER_FULL_25_PERCENT (0)
    376 #define BUFFER_FULL_50_PERCENT (1)
    377 #define BUFFER_FULL_75_PERCENT (2)
    378 #define BUFFER_FULL_100_PERCENT (3)
    379 
    380   typedef struct _CAPTUREFILTER {
    381     DWORD FilterFlags;
    382     LPBYTE lpSapTable;
    383     LPWORD lpEtypeTable;
    384     WORD nSaps;
    385     WORD nEtypes;
    386     LPADDRESSTABLE2 AddressTable;
    387     EXPRESSION FilterExpression;
    388     TRIGGER Trigger;
    389     DWORD nFrameBytesToCopy;
    390     DWORD Reserved;
    391 
    392   } CAPTUREFILTER;
    393 
    394   typedef CAPTUREFILTER *LPCAPTUREFILTER;
    395 
    396 #define CAPTUREFILTER_SIZE sizeof(CAPTUREFILTER)
    397 
    398   typedef struct _FRAME {
    399     __MINGW_EXTENSION __int64 TimeStamp;
    400     DWORD FrameLength;
    401     DWORD nBytesAvail;
    402     BYTE MacFrame[1];
    403   } FRAME;
    404 
    405   typedef FRAME *LPFRAME;
    406 
    407   typedef FRAME UNALIGNED *ULPFRAME;
    408 #define FRAME_SIZE (sizeof(FRAME))
    409 
    410 #define LOW_PROTOCOL_IPX (OFFSET_BASIS_RELATIVE_TO_IPX)
    411 
    412 #define LOW_PROTOCOL_IP (OFFSET_BASIS_RELATIVE_TO_IP)
    413 #define LOW_PROTOCOL_IP6 (OFFSET_BASIS_RELATIVE_TO_IP6)
    414 #define LOW_PROTOCOL_UNKNOWN ((BYTE)-1)
    415 
    416   typedef struct _FRAME_DESCRIPTOR {
    417     LPBYTE FramePointer;
    418     __MINGW_EXTENSION __int64 TimeStamp;
    419     DWORD FrameLength;
    420     DWORD nBytesAvail;
    421     WORD Etype;
    422     BYTE Sap;
    423     BYTE LowProtocol;
    424     WORD LowProtocolOffset;
    425     union {
    426       WORD Reserved;
    427       BYTE IPPort;
    428       WORD ByteSwappedIPXPort;
    429     } HighPort;
    430     WORD HighProtocolOffset;
    431   } FRAME_DESCRIPTOR;
    432 
    433   typedef FRAME_DESCRIPTOR *LPFRAME_DESCRIPTOR;
    434 
    435 #define FRAME_DESCRIPTOR_SIZE (sizeof(FRAME_DESCRIPTOR))
    436 
    437   typedef struct _FRAMETABLE {
    438     DWORD FrameTableLength;
    439     DWORD StartIndex;
    440     DWORD EndIndex;
    441     DWORD FrameCount;
    442     FRAME_DESCRIPTOR Frames[1];
    443   } FRAMETABLE;
    444 
    445   typedef FRAMETABLE *LPFRAMETABLE;
    446 
    447 #define STATIONSTATS_FLAGS_INITIALIZED (0x1)
    448 #define STATIONSTATS_FLAGS_EVENTPOSTED (0x2)
    449 
    450 #define STATIONSTATS_POOL_SIZE (100)
    451 
    452   typedef struct _STATIONSTATS {
    453     DWORD NextStationStats;
    454     DWORD SessionPartnerList;
    455     DWORD Flags;
    456     BYTE StationAddress[6];
    457     WORD Pad;
    458     DWORD TotalPacketsReceived;
    459     DWORD TotalDirectedPacketsSent;
    460     DWORD TotalBroadcastPacketsSent;
    461     DWORD TotalMulticastPacketsSent;
    462     DWORD TotalBytesReceived;
    463     DWORD TotalBytesSent;
    464   } STATIONSTATS;
    465 
    466   typedef STATIONSTATS *LPSTATIONSTATS;
    467 
    468 #define STATIONSTATS_SIZE (sizeof(STATIONSTATS))
    469 
    470 #define SESSION_FLAGS_INITIALIZED (0x1)
    471 #define SESSION_FLAGS_EVENTPOSTED (0x2)
    472 
    473 #define SESSION_POOL_SIZE (100)
    474 
    475   typedef struct _SESSIONSTATS {
    476     DWORD NextSession;
    477     DWORD StationOwner;
    478     DWORD StationPartner;
    479     DWORD Flags;
    480     DWORD TotalPacketsSent;
    481   } SESSIONSTATS;
    482 
    483   typedef SESSIONSTATS *LPSESSIONSTATS;
    484 
    485 #define SESSIONSTATS_SIZE (sizeof(SESSIONSTATS))
    486 
    487 #pragma pack(push,1)
    488   typedef struct _STATIONQUERY {
    489     DWORD Flags;
    490     BYTE BCDVerMinor;
    491     BYTE BCDVerMajor;
    492     DWORD LicenseNumber;
    493     BYTE MachineName[16];
    494     BYTE UserName[32];
    495     BYTE Reserved[32];
    496     BYTE AdapterAddress[6];
    497     WCHAR WMachineName[16];
    498     WCHAR WUserName[32];
    499   } STATIONQUERY;
    500 
    501   typedef STATIONQUERY *LPSTATIONQUERY;
    502 
    503 #define STATIONQUERY_SIZE (sizeof(STATIONQUERY))
    504 
    505 #pragma pack(pop)
    506 
    507   typedef struct _QUERYTABLE {
    508     DWORD nStationQueries;
    509     STATIONQUERY StationQuery[1];
    510   } QUERYTABLE;
    511 
    512   typedef QUERYTABLE *LPQUERYTABLE;
    513 
    514 #define QUERYTABLE_SIZE (sizeof(QUERYTABLE))
    515 
    516   typedef struct _LINK *LPLINK;
    517 
    518   typedef struct _LINK {
    519     LPLINK PrevLink;
    520     LPLINK NextLink;
    521   } LINK;
    522 
    523 #pragma pack(push,1)
    524 #define MAX_SECURITY_BREACH_REASON_SIZE (100)
    525 
    526 #define MAX_SIGNATURE_LENGTH (128)
    527 #define MAX_USER_NAME_LENGTH (256)
    528 
    529   typedef struct _SECURITY_PERMISSION_RESPONSE {
    530     UINT Version;
    531     DWORD RandomNumber;
    532     BYTE MachineName[16];
    533     BYTE Address[6];
    534     BYTE UserName[256];
    535     BYTE Reason[100];
    536     DWORD SignatureLength;
    537     BYTE Signature[128];
    538   } SECURITY_PERMISSION_RESPONSE;
    539 
    540   typedef SECURITY_PERMISSION_RESPONSE *LPSECURITY_PERMISSION_RESPONSE;
    541   typedef SECURITY_PERMISSION_RESPONSE UNALIGNED *ULPSECURITY_PERMISSION_RESPONSE;
    542 
    543 #define SECURITY_PERMISSION_RESPONSE_SIZE (sizeof(SECURITY_PERMISSION_RESPONSE))
    544 
    545 #pragma pack(pop)
    546 
    547 #define UPDATE_EVENT_TERMINATE_THREAD (0)
    548 #define UPDATE_EVENT_NETWORK_STATUS (0x1)
    549 #define UPDATE_EVENT_RTC_INTERVAL_ELAPSED (0x2)
    550 #define UPDATE_EVENT_RTC_FRAME_TABLE_FULL (0x3)
    551 #define UPDATE_EVENT_RTC_BUFFER_FULL (0x4)
    552 #define UPDATE_EVENT_TRIGGER_BUFFER_CONTENT (0x5)
    553 #define UPDATE_EVENT_TRIGGER_PATTERN_MATCH (0x6)
    554 #define UPDATE_EVENT_TRIGGER_BUFFER_PATTERN (0x7)
    555 #define UPDATE_EVENT_TRIGGER_PATTERN_BUFFER (0x8)
    556 #define UPDATE_EVENT_TRANSMIT_STATUS (0x9)
    557 #define UPDATE_EVENT_SECURITY_BREACH (0xa)
    558 #define UPDATE_EVENT_REMOTE_FAILURE (0xb)
    559 
    560 #define UPDATE_ACTION_TERMINATE_THREAD (0)
    561 #define UPDATE_ACTION_NOTIFY (0x1)
    562 #define UPDATE_ACTION_STOP_CAPTURE (0x2)
    563 #define UPDATE_ACTION_PAUSE_CAPTURE (0x3)
    564 #define UPDATE_ACTION_RTC_BUFFER_SWITCH (0x4)
    565 
    566   __C89_NAMELESS typedef struct _UPDATE_EVENT {
    567     USHORT Event;
    568     DWORD Action;
    569     DWORD Status;
    570     DWORD Value;
    571     __MINGW_EXTENSION __int64 TimeStamp;
    572     DWORD_PTR lpUserContext;
    573     DWORD_PTR lpReserved;
    574     UINT FramesDropped;
    575     __C89_NAMELESS union {
    576       DWORD Reserved;
    577       LPFRAMETABLE lpFrameTable;
    578       DWORD_PTR lpPacketQueue;
    579       SECURITY_PERMISSION_RESPONSE SecurityResponse;
    580     };
    581     LPSTATISTICS lpFinalStats;
    582   } UPDATE_EVENT;
    583 
    584   typedef UPDATE_EVENT *PUPDATE_EVENT;
    585   typedef DWORD (WINAPI *LPNETWORKCALLBACKPROC)(UPDATE_EVENT);
    586 
    587   typedef struct _NETWORKSTATUS {
    588     DWORD State;
    589     DWORD Flags;
    590   } NETWORKSTATUS;
    591 
    592   typedef NETWORKSTATUS *LPNETWORKSTATUS;
    593 
    594 #define NETWORKSTATUS_SIZE (sizeof(NETWORKSTATUS))
    595 
    596 #define NETWORKSTATUS_STATE_VOID (0)
    597 #define NETWORKSTATUS_STATE_INIT (1)
    598 #define NETWORKSTATUS_STATE_CAPTURING (2)
    599 #define NETWORKSTATUS_STATE_PAUSED (3)
    600 
    601 #define NETWORKSTATUS_FLAGS_TRIGGER_PENDING (0x1)
    602 
    603 #define MAKE_WORD(l,h) (((WORD) (l)) | (((WORD) (h)) << 8))
    604 #define MAKE_LONG(l,h) (((DWORD) (l)) | (((DWORD) (h)) << 16))
    605 #define MAKE_SIG(a,b,c,d) MAKE_LONG(MAKE_WORD(a,b),MAKE_WORD(c,d))
    606 
    607 #define MAX_SESSIONS (100)
    608 #define MAX_STATIONS (100)
    609 
    610   typedef struct _STATISTICSPARAM {
    611     DWORD StatisticsSize;
    612     STATISTICS Statistics;
    613     DWORD StatisticsTableEntries;
    614     STATIONSTATS StatisticsTable[100];
    615     DWORD SessionTableEntries;
    616     SESSIONSTATS SessionTable[100];
    617   } STATISTICSPARAM;
    618 
    619   typedef STATISTICSPARAM *LPSTATISTICSPARAM;
    620 
    621 #define STATISTICSPARAM_SIZE (sizeof(STATISTICSPARAM))
    622 
    623 #pragma pack(push,1)
    624 #define CAPTUREFILE_VERSION_MAJOR (2)
    625 
    626 #define CAPTUREFILE_VERSION_MINOR (0)
    627 
    628 #define MakeVersion(Major,Minor) ((DWORD) MAKEWORD(Minor,Major))
    629 #define GetCurrentVersion() MakeVersion(CAPTUREFILE_VERSION_MAJOR,CAPTUREFILE_VERSION_MINOR)
    630 #define NETMON_1_0_CAPTUREFILE_SIGNATURE MAKE_IDENTIFIER('R','T','S','S')
    631 #define NETMON_2_0_CAPTUREFILE_SIGNATURE MAKE_IDENTIFIER('G','M','B','U')
    632 
    633   typedef struct _CAPTUREFILE_HEADER_VALUES {
    634     DWORD Signature;
    635     BYTE BCDVerMinor;
    636     BYTE BCDVerMajor;
    637     WORD MacType;
    638     SYSTEMTIME TimeStamp;
    639     DWORD FrameTableOffset;
    640     DWORD FrameTableLength;
    641     DWORD UserDataOffset;
    642     DWORD UserDataLength;
    643     DWORD CommentDataOffset;
    644     DWORD CommentDataLength;
    645     DWORD StatisticsOffset;
    646     DWORD StatisticsLength;
    647     DWORD NetworkInfoOffset;
    648     DWORD NetworkInfoLength;
    649     DWORD ConversationStatsOffset;
    650     DWORD ConversationStatsLength;
    651   } CAPTUREFILE_HEADER_VALUES;
    652 
    653   typedef CAPTUREFILE_HEADER_VALUES *LPCAPTUREFILE_HEADER_VALUES;
    654 
    655 #define CAPTUREFILE_HEADER_VALUES_SIZE (sizeof(CAPTUREFILE_HEADER_VALUES))
    656 
    657 #pragma pack(pop)
    658 
    659 #pragma pack(push,1)
    660   typedef struct _CAPTUREFILE_HEADER {
    661     __C89_NAMELESS union {
    662       CAPTUREFILE_HEADER_VALUES ActualHeader;
    663       BYTE Buffer[72];
    664     };
    665     BYTE Reserved[56];
    666   } CAPTUREFILE_HEADER;
    667 
    668   typedef CAPTUREFILE_HEADER *LPCAPTUREFILE_HEADER;
    669 
    670 #define CAPTUREFILE_HEADER_SIZE (sizeof(CAPTUREFILE_HEADER))
    671 
    672 #pragma pack(pop)
    673 
    674 #pragma pack(push,1)
    675   typedef struct _EFRAMEHDR {
    676     BYTE SrcAddress[6];
    677     BYTE DstAddress[6];
    678     WORD Length;
    679     BYTE DSAP;
    680     BYTE SSAP;
    681     BYTE Control;
    682     BYTE ProtocolID[3];
    683     WORD EtherType;
    684   } EFRAMEHDR;
    685 
    686   typedef struct _TRFRAMEHDR {
    687     BYTE AC;
    688     BYTE FC;
    689     BYTE SrcAddress[6];
    690     BYTE DstAddress[6];
    691     BYTE DSAP;
    692     BYTE SSAP;
    693     BYTE Control;
    694     BYTE ProtocolID[3];
    695     WORD EtherType;
    696   } TRFRAMEHDR;
    697 
    698 #define DEFAULT_TR_AC (0)
    699 
    700 #define DEFAULT_TR_FC (0x40)
    701 #define DEFAULT_SAP (0xaa)
    702 
    703 #define DEFAULT_CONTROL (0x3)
    704 
    705 #define DEFAULT_ETHERTYPE (0x8419)
    706 
    707   typedef struct _FDDIFRAMEHDR {
    708     BYTE FC;
    709     BYTE SrcAddress[6];
    710     BYTE DstAddress[6];
    711     BYTE DSAP;
    712     BYTE SSAP;
    713     BYTE Control;
    714     BYTE ProtocolID[3];
    715     WORD EtherType;
    716   } FDDIFRAMEHDR;
    717 
    718 #define DEFAULT_FDDI_FC (0x10)
    719 
    720   typedef struct _FDDISTATFRAME {
    721     __MINGW_EXTENSION __int64 TimeStamp;
    722     DWORD FrameLength;
    723     DWORD nBytesAvail;
    724     FDDIFRAMEHDR FrameHeader;
    725     BYTE FrameID[4];
    726     DWORD Flags;
    727     DWORD FrameType;
    728     WORD StatsDataLen;
    729     DWORD StatsVersion;
    730     STATISTICS Statistics;
    731   } FDDISTATFRAME;
    732 
    733   typedef FDDISTATFRAME *LPFDDISTATFRAME;
    734 
    735   typedef FDDISTATFRAME UNALIGNED *ULPFDDISTATFRAME;
    736 #define FDDISTATFRAME_SIZE (sizeof(FDDISTATFRAME))
    737 
    738   typedef struct _ATMFRAMEHDR {
    739     BYTE SrcAddress[6];
    740     BYTE DstAddress[6];
    741     WORD Vpi;
    742     WORD Vci;
    743   } ATMFRAMEHDR;
    744 
    745   typedef struct _ATMSTATFRAME {
    746     __MINGW_EXTENSION __int64 TimeStamp;
    747     DWORD FrameLength;
    748     DWORD nBytesAvail;
    749     ATMFRAMEHDR FrameHeader;
    750     BYTE FrameID[4];
    751     DWORD Flags;
    752     DWORD FrameType;
    753     WORD StatsDataLen;
    754     DWORD StatsVersion;
    755     STATISTICS Statistics;
    756   } ATMSTATFRAME;
    757 
    758   typedef ATMSTATFRAME *LPATMSTATFRAME;
    759   typedef ATMSTATFRAME UNALIGNED *ULPATMSTATFRAME;
    760 
    761 #define ATMSTATFRAME_SIZE (sizeof(ATMSTATFRAME))
    762 
    763   typedef struct _TRSTATFRAME {
    764     __MINGW_EXTENSION __int64 TimeStamp;
    765     DWORD FrameLength;
    766     DWORD nBytesAvail;
    767     TRFRAMEHDR FrameHeader;
    768     BYTE FrameID[4];
    769     DWORD Flags;
    770     DWORD FrameType;
    771     WORD StatsDataLen;
    772     DWORD StatsVersion;
    773     STATISTICS Statistics;
    774   } TRSTATFRAME;
    775 
    776   typedef TRSTATFRAME *LPTRSTATFRAME;
    777   typedef TRSTATFRAME UNALIGNED *ULPTRSTATFRAME;
    778 
    779 #define TRSTATFRAME_SIZE (sizeof(TRSTATFRAME))
    780 
    781   typedef struct _ESTATFRAME {
    782     __MINGW_EXTENSION __int64 TimeStamp;
    783     DWORD FrameLength;
    784     DWORD nBytesAvail;
    785     EFRAMEHDR FrameHeader;
    786     BYTE FrameID[4];
    787     DWORD Flags;
    788     DWORD FrameType;
    789     WORD StatsDataLen;
    790     DWORD StatsVersion;
    791     STATISTICS Statistics;
    792   } ESTATFRAME;
    793 
    794   typedef ESTATFRAME *LPESTATFRAME;
    795   typedef ESTATFRAME UNALIGNED *ULPESTATFRAME;
    796 
    797 #define ESTATFRAME_SIZE (sizeof(ESTATFRAME))
    798 
    799 #define STATISTICS_VERSION_1_0 (0)
    800 #define STATISTICS_VERSION_2_0 (0x20)
    801 #define MAX_STATSFRAME_SIZE (sizeof(TRSTATFRAME))
    802 #define STATS_FRAME_TYPE (103)
    803 
    804 #pragma pack(pop)
    805 #pragma pack(push,1)
    806 
    807   typedef struct _ADDRESS {
    808     DWORD Type;
    809     __C89_NAMELESS union {
    810       BYTE MACAddress[MAC_ADDRESS_SIZE];
    811       BYTE IPAddress[IP_ADDRESS_SIZE];
    812       BYTE IPXRawAddress[IPX_ADDR_SIZE];
    813       IPX_ADDR IPXAddress;
    814       BYTE VinesIPRawAddress[VINES_IP_ADDRESS_SIZE];
    815       VINES_IP_ADDRESS VinesIPAddress;
    816       ETHERNET_SRC_ADDRESS EthernetSrcAddress;
    817       ETHERNET_DST_ADDRESS EthernetDstAddress;
    818       TOKENRING_SRC_ADDRESS TokenringSrcAddress;
    819       TOKENRING_DST_ADDRESS TokenringDstAddress;
    820       FDDI_SRC_ADDRESS FddiSrcAddress;
    821       FDDI_DST_ADDRESS FddiDstAddress;
    822     };
    823     WORD Flags;
    824   } ADDRESS;
    825 
    826   typedef ADDRESS *LPADDRESS;
    827 #define ADDRESS_SIZE sizeof(ADDRESS)
    828 
    829 #pragma pack(pop)
    830 
    831   typedef struct _ADDRESSPAIR {
    832     WORD AddressFlags;
    833     WORD NalReserved;
    834     ADDRESS DstAddress;
    835     ADDRESS SrcAddress;
    836 
    837   } ADDRESSPAIR;
    838 
    839   typedef ADDRESSPAIR *LPADDRESSPAIR;
    840 
    841 #define ADDRESSPAIR_SIZE sizeof(ADDRESSPAIR)
    842 
    843   typedef struct _ADDRESSTABLE {
    844     DWORD nAddressPairs;
    845     DWORD nNonMacAddressPairs;
    846     ADDRESSPAIR AddressPair[MAX_ADDRESS_PAIRS];
    847 
    848   } ADDRESSTABLE;
    849 
    850   typedef ADDRESSTABLE *LPADDRESSTABLE;
    851 
    852 #define ADDRESSTABLE_SIZE sizeof(ADDRESSTABLE)
    853 
    854   typedef struct _ADDRESSINFO {
    855     ADDRESS Address;
    856     WCHAR Name[MAX_NAME_SIZE];
    857     DWORD Flags;
    858     LPVOID lpAddressInstData;
    859   } ADDRESSINFO;
    860 
    861   typedef struct _ADDRESSINFO *LPADDRESSINFO;
    862 
    863 #define ADDRESSINFO_SIZE sizeof(ADDRESSINFO)
    864 
    865   typedef struct _ADDRESSINFOTABLE {
    866     DWORD nAddressInfos;
    867     LPADDRESSINFO lpAddressInfo[0];
    868   } ADDRESSINFOTABLE;
    869 
    870   typedef ADDRESSINFOTABLE *LPADDRESSINFOTABLE;
    871 
    872 #define ADDRESSINFOTABLE_SIZE sizeof(ADDRESSINFOTABLE)
    873 
    874   DWORD __cdecl SetNPPAddressFilterInBlob(HBLOB hBlob,LPADDRESSTABLE pAddressTable);
    875   DWORD __cdecl GetNPPAddressFilterFromBlob(HBLOB hBlob,LPADDRESSTABLE pAddressTable,HBLOB hErrorBlob);
    876 
    877 #pragma pack(push,8)
    878 
    879   typedef enum __MIDL___MIDL_itf_netmon_0000_0005 {
    880     NMCOLUMNTYPE_UINT8 = 0,
    881     NMCOLUMNTYPE_SINT8,NMCOLUMNTYPE_UINT16,NMCOLUMNTYPE_SINT16,NMCOLUMNTYPE_UINT32,NMCOLUMNTYPE_SINT32,
    882     NMCOLUMNTYPE_FLOAT64,NMCOLUMNTYPE_FRAME,NMCOLUMNTYPE_YESNO,NMCOLUMNTYPE_ONOFF,NMCOLUMNTYPE_TRUEFALSE,
    883     NMCOLUMNTYPE_MACADDR,NMCOLUMNTYPE_IPXADDR,NMCOLUMNTYPE_IPADDR,NMCOLUMNTYPE_VARTIME,NMCOLUMNTYPE_STRING
    884   } NMCOLUMNTYPE;
    885 
    886   typedef struct _NMCOLUMNVARIANT {
    887     NMCOLUMNTYPE Type;
    888     union {
    889       BYTE Uint8Val;
    890       char Sint8Val;
    891       WORD Uint16Val;
    892       short Sint16Val;
    893       DWORD Uint32Val;
    894       __LONG32 Sint32Val;
    895       DOUBLE Float64Val;
    896       DWORD FrameVal;
    897       WINBOOL YesNoVal;
    898       WINBOOL OnOffVal;
    899       WINBOOL TrueFalseVal;
    900       BYTE MACAddrVal[6];
    901       IPX_ADDR IPXAddrVal;
    902       DWORD IPAddrVal;
    903       DOUBLE VarTimeVal;
    904       LPCSTR pStringVal;
    905     } Value;
    906   } NMCOLUMNVARIANT;
    907 
    908   typedef struct _NMCOLUMNINFO {
    909     LPSTR szColumnName;
    910     NMCOLUMNVARIANT VariantData;
    911   } NMCOLUMNINFO;
    912 
    913   typedef NMCOLUMNINFO *PNMCOLUMNINFO;
    914   typedef LPSTR JTYPE;
    915 
    916   typedef struct _NMEVENTDATA {
    917     LPSTR pszReserved;
    918     BYTE Version;
    919     DWORD EventIdent;
    920     DWORD Flags;
    921     DWORD Severity;
    922     BYTE NumColumns;
    923     LPSTR szSourceName;
    924     LPSTR szEventName;
    925     LPSTR szDescription;
    926     LPSTR szMachine;
    927     JTYPE Justification;
    928     PVOID pvReserved;
    929     SYSTEMTIME SysTime;
    930     NMCOLUMNINFO Column[0];
    931   } NMEVENTDATA;
    932 
    933   typedef NMEVENTDATA *PNMEVENTDATA;
    934 
    935 #pragma pack(pop)
    936 
    937 #define NMEVENTFLAG_EXPERT (0x1)
    938 #define NMEVENTFLAG_DO_NOT_DISPLAY_SEVERITY (0x80000000)
    939 #define NMEVENTFLAG_DO_NOT_DISPLAY_SOURCE (0x40000000)
    940 #define NMEVENTFLAG_DO_NOT_DISPLAY_EVENT_NAME (0x20000000)
    941 #define NMEVENTFLAG_DO_NOT_DISPLAY_DESCRIPTION (0x10000000)
    942 #define NMEVENTFLAG_DO_NOT_DISPLAY_MACHINE (0x8000000)
    943 #define NMEVENTFLAG_DO_NOT_DISPLAY_TIME (0x4000000)
    944 #define NMEVENTFLAG_DO_NOT_DISPLAY_DATE (0x2000000)
    945 #define NMEVENTFLAG_DO_NOT_DISPLAY_FIXED_COLUMNS (0xfe000000)
    946 
    947   enum _NMEVENT_SEVERITIES {
    948     NMEVENT_SEVERITY_INFORMATIONAL = 0,NMEVENT_SEVERITY_WARNING,
    949     NMEVENT_SEVERITY_STRONG_WARNING,NMEVENT_SEVERITY_ERROR,
    950     NMEVENT_SEVERITY_SEVERE_ERROR,NMEVENT_SEVERITY_CRITICAL_ERROR
    951   };
    952 
    953   typedef struct __MIDL___MIDL_itf_netmon_0000_0007 {
    954     DWORD dwNumBlobs;
    955     HBLOB hBlobs[1];
    956   } BLOB_TABLE;
    957 
    958   typedef BLOB_TABLE *PBLOB_TABLE;
    959 
    960   typedef struct __MIDL___MIDL_itf_netmon_0000_0008 {
    961     DWORD size;
    962     BYTE *pBytes;
    963   } MBLOB;
    964 
    965   typedef struct __MIDL___MIDL_itf_netmon_0000_0009 {
    966     DWORD dwNumBlobs;
    967     MBLOB mBlobs[1];
    968   } MBLOB_TABLE;
    969 
    970   typedef MBLOB_TABLE *PMBLOB_TABLE;
    971 
    972   DWORD __cdecl GetNPPBlobTable(HBLOB hFilterBlob,PBLOB_TABLE *ppBlobTable);
    973   DWORD __cdecl GetNPPBlobFromUI(HWND hwnd,HBLOB hFilterBlob,HBLOB *phBlob);
    974   DWORD __cdecl GetNPPBlobFromUIExU(HWND hwnd,HBLOB hFilterBlob,HBLOB *phBlob,char *szHelpFileName);
    975   DWORD __cdecl SelectNPPBlobFromTable(HWND hwnd,PBLOB_TABLE pBlobTable,HBLOB *hBlob);
    976   DWORD __cdecl SelectNPPBlobFromTableExU(HWND hwnd,PBLOB_TABLE pBlobTable,HBLOB *hBlob,char *szHelpFileName);
    977 
    978   static __inline DWORD BLOB_TABLE_SIZE(DWORD dwNumBlobs) { return (DWORD) (sizeof(BLOB_TABLE)+dwNumBlobs*sizeof(HBLOB)); }
    979   static __inline PBLOB_TABLE AllocBlobTable(DWORD dwNumBlobs) {
    980     DWORD size = BLOB_TABLE_SIZE(dwNumBlobs);
    981     return (PBLOB_TABLE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size);
    982   }
    983   static __inline DWORD MBLOB_TABLE_SIZE(DWORD dwNumBlobs) { return (DWORD) (sizeof(MBLOB_TABLE)+dwNumBlobs*sizeof(MBLOB)); }
    984   static __inline PMBLOB_TABLE AllocMBlobTable(DWORD dwNumBlobs) {
    985     DWORD size = MBLOB_TABLE_SIZE(dwNumBlobs);
    986     return (PMBLOB_TABLE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size);
    987   }
    988   DWORD __cdecl GetNPPBlobs(PBLOB_TABLE *ppBlobTable);
    989 
    990   typedef DWORD (_cdecl *BLOBSPROC) (PBLOB_TABLE *ppBlobTable);
    991 
    992   DWORD __cdecl GetConfigBlob(HBLOB *phBlob);
    993 
    994   typedef DWORD (_cdecl *GETCFGBLOB)(HBLOB,HBLOB*);
    995   typedef DWORD (_cdecl *CFGPROC)(HWND hwnd,HBLOB SpecialBlob,PBLOB_TABLE *ppBlobTable);
    996 
    997   WINBOOL __cdecl FilterNPPBlob(HBLOB hBlob,HBLOB FilterBlob);
    998   WINBOOL __cdecl RaiseNMEvent(HINSTANCE hInstance,WORD EventType,DWORD EventID,WORD nStrings,const char **aInsertStrs,LPVOID lpvData,DWORD dwDataSize);
    999 
   1000 #ifndef __cplusplus
   1001 #ifndef try
   1002 #define try __try
   1003 #endif
   1004 
   1005 #ifndef except
   1006 #define except __except
   1007 #endif
   1008 #endif
   1009 
   1010 #define WINDOWS_VERSION_UNKNOWN (0)
   1011 #define WINDOWS_VERSION_WIN32S (1)
   1012 #define WINDOWS_VERSION_WIN32C (2)
   1013 #define WINDOWS_VERSION_WIN32 (3)
   1014 
   1015 #define FRAME_MASK_ETHERNET ((BYTE)~0x1)
   1016 #define FRAME_MASK_TOKENRING ((BYTE)~0x80)
   1017 #define FRAME_MASK_FDDI ((BYTE)~0x1)
   1018 
   1019   typedef LPVOID HOBJECTHEAP;
   1020   typedef VOID (WINAPI *OBJECTPROC)(HOBJECTHEAP,LPVOID);
   1021   typedef struct _TIMER *HTIMER;
   1022   typedef VOID (WINAPI *BHTIMERPROC)(LPVOID);
   1023 
   1024   HTIMER WINAPI BhSetTimer(BHTIMERPROC TimerProc,LPVOID InstData,DWORD TimeOut);
   1025   VOID WINAPI BhKillTimer(HTIMER hTimer);
   1026   DWORD WINAPI BhGetLastError(VOID);
   1027   DWORD WINAPI BhSetLastError(DWORD Error);
   1028   HOBJECTHEAP WINAPI CreateObjectHeap(DWORD ObjectSize,OBJECTPROC ObjectProc);
   1029   HOBJECTHEAP WINAPI DestroyObjectHeap(HOBJECTHEAP hObjectHeap);
   1030   LPVOID WINAPI AllocObject(HOBJECTHEAP hObjectHeap);
   1031   LPVOID WINAPI FreeObject(HOBJECTHEAP hObjectHeap,LPVOID ObjectMemory);
   1032   DWORD WINAPI GrowObjectHeap(HOBJECTHEAP hObjectHeap,DWORD nObjects);
   1033   DWORD WINAPI GetObjectHeapSize(HOBJECTHEAP hObjectHeap);
   1034   VOID WINAPI PurgeObjectHeap(HOBJECTHEAP hObjectHeap);
   1035   LPVOID WINAPI AllocMemory(SIZE_T size);
   1036   LPVOID WINAPI ReallocMemory(LPVOID ptr,SIZE_T NewSize);
   1037   VOID WINAPI FreeMemory(LPVOID ptr);
   1038   VOID WINAPI TestMemory(LPVOID ptr);
   1039   SIZE_T WINAPI MemorySize(LPVOID ptr);
   1040   HANDLE WINAPI MemoryHandle(LPBYTE ptr);
   1041   LPEXPRESSION WINAPI InitializeExpression(LPEXPRESSION Expression);
   1042   LPPATTERNMATCH WINAPI InitializePattern(LPPATTERNMATCH Pattern,LPVOID ptr,DWORD offset,DWORD length);
   1043   LPEXPRESSION WINAPI AndExpression(LPEXPRESSION Expression,LPPATTERNMATCH Pattern);
   1044   LPEXPRESSION WINAPI OrExpression(LPEXPRESSION Expression,LPPATTERNMATCH Pattern);
   1045   LPPATTERNMATCH WINAPI NegatePattern(LPPATTERNMATCH Pattern);
   1046   LPADDRESSTABLE2 WINAPI AdjustOperatorPrecedence(LPADDRESSTABLE2 AddressTable);
   1047   LPADDRESS2 WINAPI NormalizeAddress(LPADDRESS2 Address);
   1048   LPADDRESSTABLE2 WINAPI NormalizeAddressTable(LPADDRESSTABLE2 AddressTable);
   1049   DWORD WINAPI BhGetWindowsVersion(VOID);
   1050   WINBOOL WINAPI IsDaytona(VOID);
   1051   VOID __cdecl dprintf(LPSTR format,...);
   1052 
   1053   typedef VOID UNALIGNED *ULPVOID;
   1054   typedef BYTE UNALIGNED *ULPBYTE;
   1055   typedef WORD UNALIGNED *ULPWORD;
   1056   typedef DWORD UNALIGNED *ULPDWORD;
   1057   typedef CHAR UNALIGNED *ULPSTR;
   1058   typedef SYSTEMTIME UNALIGNED *ULPSYSTEMTIME;
   1059   typedef struct _PARSER *HPARSER;
   1060   typedef struct _CAPFRAMEDESC *HFRAME;
   1061   typedef struct _CAPTURE *HCAPTURE;
   1062   typedef struct _FILTER *HFILTER;
   1063   typedef struct _ADDRESSDB *HADDRESSDB;
   1064   typedef struct _PROTOCOL *HPROTOCOL;
   1065   typedef DWORD_PTR HPROPERTY;
   1066   typedef HPROTOCOL *LPHPROTOCOL;
   1067 
   1068 #define GetTableSize(TableBaseSize,nElements,ElementSize) ((TableBaseSize) + ((nElements) *(ElementSize)))
   1069 
   1070   typedef DWORD OBJECTTYPE;
   1071 
   1072 #ifndef MAKE_IDENTIFIER
   1073 #define MAKE_IDENTIFIER(a,b,c,d) ((DWORD) MAKELONG(MAKEWORD(a,b),MAKEWORD(c,d)))
   1074 #endif
   1075 #define HANDLE_TYPE_INVALID MAKE_IDENTIFIER(-1,-1,-1,-1)
   1076 #define HANDLE_TYPE_CAPTURE MAKE_IDENTIFIER('C','A','P','$')
   1077 #define HANDLE_TYPE_PARSER MAKE_IDENTIFIER('P','S','R','$')
   1078 #define HANDLE_TYPE_ADDRESSDB MAKE_IDENTIFIER('A','D','R','$')
   1079 #define HANDLE_TYPE_PROTOCOL MAKE_IDENTIFIER('P','R','T','$')
   1080 #define HANDLE_TYPE_BUFFER MAKE_IDENTIFIER('B','U','F','$')
   1081 
   1082 #define INLINE __inline
   1083 #define BHAPI WINAPI
   1084 #define MAX_NAME_LENGTH (16)
   1085 
   1086 #define MAX_ADDR_LENGTH (6)
   1087 
   1088 #define ETYPE_LOOP (0x9000)
   1089 #define ETYPE_3COM_NETMAP1 (0x9001)
   1090 #define ETYPE_3COM_NETMAP2 (0x9002)
   1091 #define ETYPE_IBM_RT (0x80d5)
   1092 #define ETYPE_NETWARE (0x8137)
   1093 #define ETYPE_XNS1 (0x600)
   1094 #define ETYPE_XNS2 (0x807)
   1095 #define ETYPE_3COM_NBP0 (0x3c00)
   1096 #define ETYPE_3COM_NBP1 (0x3c01)
   1097 #define ETYPE_3COM_NBP2 (0x3c02)
   1098 #define ETYPE_3COM_NBP3 (0x3c03)
   1099 #define ETYPE_3COM_NBP4 (0x3c04)
   1100 #define ETYPE_3COM_NBP5 (0x3c05)
   1101 #define ETYPE_3COM_NBP6 (0x3c06)
   1102 #define ETYPE_3COM_NBP7 (0x3c07)
   1103 #define ETYPE_3COM_NBP8 (0x3c08)
   1104 #define ETYPE_3COM_NBP9 (0x3c09)
   1105 #define ETYPE_3COM_NBP10 (0x3c0a)
   1106 #define ETYPE_IP (0x800)
   1107 #define ETYPE_ARP1 (0x806)
   1108 #define ETYPE_ARP2 (0x807)
   1109 #define ETYPE_RARP (0x8035)
   1110 #define ETYPE_TRLR0 (0x1000)
   1111 #define ETYPE_TRLR1 (0x1001)
   1112 #define ETYPE_TRLR2 (0x1002)
   1113 #define ETYPE_TRLR3 (0x1003)
   1114 #define ETYPE_TRLR4 (0x1004)
   1115 #define ETYPE_TRLR5 (0x1005)
   1116 #define ETYPE_PUP (0x200)
   1117 #define ETYPE_PUP_ARP (0x201)
   1118 #define ETYPE_APPLETALK_ARP (0x80f3)
   1119 #define ETYPE_APPLETALK_LAP (0x809b)
   1120 #define ETYPE_SNMP (0x814c)
   1121 
   1122 #define SAP_SNAP (0xaa)
   1123 #define SAP_BPDU (0x42)
   1124 #define SAP_IBM_NM (0xf4)
   1125 #define SAP_IBM_NETBIOS (0xf0)
   1126 #define SAP_SNA1 (0x4)
   1127 #define SAP_SNA2 (0x5)
   1128 #define SAP_SNA3 (0x8)
   1129 #define SAP_SNA4 (0xc)
   1130 #define SAP_NETWARE1 (0x10)
   1131 #define SAP_NETWARE2 (0xe0)
   1132 #define SAP_NETWARE3 (0xfe)
   1133 #define SAP_IP (0x6)
   1134 #define SAP_X25 (0x7e)
   1135 #define SAP_RPL1 (0xf8)
   1136 #define SAP_RPL2 (0xfc)
   1137 #define SAP_UB (0xfa)
   1138 #define SAP_XNS (0x80)
   1139 
   1140 #define PROP_TYPE_VOID (0)
   1141 #define PROP_TYPE_SUMMARY (0x1)
   1142 #define PROP_TYPE_BYTE (0x2)
   1143 #define PROP_TYPE_WORD (0x3)
   1144 #define PROP_TYPE_DWORD (0x4)
   1145 #define PROP_TYPE_LARGEINT (0x5)
   1146 #define PROP_TYPE_ADDR (0x6)
   1147 #define PROP_TYPE_TIME (0x7)
   1148 #define PROP_TYPE_STRING (0x8)
   1149 #define PROP_TYPE_IP_ADDRESS (0x9)
   1150 #define PROP_TYPE_IPX_ADDRESS (0xa)
   1151 #define PROP_TYPE_BYTESWAPPED_WORD (0xb)
   1152 #define PROP_TYPE_BYTESWAPPED_DWORD (0xc)
   1153 #define PROP_TYPE_TYPED_STRING (0xd)
   1154 #define PROP_TYPE_RAW_DATA (0xe)
   1155 #define PROP_TYPE_COMMENT (0xf)
   1156 #define PROP_TYPE_SRCFRIENDLYNAME (0x10)
   1157 #define PROP_TYPE_DSTFRIENDLYNAME (0x11)
   1158 #define PROP_TYPE_TOKENRING_ADDRESS (0x12)
   1159 #define PROP_TYPE_FDDI_ADDRESS (0x13)
   1160 #define PROP_TYPE_ETHERNET_ADDRESS (0x14)
   1161 #define PROP_TYPE_OBJECT_IDENTIFIER (0x15)
   1162 #define PROP_TYPE_VINES_IP_ADDRESS (0x16)
   1163 #define PROP_TYPE_VAR_LEN_SMALL_INT (0x17)
   1164 #define PROP_TYPE_ATM_ADDRESS (0x18)
   1165 #define PROP_TYPE_1394_ADDRESS (0x19)
   1166 #define PROP_TYPE_IP6_ADDRESS (0x1a)
   1167 
   1168 #define PROP_QUAL_NONE (0)
   1169 #define PROP_QUAL_RANGE (0x1)
   1170 #define PROP_QUAL_SET (0x2)
   1171 #define PROP_QUAL_BITFIELD (0x3)
   1172 #define PROP_QUAL_LABELED_SET (0x4)
   1173 #define PROP_QUAL_LABELED_BITFIELD (0x8)
   1174 #define PROP_QUAL_CONST (0x9)
   1175 #define PROP_QUAL_FLAGS (0xa)
   1176 #define PROP_QUAL_ARRAY (0xb)
   1177 
   1178   typedef LARGE_INTEGER *LPLARGEINT;
   1179   typedef LARGE_INTEGER UNALIGNED *ULPLARGEINT;
   1180 
   1181   typedef struct _RANGE {
   1182     DWORD MinValue;
   1183     DWORD MaxValue;
   1184   } RANGE;
   1185 
   1186   typedef RANGE *LPRANGE;
   1187 
   1188   typedef struct _LABELED_BYTE {
   1189     BYTE Value;
   1190     LPSTR Label;
   1191   } LABELED_BYTE;
   1192 
   1193   typedef LABELED_BYTE *LPLABELED_BYTE;
   1194 
   1195   typedef struct _LABELED_WORD {
   1196     WORD Value;
   1197     LPSTR Label;
   1198   } LABELED_WORD;
   1199 
   1200   typedef LABELED_WORD *LPLABELED_WORD;
   1201 
   1202   typedef struct _LABELED_DWORD {
   1203     DWORD Value;
   1204     LPSTR Label;
   1205   } LABELED_DWORD;
   1206 
   1207   typedef LABELED_DWORD *LPLABELED_DWORD;
   1208 
   1209   typedef struct _LABELED_LARGEINT {
   1210     LARGE_INTEGER Value;
   1211     LPSTR Label;
   1212   } LABELED_LARGEINT;
   1213 
   1214   typedef LABELED_LARGEINT *LPLABELED_LARGEINT;
   1215 
   1216   typedef struct _LABELED_SYSTEMTIME {
   1217     SYSTEMTIME Value;
   1218     LPSTR Label;
   1219   } LABELED_SYSTEMTIME;
   1220 
   1221   typedef LABELED_SYSTEMTIME *LPLABELED_SYSTEMTIME;
   1222 
   1223   typedef struct _LABELED_BIT {
   1224     BYTE BitNumber;
   1225     LPSTR LabelOff;
   1226     LPSTR LabelOn;
   1227   } LABELED_BIT;
   1228 
   1229   typedef LABELED_BIT *LPLABELED_BIT;
   1230 
   1231 #define TYPED_STRING_NORMAL (1)
   1232 #define TYPED_STRING_UNICODE (2)
   1233 
   1234 #define TYPED_STRING_EXFLAG (1)
   1235 
   1236   typedef struct _TYPED_STRING {
   1237     BYTE StringType:7;
   1238     BYTE fStringEx:1;
   1239     LPSTR lpString;
   1240     BYTE Byte[0];
   1241   } TYPED_STRING;
   1242 
   1243   typedef TYPED_STRING *LPTYPED_STRING;
   1244 
   1245   typedef struct _OBJECT_IDENTIFIER {
   1246     DWORD Length;
   1247     LPDWORD lpIdentifier;
   1248   } OBJECT_IDENTIFIER;
   1249 
   1250   typedef OBJECT_IDENTIFIER *LPOBJECT_IDENTIFIER;
   1251 
   1252   typedef struct _SET {
   1253     DWORD nEntries;
   1254     __C89_NAMELESS union {
   1255       LPVOID lpVoidTable;
   1256       LPBYTE lpByteTable;
   1257       LPWORD lpWordTable;
   1258       LPDWORD lpDwordTable;
   1259       LPLARGEINT lpLargeIntTable;
   1260       LPSYSTEMTIME lpSystemTimeTable;
   1261       LPLABELED_BYTE lpLabeledByteTable;
   1262       LPLABELED_WORD lpLabeledWordTable;
   1263       LPLABELED_DWORD lpLabeledDwordTable;
   1264       LPLABELED_LARGEINT lpLabeledLargeIntTable;
   1265       LPLABELED_SYSTEMTIME lpLabeledSystemTimeTable;
   1266       LPLABELED_BIT lpLabeledBit;
   1267     };
   1268   } SET;
   1269 
   1270   typedef SET *LPSET;
   1271 
   1272   typedef struct _STRINGTABLE {
   1273     DWORD nStrings;
   1274     LPSTR String[0];
   1275   } STRINGTABLE;
   1276 
   1277   typedef STRINGTABLE *LPSTRINGTABLE;
   1278 #define STRINGTABLE_SIZE sizeof(STRINGTABLE)
   1279 
   1280   typedef struct _RECOGNIZEDATA {
   1281     WORD ProtocolID;
   1282     WORD nProtocolOffset;
   1283     LPVOID InstData;
   1284   } RECOGNIZEDATA;
   1285 
   1286   typedef RECOGNIZEDATA *LPRECOGNIZEDATA;
   1287 
   1288   typedef struct _RECOGNIZEDATATABLE {
   1289     WORD nRecognizeDatas;
   1290     RECOGNIZEDATA RecognizeData[0];
   1291   } RECOGNIZEDATATABLE;
   1292 
   1293   typedef RECOGNIZEDATATABLE *LPRECOGNIZEDATATABLE;
   1294 
   1295   typedef struct _PROPERTYINFO {
   1296     HPROPERTY hProperty;
   1297     DWORD Version;
   1298     LPSTR Label;
   1299     LPSTR Comment;
   1300     BYTE DataType;
   1301     BYTE DataQualifier;
   1302     __C89_NAMELESS union {
   1303       LPVOID lpExtendedInfo;
   1304       LPRANGE lpRange;
   1305       LPSET lpSet;
   1306       DWORD Bitmask;
   1307       DWORD Value;
   1308     };
   1309     WORD FormatStringSize;
   1310     LPVOID InstanceData;
   1311   } PROPERTYINFO;
   1312 
   1313   typedef PROPERTYINFO *LPPROPERTYINFO;
   1314 
   1315 #define PROPERTYINFO_SIZE (sizeof(PROPERTYINFO))
   1316 
   1317   typedef struct _PROPERTYINSTEX {
   1318     WORD Length;
   1319     WORD LengthEx;
   1320     ULPVOID lpData;
   1321     __C89_NAMELESS union {
   1322       BYTE Byte[1];
   1323       WORD Word[1];
   1324       DWORD Dword[1];
   1325       LARGE_INTEGER LargeInt[1];
   1326       SYSTEMTIME SysTime[1];
   1327       TYPED_STRING TypedString;
   1328     };
   1329   } PROPERTYINSTEX;
   1330   typedef PROPERTYINSTEX *LPPROPERTYINSTEX;
   1331   typedef PROPERTYINSTEX UNALIGNED *ULPPROPERTYINSTEX;
   1332 
   1333 #define PROPERTYINSTEX_SIZE sizeof(PROPERTYINSTEX)
   1334 
   1335   typedef struct _PROPERTYINST {
   1336     LPPROPERTYINFO lpPropertyInfo;
   1337     LPSTR szPropertyText;
   1338     __C89_NAMELESS union {
   1339       LPVOID lpData;
   1340       ULPBYTE lpByte;
   1341       ULPWORD lpWord;
   1342       ULPDWORD lpDword;
   1343       ULPLARGEINT lpLargeInt;
   1344       ULPSYSTEMTIME lpSysTime;
   1345       LPPROPERTYINSTEX lpPropertyInstEx;
   1346     };
   1347     WORD DataLength;
   1348     WORD Level : 4;
   1349     WORD HelpID : 12;
   1350     DWORD IFlags;
   1351   } PROPERTYINST;
   1352 
   1353   typedef PROPERTYINST *LPPROPERTYINST;
   1354 
   1355 #define PROPERTYINST_SIZE sizeof(PROPERTYINST)
   1356 
   1357 #define IFLAG_ERROR (0x1)
   1358 #define IFLAG_SWAPPED (0x2)
   1359 #define IFLAG_UNICODE (0x4)
   1360 
   1361   typedef struct _PROPERTYINSTTABLE {
   1362     WORD nPropertyInsts;
   1363     WORD nPropertyInstIndex;
   1364   } PROPERTYINSTTABLE;
   1365 
   1366   typedef PROPERTYINSTTABLE *LPPROPERTYINSTTABLE;
   1367 
   1368 #define PROPERTYINSTTABLE_SIZE (sizeof(PROPERTYINSTTABLE))
   1369 
   1370   typedef struct _PROPERTYTABLE {
   1371     LPVOID lpFormatBuffer;
   1372     DWORD FormatBufferLength;
   1373     DWORD nTotalPropertyInsts;
   1374     LPPROPERTYINST lpFirstPropertyInst;
   1375     BYTE nPropertyInstTables;
   1376     PROPERTYINSTTABLE PropertyInstTable[0];
   1377   } PROPERTYTABLE;
   1378 
   1379   typedef PROPERTYTABLE *LPPROPERTYTABLE;
   1380 
   1381 #define PROPERTYTABLE_SIZE sizeof(PROPERTYTABLE)
   1382 
   1383   typedef VOID (WINAPI *REGISTER)(HPROTOCOL);
   1384   typedef VOID (WINAPI *DEREGISTER)(HPROTOCOL);
   1385   typedef LPBYTE (WINAPI *RECOGNIZEFRAME)(HFRAME,ULPBYTE,ULPBYTE,DWORD,DWORD,HPROTOCOL,DWORD,LPDWORD,LPHPROTOCOL,PDWORD_PTR);
   1386   typedef LPBYTE (WINAPI *ATTACHPROPERTIES)(HFRAME,ULPBYTE,ULPBYTE,DWORD,DWORD,HPROTOCOL,DWORD,DWORD_PTR);
   1387   typedef DWORD (WINAPI *FORMATPROPERTIES)(HFRAME,ULPBYTE,ULPBYTE,DWORD,LPPROPERTYINST);
   1388 
   1389   typedef struct _ENTRYPOINTS {
   1390     REGISTER Register;
   1391     DEREGISTER Deregister;
   1392     RECOGNIZEFRAME RecognizeFrame;
   1393     ATTACHPROPERTIES AttachProperties;
   1394     FORMATPROPERTIES FormatProperties;
   1395   } ENTRYPOINTS;
   1396 
   1397   typedef ENTRYPOINTS *LPENTRYPOINTS;
   1398 
   1399 #define ENTRYPOINTS_SIZE sizeof(ENTRYPOINTS)
   1400 
   1401   typedef struct _PROPERTYDATABASE {
   1402     DWORD nProperties;
   1403     LPPROPERTYINFO PropertyInfo[0];
   1404   } PROPERTYDATABASE;
   1405 
   1406 #define PROPERTYDATABASE_SIZE sizeof(PROPERTYDATABASE)
   1407 
   1408   typedef PROPERTYDATABASE *LPPROPERTYDATABASE;
   1409 
   1410   typedef struct _PROTOCOLINFO {
   1411     DWORD ProtocolID;
   1412     LPPROPERTYDATABASE PropertyDatabase;
   1413     BYTE ProtocolName[16];
   1414     BYTE HelpFile[16];
   1415     BYTE Comment[128];
   1416   } PROTOCOLINFO;
   1417 
   1418   typedef PROTOCOLINFO *LPPROTOCOLINFO;
   1419 
   1420 #define PROTOCOLINFO_SIZE sizeof(PROTOCOLINFO)
   1421 
   1422   typedef struct _PROTOCOLTABLE {
   1423     DWORD nProtocols;
   1424     HPROTOCOL hProtocol[1];
   1425   } PROTOCOLTABLE;
   1426 
   1427   typedef PROTOCOLTABLE *LPPROTOCOLTABLE;
   1428 
   1429 #define PROTOCOLTABLE_SIZE (sizeof(PROTOCOLTABLE) - sizeof(HPROTOCOL))
   1430 #define PROTOCOLTABLE_ACTUAL_SIZE(p) GetTableSize(PROTOCOLTABLE_SIZE,(p)->nProtocols,sizeof(HPROTOCOL))
   1431 
   1432 #define SORT_BYADDRESS (0)
   1433 #define SORT_BYNAME (1)
   1434 #define PERMANENT_NAME (0x100)
   1435 
   1436   typedef struct _ADDRESSINFO2 {
   1437     ADDRESS2 Address;
   1438     WCHAR Name[MAX_NAME_SIZE];
   1439     DWORD Flags;
   1440     LPVOID lpAddressInstData;
   1441   } ADDRESSINFO2;
   1442 
   1443   typedef struct _ADDRESSINFO2 *LPADDRESSINFO2;
   1444 
   1445 #define ADDRESSINFO2_SIZE sizeof(ADDRESSINFO2)
   1446 
   1447   typedef struct _ADDRESSINFOTABLE2 {
   1448     DWORD nAddressInfos;
   1449     LPADDRESSINFO2 lpAddressInfo[0];
   1450   } ADDRESSINFOTABLE2;
   1451 
   1452   typedef ADDRESSINFOTABLE2 *LPADDRESSINFOTABLE2;
   1453 
   1454 #define ADDRESSINFOTABLE2_SIZE sizeof(ADDRESSINFOTABLE2)
   1455 
   1456   typedef DWORD (WINAPI *FILTERPROC)(HCAPTURE,HFRAME,LPVOID);
   1457 
   1458 #define NMERR_SUCCESS (0)
   1459 #define NMERR_MEMORY_MAPPED_FILE_ERROR (1)
   1460 #define NMERR_INVALID_HFILTER (2)
   1461 #define NMERR_CAPTURING (3)
   1462 #define NMERR_NOT_CAPTURING (4)
   1463 #define NMERR_NO_MORE_FRAMES (5)
   1464 #define NMERR_BUFFER_TOO_SMALL (6)
   1465 #define NMERR_FRAME_NOT_RECOGNIZED (7)
   1466 #define NMERR_FILE_ALREADY_EXISTS (8)
   1467 #define NMERR_DRIVER_NOT_FOUND (9)
   1468 #define NMERR_ADDRESS_ALREADY_EXISTS (10)
   1469 #define NMERR_INVALID_HFRAME (11)
   1470 #define NMERR_INVALID_HPROTOCOL (12)
   1471 #define NMERR_INVALID_HPROPERTY (13)
   1472 #define NMERR_LOCKED (14)
   1473 #define NMERR_STACK_EMPTY (15)
   1474 #define NMERR_STACK_OVERFLOW (16)
   1475 #define NMERR_TOO_MANY_PROTOCOLS (17)
   1476 #define NMERR_FILE_NOT_FOUND (18)
   1477 #define NMERR_OUT_OF_MEMORY (19)
   1478 #define NMERR_CAPTURE_PAUSED (20)
   1479 #define NMERR_NO_BUFFERS (21)
   1480 #define NMERR_BUFFERS_ALREADY_EXIST (22)
   1481 #define NMERR_NOT_LOCKED (23)
   1482 #define NMERR_OUT_OF_RANGE (24)
   1483 #define NMERR_LOCK_NESTING_TOO_DEEP (25)
   1484 #define NMERR_LOAD_PARSER_FAILED (26)
   1485 #define NMERR_UNLOAD_PARSER_FAILED (27)
   1486 #define NMERR_INVALID_HADDRESSDB (28)
   1487 #define NMERR_ADDRESS_NOT_FOUND (29)
   1488 #define NMERR_NETWORK_NOT_PRESENT (30)
   1489 #define NMERR_NO_PROPERTY_DATABASE (31)
   1490 #define NMERR_PROPERTY_NOT_FOUND (32)
   1491 #define NMERR_INVALID_HPROPERTYDB (33)
   1492 #define NMERR_PROTOCOL_NOT_ENABLED (34)
   1493 #define NMERR_PROTOCOL_NOT_FOUND (35)
   1494 #define NMERR_INVALID_PARSER_DLL (36)
   1495 #define NMERR_NO_ATTACHED_PROPERTIES (37)
   1496 #define NMERR_NO_FRAMES (38)
   1497 #define NMERR_INVALID_FILE_FORMAT (39)
   1498 #define NMERR_COULD_NOT_CREATE_TEMPFILE (40)
   1499 #define NMERR_OUT_OF_DOS_MEMORY (41)
   1500 #define NMERR_NO_PROTOCOLS_ENABLED (42)
   1501 #define NMERR_UNKNOWN_MACTYPE (46)
   1502 #define NMERR_ROUTING_INFO_NOT_PRESENT (47)
   1503 #define NMERR_INVALID_HNETWORK (48)
   1504 #define NMERR_NETWORK_ALREADY_OPENED (49)
   1505 #define NMERR_NETWORK_NOT_OPENED (50)
   1506 #define NMERR_FRAME_NOT_FOUND (51)
   1507 #define NMERR_NO_HANDLES (53)
   1508 #define NMERR_INVALID_NETWORK_ID (54)
   1509 #define NMERR_INVALID_HCAPTURE (55)
   1510 #define NMERR_PROTOCOL_ALREADY_ENABLED (56)
   1511 #define NMERR_FILTER_INVALID_EXPRESSION (57)
   1512 #define NMERR_TRANSMIT_ERROR (58)
   1513 #define NMERR_INVALID_HBUFFER (59)
   1514 #define NMERR_INVALID_DATA (60)
   1515 #define NMERR_MSDOS_DRIVER_NOT_LOADED (61)
   1516 #define NMERR_WINDOWS_DRIVER_NOT_LOADED (62)
   1517 #define NMERR_MSDOS_DRIVER_INIT_FAILURE (63)
   1518 #define NMERR_WINDOWS_DRIVER_INIT_FAILURE (64)
   1519 #define NMERR_NETWORK_BUSY (65)
   1520 #define NMERR_CAPTURE_NOT_PAUSED (66)
   1521 #define NMERR_INVALID_PACKET_LENGTH (67)
   1522 #define NMERR_INTERNAL_EXCEPTION (69)
   1523 #define NMERR_PROMISCUOUS_MODE_NOT_SUPPORTED (70)
   1524 #define NMERR_MAC_DRIVER_OPEN_FAILURE (71)
   1525 #define NMERR_RUNAWAY_PROTOCOL (72)
   1526 #define NMERR_PENDING (73)
   1527 #define NMERR_ACCESS_DENIED (74)
   1528 #define NMERR_INVALID_HPASSWORD (75)
   1529 #define NMERR_INVALID_PARAMETER (76)
   1530 #define NMERR_FILE_READ_ERROR (77)
   1531 #define NMERR_FILE_WRITE_ERROR (78)
   1532 #define NMERR_PROTOCOL_NOT_REGISTERED (79)
   1533 #define NMERR_IP_ADDRESS_NOT_FOUND (80)
   1534 #define NMERR_TRANSMIT_CANCELLED (81)
   1535 #define NMERR_LOCKED_FRAMES (82)
   1536 #define NMERR_NO_TRANSMITS_PENDING (83)
   1537 #define NMERR_PATH_NOT_FOUND (84)
   1538 #define NMERR_WINDOWS_ERROR (85)
   1539 #define NMERR_NO_FRAME_NUMBER (86)
   1540 #define NMERR_FRAME_HAS_NO_CAPTURE (87)
   1541 #define NMERR_FRAME_ALREADY_HAS_CAPTURE (88)
   1542 #define NMERR_NAL_IS_NOT_REMOTE (89)
   1543 #define NMERR_NOT_SUPPORTED (90)
   1544 #define NMERR_DISCARD_FRAME (91)
   1545 #define NMERR_CANCEL_SAVE_CAPTURE (92)
   1546 #define NMERR_LOST_CONNECTION (93)
   1547 #define NMERR_INVALID_MEDIA_TYPE (94)
   1548 #define NMERR_AGENT_IN_USE (95)
   1549 #define NMERR_TIMEOUT (96)
   1550 #define NMERR_DISCONNECTED (97)
   1551 #define NMERR_SETTIMER_FAILED (98)
   1552 #define NMERR_NETWORK_ERROR (99)
   1553 #define NMERR_INVALID_FRAMESPROC (100)
   1554 #define NMERR_UNKNOWN_CAPTURETYPE (101)
   1555 #define NMERR_NOT_CONNECTED (102)
   1556 #define NMERR_ALREADY_CONNECTED (103)
   1557 #define NMERR_INVALID_REGISTRY_CONFIGURATION (104)
   1558 #define NMERR_DELAYED (105)
   1559 #define NMERR_NOT_DELAYED (106)
   1560 #define NMERR_REALTIME (107)
   1561 #define NMERR_NOT_REALTIME (108)
   1562 #define NMERR_STATS_ONLY (109)
   1563 #define NMERR_NOT_STATS_ONLY (110)
   1564 #define NMERR_TRANSMIT (111)
   1565 #define NMERR_NOT_TRANSMIT (112)
   1566 #define NMERR_TRANSMITTING (113)
   1567 #define NMERR_DISK_NOT_LOCAL_FIXED (114)
   1568 #define NMERR_COULD_NOT_CREATE_DIRECTORY (115)
   1569 #define NMERR_NO_DEFAULT_CAPTURE_DIRECTORY (116)
   1570 #define NMERR_UPLEVEL_CAPTURE_FILE (117)
   1571 #define NMERR_LOAD_EXPERT_FAILED (118)
   1572 #define NMERR_EXPERT_REPORT_FAILED (119)
   1573 #define NMERR_REG_OPERATION_FAILED (120)
   1574 #define NMERR_NO_DLLS_FOUND (121)
   1575 #define NMERR_NO_CONVERSATION_STATS (122)
   1576 #define NMERR_SECURITY_BREACH_CAPTURE_DELETED (123)
   1577 #define NMERR_FRAME_FAILED_FILTER (124)
   1578 #define NMERR_EXPERT_TERMINATE (125)
   1579 #define NMERR_REMOTE_NOT_A_SERVER (126)
   1580 #define NMERR_REMOTE_VERSION_OUTOFSYNC (127)
   1581 #define NMERR_INVALID_EXPERT_GROUP (128)
   1582 #define NMERR_INVALID_EXPERT_NAME (129)
   1583 #define NMERR_INVALID_EXPERT_HANDLE (130)
   1584 #define NMERR_GROUP_NAME_ALREADY_EXISTS (131)
   1585 #define NMERR_INVALID_GROUP_NAME (132)
   1586 #define NMERR_EXPERT_ALREADY_IN_GROUP (133)
   1587 #define NMERR_EXPERT_NOT_IN_GROUP (134)
   1588 #define NMERR_NOT_INITIALIZED (135)
   1589 #define NMERR_INVALID_GROUP_ROOT (136)
   1590 #define NMERR_BAD_VERSION (137)
   1591 #define NMERR_ESP (138)
   1592 #define NMERR_NOT_ESP (139)
   1593 #define NMERR_BLOB_NOT_INITIALIZED (1000)
   1594 #define NMERR_INVALID_BLOB (1001)
   1595 #define NMERR_UPLEVEL_BLOB (1002)
   1596 #define NMERR_BLOB_ENTRY_ALREADY_EXISTS (1003)
   1597 #define NMERR_BLOB_ENTRY_DOES_NOT_EXIST (1004)
   1598 #define NMERR_AMBIGUOUS_SPECIFIER (1005)
   1599 #define NMERR_BLOB_OWNER_NOT_FOUND (1006)
   1600 #define NMERR_BLOB_CATEGORY_NOT_FOUND (1007)
   1601 #define NMERR_UNKNOWN_CATEGORY (1008)
   1602 #define NMERR_UNKNOWN_TAG (1009)
   1603 #define NMERR_BLOB_CONVERSION_ERROR (1010)
   1604 #define NMERR_ILLEGAL_TRIGGER (1011)
   1605 #define NMERR_BLOB_STRING_INVALID (1012)
   1606 #define NMERR_UNABLE_TO_LOAD_LIBRARY (1013)
   1607 #define NMERR_UNABLE_TO_GET_PROCADDR (1014)
   1608 #define NMERR_CLASS_NOT_REGISTERED (1015)
   1609 #define NMERR_INVALID_REMOTE_COMPUTERNAME (1016)
   1610 #define NMERR_RPC_REMOTE_FAILURE (1017)
   1611 #define NMERR_NO_NPPS (3016)
   1612 #define NMERR_NO_MATCHING_NPPS (3017)
   1613 #define NMERR_NO_NPP_SELECTED (3018)
   1614 #define NMERR_NO_INPUT_BLOBS (3019)
   1615 #define NMERR_NO_NPP_DLLS (3020)
   1616 #define NMERR_NO_VALID_NPP_DLLS (3021)
   1617 
   1618 #ifndef INLINE
   1619 #define INLINE __CRT_INLINE
   1620 #endif
   1621   typedef LONG HRESULT;
   1622 
   1623   INLINE HRESULT NMERR_TO_HRESULT(DWORD nmerror) {
   1624     HRESULT hResult;
   1625     if(nmerror==NMERR_SUCCESS) hResult = NOERROR;
   1626     else hResult = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,(WORD)nmerror);
   1627     return hResult;
   1628   }
   1629 
   1630   INLINE DWORD HRESULT_TO_NMERR(HRESULT hResult) { return HRESULT_CODE(hResult); }
   1631 
   1632   typedef HFILTER *LPHFILTER;
   1633   typedef DWORD FILTERACTIONTYPE;
   1634   typedef DWORD VALUETYPE;
   1635 
   1636 #define PROTOCOL_NUM_ANY (-1)
   1637 
   1638   typedef PROTOCOLTABLE PROTOCOLTABLETYPE;
   1639   typedef PROTOCOLTABLETYPE *LPPROTOCOLTABLETYPE;
   1640   typedef DWORD FILTERBITS;
   1641   typedef FILTERBITS *LPFILTERBITS;
   1642   typedef SYSTEMTIME *LPTIME;
   1643   typedef SYSTEMTIME UNALIGNED *ULPTIME;
   1644 
   1645   typedef struct _FILTEROBJECT2 {
   1646     FILTERACTIONTYPE Action;
   1647     HPROPERTY hProperty;
   1648     __C89_NAMELESS union {
   1649       VALUETYPE Value;
   1650       HPROTOCOL hProtocol;
   1651       LPVOID lpArray;
   1652       LPPROTOCOLTABLETYPE lpProtocolTable;
   1653       LPADDRESS2 lpAddress;
   1654       ULPLARGEINT lpLargeInt;
   1655       ULPTIME lpTime;
   1656       LPOBJECT_IDENTIFIER lpOID;
   1657     };
   1658     __C89_NAMELESS union {
   1659       WORD ByteCount;
   1660       WORD ByteOffset;
   1661     };
   1662     struct _FILTEROBJECT2 *pNext;
   1663   } FILTEROBJECT2;
   1664 
   1665   typedef FILTEROBJECT2 *LPFILTEROBJECT2;
   1666 
   1667 #define FILTERINFO_SIZE (sizeof(FILTEROBJECT2))
   1668 
   1669   typedef struct _FILTERDESC2 {
   1670     WORD NumEntries;
   1671     WORD Flags;
   1672     LPFILTEROBJECT2 lpStack;
   1673     LPFILTEROBJECT2 lpKeepLast;
   1674     LPVOID UIInstanceData;
   1675     LPFILTERBITS lpFilterBits;
   1676     LPFILTERBITS lpCheckBits;
   1677   } FILTERDESC2;
   1678 
   1679   typedef FILTERDESC2 *LPFILTERDESC2;
   1680 
   1681 #define FILTERDESC2_SIZE sizeof(FILTERDESC2)
   1682 
   1683   typedef struct _FILTEROBJECT {
   1684     FILTERACTIONTYPE Action;
   1685     HPROPERTY hProperty;
   1686     __C89_NAMELESS union {
   1687       VALUETYPE Value;
   1688       HPROTOCOL hProtocol;
   1689       LPVOID lpArray;
   1690       LPPROTOCOLTABLETYPE lpProtocolTable;
   1691       LPADDRESS lpAddress;
   1692       ULPLARGEINT lpLargeInt;
   1693       ULPTIME lpTime;
   1694       LPOBJECT_IDENTIFIER lpOID;
   1695     };
   1696     __C89_NAMELESS union {
   1697       WORD ByteCount;
   1698       WORD ByteOffset;
   1699     };
   1700     struct _FILTEROBJECT *pNext;
   1701   } FILTEROBJECT;
   1702   typedef FILTEROBJECT *LPFILTEROBJECT;
   1703 
   1704   typedef struct _FILTERDESC {
   1705     WORD NumEntries;
   1706     WORD Flags;
   1707     LPFILTEROBJECT lpStack;
   1708     LPFILTEROBJECT lpKeepLast;
   1709     LPVOID UIInstanceData;
   1710     LPFILTERBITS lpFilterBits;
   1711     LPFILTERBITS lpCheckBits;
   1712   } FILTERDESC;
   1713 
   1714   typedef FILTERDESC *LPFILTERDESC;
   1715 
   1716 #define FILTERDESC_SIZE sizeof(FILTERDESC)
   1717 
   1718 #define FilterGetUIInstanceData(hfilt) (((LPFILTERDESC2)hfilt)->UIInstanceData)
   1719 #define FilterSetUIInstanceData(hfilt,inst) (((LPFILTERDESC2)hfilt)->UIInstanceData = (LPVOID)inst)
   1720 
   1721 #define FILTERFREEPOOLSTART (20)
   1722 
   1723 #define INVALIDELEMENT (-1)
   1724 #define INVALIDVALUE ((VALUETYPE)-9999)
   1725 #define FILTER_FAIL_WITH_ERROR (-1)
   1726 #define FILTER_PASSED (TRUE)
   1727 #define FILTER_FAILED (FALSE)
   1728 
   1729 #define FILTERACTION_INVALID (0)
   1730 #define FILTERACTION_PROPERTY (1)
   1731 #define FILTERACTION_VALUE (2)
   1732 #define FILTERACTION_STRING (3)
   1733 #define FILTERACTION_ARRAY (4)
   1734 #define FILTERACTION_AND (5)
   1735 #define FILTERACTION_OR (6)
   1736 #define FILTERACTION_XOR (7)
   1737 #define FILTERACTION_PROPERTYEXIST (8)
   1738 #define FILTERACTION_CONTAINSNC (9)
   1739 #define FILTERACTION_CONTAINS (10)
   1740 #define FILTERACTION_NOT (11)
   1741 #define FILTERACTION_EQUALNC (12)
   1742 #define FILTERACTION_EQUAL (13)
   1743 #define FILTERACTION_NOTEQUALNC (14)
   1744 #define FILTERACTION_NOTEQUAL (15)
   1745 #define FILTERACTION_GREATERNC (16)
   1746 #define FILTERACTION_GREATER (17)
   1747 #define FILTERACTION_LESSNC (18)
   1748 #define FILTERACTION_LESS (19)
   1749 #define FILTERACTION_GREATEREQUALNC (20)
   1750 #define FILTERACTION_GREATEREQUAL (21)
   1751 #define FILTERACTION_LESSEQUALNC (22)
   1752 #define FILTERACTION_LESSEQUAL (23)
   1753 #define FILTERACTION_PLUS (24)
   1754 #define FILTERACTION_MINUS (25)
   1755 #define FILTERACTION_ADDRESS (26)
   1756 #define FILTERACTION_ADDRESSANY (27)
   1757 #define FILTERACTION_FROM (28)
   1758 #define FILTERACTION_TO (29)
   1759 #define FILTERACTION_FROMTO (30)
   1760 #define FILTERACTION_AREBITSON (31)
   1761 #define FILTERACTION_AREBITSOFF (32)
   1762 #define FILTERACTION_PROTOCOLSEXIST (33)
   1763 #define FILTERACTION_PROTOCOLEXIST (34)
   1764 #define FILTERACTION_ARRAYEQUAL (35)
   1765 #define FILTERACTION_DEREFPROPERTY (36)
   1766 #define FILTERACTION_LARGEINT (37)
   1767 #define FILTERACTION_TIME (38)
   1768 #define FILTERACTION_ADDR_ETHER (39)
   1769 #define FILTERACTION_ADDR_TOKEN (40)
   1770 #define FILTERACTION_ADDR_FDDI (41)
   1771 #define FILTERACTION_ADDR_IPX (42)
   1772 #define FILTERACTION_ADDR_IP (43)
   1773 #define FILTERACTION_OID (44)
   1774 #define FILTERACTION_OID_CONTAINS (45)
   1775 #define FILTERACTION_OID_BEGINS_WITH (46)
   1776 #define FILTERACTION_OID_ENDS_WITH (47)
   1777 #define FILTERACTION_ADDR_VINES (48)
   1778 #define FILTERACTION_ADDR_IP6 (49)
   1779 #define FILTERACTION_EXPRESSION (97)
   1780 #define FILTERACTION_BOOL (98)
   1781 #define FILTERACTION_NOEVAL (99)
   1782 #define FILTER_NO_MORE_FRAMES (0xffffffff)
   1783 #define FILTER_CANCELED (0xfffffffe)
   1784 #define FILTER_DIRECTION_NEXT (TRUE)
   1785 #define FILTER_DIRECTION_PREV (FALSE)
   1786 
   1787   typedef WINBOOL (WINAPI *STATUSPROC)(DWORD,HCAPTURE,HFILTER,LPVOID);
   1788 
   1789   HFILTER WINAPI CreateFilter(VOID);
   1790   DWORD WINAPI DestroyFilter(HFILTER hFilter);
   1791   HFILTER WINAPI FilterDuplicate(HFILTER hFilter);
   1792   DWORD WINAPI DisableParserFilter(HFILTER hFilter,HPARSER hParser);
   1793   DWORD WINAPI EnableParserFilter(HFILTER hFilter,HPARSER hParser);
   1794   DWORD WINAPI FilterAddObject(HFILTER hFilter,LPFILTEROBJECT2 lpFilterObject);
   1795   VOID WINAPI FilterFlushBits(HFILTER hFilter);
   1796   DWORD WINAPI FilterFrame(HFRAME hFrame,HFILTER hFilter,HCAPTURE hCapture);
   1797   WINBOOL WINAPI FilterAttachesProperties(HFILTER hFilter);
   1798   DWORD WINAPI FilterFindFrame (HFILTER hFilter,HCAPTURE hCapture,DWORD nFrame,STATUSPROC StatusProc,LPVOID UIInstance,DWORD TimeDelta,WINBOOL FilterDirection);
   1799   HFRAME FilterFindPropertyInstance (HFRAME hFrame,HFILTER hMasterFilter,HCAPTURE hCapture,HFILTER hInstanceFilter,LPPROPERTYINST *lpPropRestartKey,STATUSPROC StatusProc,LPVOID UIInstance,DWORD TimeDelta,WINBOOL FilterForward);
   1800   VOID WINAPI SetCurrentFilter(HFILTER);
   1801   HFILTER WINAPI GetCurrentFilter(VOID);
   1802 
   1803   typedef struct _ETHERNET {
   1804     BYTE DstAddr[MAX_ADDR_LENGTH];
   1805     BYTE SrcAddr[MAX_ADDR_LENGTH];
   1806     __C89_NAMELESS union {
   1807       WORD Length;
   1808       WORD Type;
   1809     };
   1810     BYTE Info[0];
   1811   } ETHERNET;
   1812 
   1813   typedef ETHERNET *LPETHERNET;
   1814   typedef ETHERNET UNALIGNED *ULPETHERNET;
   1815 
   1816 #define ETHERNET_SIZE sizeof(ETHERNET)
   1817 #define ETHERNET_HEADER_LENGTH (14)
   1818 
   1819 #define ETHERNET_DATA_LENGTH (0x5dc)
   1820 #define ETHERNET_FRAME_LENGTH (0x5ea)
   1821 #define ETHERNET_FRAME_TYPE (0x600)
   1822 
   1823   typedef struct _NM_ATM {
   1824     UCHAR DstAddr[6];
   1825     UCHAR SrcAddr[6];
   1826     ULONG Vpi;
   1827     ULONG Vci;
   1828   } NM_ATM;
   1829 
   1830   typedef NM_ATM *PNM_ATM;
   1831   typedef NM_ATM *UPNM_ATM;
   1832 
   1833 #define NM_ATM_HEADER_LENGTH sizeof(NM_ATM)
   1834 
   1835 #pragma pack(push,1)
   1836 
   1837   typedef struct _NM_1394 {
   1838     UCHAR DstAddr[6];
   1839     UCHAR SrcAddr[6];
   1840     ULONGLONG VcId;
   1841   } NM_1394;
   1842 
   1843   typedef NM_1394 *PNM_1394;
   1844   typedef NM_1394 *UPNM_1394;
   1845 
   1846 #define NM_1394_HEADER_LENGTH sizeof(NM_1394)
   1847 
   1848   typedef struct _TOKENRING {
   1849     BYTE AccessCtrl;
   1850     BYTE FrameCtrl;
   1851     BYTE DstAddr[MAX_ADDR_LENGTH];
   1852     BYTE SrcAddr[MAX_ADDR_LENGTH];
   1853     __C89_NAMELESS union {
   1854       BYTE Info[0];
   1855       WORD RoutingInfo[0];
   1856     };
   1857   } TOKENRING;
   1858 
   1859   typedef TOKENRING *LPTOKENRING;
   1860   typedef TOKENRING UNALIGNED *ULPTOKENRING;
   1861 #define TOKENRING_SIZE sizeof(TOKENRING)
   1862 #define TOKENRING_HEADER_LENGTH (14)
   1863 
   1864 #define TOKENRING_SA_ROUTING_INFO (0x80)
   1865 
   1866 #define TOKENRING_SA_LOCAL (0x40)
   1867 #define TOKENRING_DA_LOCAL (0x40)
   1868 #define TOKENRING_DA_GROUP (0x80)
   1869 #define TOKENRING_RC_LENGTHMASK (0x1f)
   1870 #define TOKENRING_BC_MASK (0xe0)
   1871 #define TOKENRING_TYPE_MAC (0)
   1872 #define TOKENRING_TYPE_LLC (0x40)
   1873 
   1874 #pragma pack(pop)
   1875 
   1876 #pragma pack(push,1)
   1877 
   1878   typedef struct _FDDI {
   1879     BYTE FrameCtrl;
   1880     BYTE DstAddr[MAX_ADDR_LENGTH];
   1881     BYTE SrcAddr[MAX_ADDR_LENGTH];
   1882     BYTE Info[0];
   1883   } FDDI;
   1884 
   1885 #define FDDI_SIZE sizeof(FDDI)
   1886 
   1887   typedef FDDI *LPFDDI;
   1888   typedef FDDI UNALIGNED *ULPFDDI;
   1889 
   1890 #define FDDI_HEADER_LENGTH (13)
   1891 #define FDDI_TYPE_MAC (0)
   1892 #define FDDI_TYPE_LLC (0x10)
   1893 #define FDDI_TYPE_LONG_ADDRESS (0x40)
   1894 
   1895 #pragma pack(pop)
   1896 
   1897 #pragma pack(push,1)
   1898 
   1899   typedef struct _LLC {
   1900     BYTE dsap;
   1901     BYTE ssap;
   1902     struct {
   1903       __C89_NAMELESS union {
   1904 	BYTE Command;
   1905 	BYTE NextSend;
   1906       };
   1907       __C89_NAMELESS union {
   1908 	BYTE NextRecv;
   1909 	BYTE Data[1];
   1910       };
   1911     } ControlField;
   1912   } LLC;
   1913 
   1914   typedef LLC *LPLLC;
   1915   typedef LLC UNALIGNED *ULPLLC;
   1916 
   1917 #define LLC_SIZE (sizeof(LLC))
   1918 
   1919 #pragma pack(pop)
   1920 
   1921 #define IsRoutingInfoPresent(f) ((((ULPTOKENRING) (f))->SrcAddr[0] & TOKENRING_SA_ROUTING_INFO) ? TRUE : FALSE)
   1922 #define GetRoutingInfoLength(f) (IsRoutingInfoPresent(f) ? (((ULPTOKENRING) (f))->RoutingInfo[0] & TOKENRING_RC_LENGTHMASK) : 0)
   1923 
   1924   typedef VOID (WINAPIV *FORMAT)(LPPROPERTYINST,...);
   1925 
   1926 #define PROTOCOL_STATUS_RECOGNIZED (0)
   1927 #define PROTOCOL_STATUS_NOT_RECOGNIZED (1)
   1928 #define PROTOCOL_STATUS_CLAIMED (2)
   1929 #define PROTOCOL_STATUS_NEXT_PROTOCOL (3)
   1930 
   1931   extern BYTE HexTable[];
   1932 
   1933 #define XCHG(x) MAKEWORD(HIBYTE(x),LOBYTE(x))
   1934 #define DXCHG(x) MAKELONG(XCHG(HIWORD(x)),XCHG(LOWORD(x)))
   1935 #define LONIBBLE(b) ((BYTE) ((b) & 0x0F))
   1936 #define HINIBBLE(b) ((BYTE) ((b) >> 4))
   1937 #define HEX(b) (HexTable[LONIBBLE(b)])
   1938 #define SWAPBYTES(w) ((w) = XCHG(w))
   1939 #define SWAPWORDS(d) ((d) = DXCHG(d))
   1940 
   1941   typedef union _MACFRAME {
   1942     LPBYTE MacHeader;
   1943     LPETHERNET Ethernet;
   1944     LPTOKENRING Tokenring;
   1945     LPFDDI Fddi;
   1946   } MACFRAME;
   1947 
   1948   typedef MACFRAME *LPMACFRAME;
   1949 
   1950 #define HOT_SIGNATURE MAKE_IDENTIFIER('H','O','T','$')
   1951 #define HOE_SIGNATURE MAKE_IDENTIFIER('H','O','E','$')
   1952 
   1953   typedef struct _HANDOFFENTRY {
   1954     DWORD hoe_sig;
   1955     DWORD hoe_ProtIdentNumber;
   1956     HPROTOCOL hoe_ProtocolHandle;
   1957     DWORD hoe_ProtocolData;
   1958   } HANDOFFENTRY;
   1959 
   1960   typedef HANDOFFENTRY *LPHANDOFFENTRY;
   1961 
   1962   typedef struct _HANDOFFTABLE {
   1963     DWORD hot_sig;
   1964     DWORD hot_NumEntries;
   1965     LPHANDOFFENTRY hot_Entries;
   1966   } HANDOFFTABLE;
   1967 
   1968   typedef struct _HANDOFFTABLE *LPHANDOFFTABLE;
   1969 
   1970   INLINE LPVOID GetPropertyInstanceData(LPPROPERTYINST PropertyInst) {
   1971     if(PropertyInst->DataLength!=(WORD) -1) return PropertyInst->lpData;
   1972     return (LPVOID) PropertyInst->lpPropertyInstEx->Byte;
   1973   }
   1974 
   1975 #define GetPropertyInstanceDataValue(p,type) ((type *) GetPropertyInstanceData(p))[0]
   1976 
   1977   INLINE DWORD GetPropertyInstanceFrameDataLength(LPPROPERTYINST PropertyInst) {
   1978     if(PropertyInst->DataLength!=(WORD) -1) return PropertyInst->DataLength;
   1979     return PropertyInst->lpPropertyInstEx->Length;
   1980   }
   1981 
   1982   INLINE DWORD GetPropertyInstanceExDataLength(LPPROPERTYINST PropertyInst) {
   1983     if(PropertyInst->DataLength==(WORD) -1) {
   1984       PropertyInst->lpPropertyInstEx->Length;
   1985     }
   1986     return (WORD) -1;
   1987   }
   1988 
   1989   LPLABELED_WORD WINAPI GetProtocolDescriptionTable(LPDWORD TableSize);
   1990   LPLABELED_WORD WINAPI GetProtocolDescription(DWORD ProtocolID);
   1991   DWORD WINAPI GetMacHeaderLength(LPVOID MacHeader,DWORD MacType);
   1992   DWORD WINAPI GetLLCHeaderLength(LPLLC Frame);
   1993   DWORD WINAPI GetEtype(LPVOID MacHeader,DWORD MacType);
   1994   DWORD WINAPI GetSaps(LPVOID MacHeader,DWORD MacType);
   1995   WINBOOL WINAPI IsLLCPresent(LPVOID MacHeader,DWORD MacType);
   1996   VOID WINAPI CanonicalizeHexString(LPSTR hex,LPSTR dest,DWORD len);
   1997   void WINAPI CanonHex(UCHAR *pDest,UCHAR *pSource,int iLen,WINBOOL fOx);
   1998   DWORD WINAPI ByteToBinary(LPSTR string,DWORD ByteValue);
   1999   DWORD WINAPI WordToBinary(LPSTR string,DWORD WordValue);
   2000   DWORD WINAPI DwordToBinary(LPSTR string,DWORD DwordValue);
   2001   LPSTR WINAPI AddressToString(LPSTR string,BYTE *lpAddress);
   2002   LPBYTE WINAPI StringToAddress(BYTE *lpAddress,LPSTR string);
   2003   LPDWORD WINAPI VarLenSmallIntToDword(LPBYTE pValue,WORD ValueLen,WINBOOL fIsByteswapped,LPDWORD lpDword);
   2004   LPBYTE WINAPI LookupByteSetString (LPSET lpSet,BYTE Value);
   2005   LPBYTE WINAPI LookupWordSetString (LPSET lpSet,WORD Value);
   2006   LPBYTE WINAPI LookupDwordSetString (LPSET lpSet,DWORD Value);
   2007   DWORD WINAPIV FormatByteFlags(LPSTR string,DWORD ByteValue,DWORD BitMask);
   2008   DWORD WINAPIV FormatWordFlags(LPSTR string,DWORD WordValue,DWORD BitMask);
   2009   DWORD WINAPIV FormatDwordFlags(LPSTR string,DWORD DwordValue,DWORD BitMask);
   2010   LPSTR WINAPIV FormatTimeAsString(SYSTEMTIME *time,LPSTR string);
   2011   VOID WINAPIV FormatLabeledByteSetAsFlags(LPPROPERTYINST lpPropertyInst);
   2012   VOID WINAPIV FormatLabeledWordSetAsFlags(LPPROPERTYINST lpPropertyInst);
   2013   VOID WINAPIV FormatLabeledDwordSetAsFlags(LPPROPERTYINST lpPropertyInst);
   2014   VOID WINAPIV FormatPropertyDataAsByte(LPPROPERTYINST lpPropertyInst,DWORD Base);
   2015   VOID WINAPIV FormatPropertyDataAsWord(LPPROPERTYINST lpPropertyInst,DWORD Base);
   2016   VOID WINAPIV FormatPropertyDataAsDword(LPPROPERTYINST lpPropertyInst,DWORD Base);
   2017   VOID WINAPIV FormatLabeledByteSet(LPPROPERTYINST lpPropertyInst);
   2018   VOID WINAPIV FormatLabeledWordSet(LPPROPERTYINST lpPropertyInst);
   2019   VOID WINAPIV FormatLabeledDwordSet(LPPROPERTYINST lpPropertyInst);
   2020   VOID WINAPIV FormatPropertyDataAsInt64(LPPROPERTYINST lpPropertyInst,DWORD Base);
   2021   VOID WINAPIV FormatPropertyDataAsTime(LPPROPERTYINST lpPropertyInst);
   2022   VOID WINAPIV FormatPropertyDataAsString(LPPROPERTYINST lpPropertyInst);
   2023   VOID WINAPIV FormatPropertyDataAsHexString(LPPROPERTYINST lpPropertyInst);
   2024   ULPBYTE WINAPI ParserTemporaryLockFrame(HFRAME hFrame);
   2025   LPVOID WINAPI GetCCInstPtr(VOID);
   2026   VOID WINAPI SetCCInstPtr(LPVOID lpCurCaptureInst);
   2027   LPVOID WINAPI CCHeapAlloc(DWORD dwBytes,WINBOOL bZeroInit);
   2028   LPVOID WINAPI CCHeapReAlloc(LPVOID lpMem,DWORD dwBytes,WINBOOL bZeroInit);
   2029   WINBOOL WINAPI CCHeapFree(LPVOID lpMem);
   2030   SIZE_T WINAPI CCHeapSize(LPVOID lpMem);
   2031   WINBOOL __cdecl BERGetInteger(ULPBYTE pCurrentPointer,ULPBYTE *ppValuePointer,LPDWORD pHeaderLength,LPDWORD pDataLength,ULPBYTE *ppNext);
   2032   WINBOOL __cdecl BERGetString(ULPBYTE pCurrentPointer,ULPBYTE *ppValuePointer,LPDWORD pHeaderLength,LPDWORD pDataLength,ULPBYTE *ppNext);
   2033   WINBOOL __cdecl BERGetHeader(ULPBYTE pCurrentPointer,ULPBYTE pTag,LPDWORD pHeaderLength,LPDWORD pDataLength,ULPBYTE *ppNext);
   2034 
   2035 #define MAX_PROTOCOL_COMMENT_LEN (256)
   2036 
   2037 #define NETMON_MAX_PROTOCOL_NAME_LEN (16)
   2038 
   2039 #ifndef MAX_PROTOCOL_NAME_LEN
   2040 #define MAX_PROTOCOL_NAME_LEN (NETMON_MAX_PROTOCOL_NAME_LEN)
   2041 #else
   2042 #undef MAX_PROTOCOL_NAME_LEN
   2043 #endif
   2044 
   2045   typedef enum __MIDL___MIDL_itf_netmon_0000_0015 {
   2046     HANDOFF_VALUE_FORMAT_BASE_UNKNOWN = 0,HANDOFF_VALUE_FORMAT_BASE_DECIMAL = 10,HANDOFF_VALUE_FORMAT_BASE_HEX = 16
   2047   } PF_HANDOFFVALUEFORMATBASE;
   2048 
   2049   typedef struct _PF_HANDOFFENTRY {
   2050     char szIniFile[260];
   2051     char szIniSection[260];
   2052     char szProtocol[16];
   2053     DWORD dwHandOffValue;
   2054     PF_HANDOFFVALUEFORMATBASE ValueFormatBase;
   2055   } PF_HANDOFFENTRY;
   2056 
   2057   typedef PF_HANDOFFENTRY *PPF_HANDOFFENTRY;
   2058 
   2059   typedef struct _PF_HANDOFFSET {
   2060     DWORD nEntries;
   2061     PF_HANDOFFENTRY Entry[0];
   2062   } PF_HANDOFFSET;
   2063 
   2064   typedef PF_HANDOFFSET *PPF_HANDOFFSET;
   2065 
   2066   typedef struct _PF_FOLLOWENTRY {
   2067     char szProtocol[16];
   2068   } PF_FOLLOWENTRY;
   2069 
   2070   typedef PF_FOLLOWENTRY *PPF_FOLLOWENTRY;
   2071 
   2072   typedef struct _PF_FOLLOWSET {
   2073     DWORD nEntries;
   2074     PF_FOLLOWENTRY Entry[0];
   2075   } PF_FOLLOWSET;
   2076 
   2077   typedef PF_FOLLOWSET *PPF_FOLLOWSET;
   2078 
   2079   typedef struct _PF_PARSERINFO {
   2080     char szProtocolName[NETMON_MAX_PROTOCOL_NAME_LEN];
   2081     char szComment[MAX_PROTOCOL_COMMENT_LEN];
   2082     char szHelpFile[MAX_PATH];
   2083     PPF_FOLLOWSET pWhoCanPrecedeMe;
   2084     PPF_FOLLOWSET pWhoCanFollowMe;
   2085     PPF_HANDOFFSET pWhoHandsOffToMe;
   2086     PPF_HANDOFFSET pWhoDoIHandOffTo;
   2087   } PF_PARSERINFO;
   2088 
   2089   typedef PF_PARSERINFO *PPF_PARSERINFO;
   2090 
   2091   typedef struct _PF_PARSERDLLINFO {
   2092     DWORD nParsers;
   2093     PF_PARSERINFO ParserInfo[0];
   2094   } PF_PARSERDLLINFO;
   2095 
   2096   typedef PF_PARSERDLLINFO *PPF_PARSERDLLINFO;
   2097 
   2098 #define INI_PATH_LENGTH (256)
   2099 
   2100 #define MAX_HANDOFF_ENTRY_LENGTH (80)
   2101 #define MAX_PROTOCOL_NAME (40)
   2102 #define NUMALLOCENTRIES (10)
   2103 #define RAW_INI_STR_LEN (200)
   2104 
   2105 #define PARSERS_SUBDIR "PARSERS"
   2106 #define INI_EXTENSION "INI"
   2107 #define BASE10_FORMAT_STR "%ld=%s %ld"
   2108 #define BASE16_FORMAT_STR "%lx=%s %lx"
   2109 
   2110   LPSTR __cdecl BuildINIPath(char *FullPath,char *IniFileName);
   2111   DWORD WINAPI CreateHandoffTable(LPSTR secName,LPSTR iniFile,LPHANDOFFTABLE *hTable,DWORD nMaxProtocolEntries,DWORD base);
   2112   HPROTOCOL WINAPI GetProtocolFromTable(LPHANDOFFTABLE hTable,DWORD ItemToFind,PDWORD_PTR lpInstData);
   2113   VOID WINAPI DestroyHandoffTable(LPHANDOFFTABLE hTable);
   2114   BOOLEAN WINAPI IsRawIPXEnabled(LPSTR secName,LPSTR iniFile,LPSTR CurProtocol);
   2115 
   2116 #define EXPERTSTRINGLENGTH (260)
   2117 #define EXPERTGROUPNAMELENGTH (25)
   2118 
   2119   typedef LPVOID HEXPERTKEY;
   2120   typedef HEXPERTKEY *PHEXPERTKEY;
   2121   typedef LPVOID HEXPERT;
   2122   typedef HEXPERT *PHEXPERT;
   2123   typedef LPVOID HRUNNINGEXPERT;
   2124   typedef HRUNNINGEXPERT *PHRUNNINGEXPERT;
   2125   typedef struct _EXPERTENUMINFO *PEXPERTENUMINFO;
   2126   typedef struct _EXPERTCONFIG *PEXPERTCONFIG;
   2127   typedef struct _EXPERTSTARTUPINFO *PEXPERTSTARTUPINFO;
   2128 
   2129 #define EXPERTENTRY_REGISTER "Register"
   2130 #define EXPERTENTRY_CONFIGURE "Configure"
   2131 #define EXPERTENTRY_RUN "Run"
   2132   typedef WINBOOL (WINAPI *PEXPERTREGISTERPROC)(PEXPERTENUMINFO);
   2133   typedef WINBOOL (WINAPI *PEXPERTCONFIGPROC) (HEXPERTKEY,PEXPERTCONFIG*,PEXPERTSTARTUPINFO,DWORD,HWND);
   2134   typedef WINBOOL (WINAPI *PEXPERTRUNPROC) (HEXPERTKEY,PEXPERTCONFIG,PEXPERTSTARTUPINFO,DWORD,HWND);
   2135 
   2136   typedef struct _EXPERTENUMINFO {
   2137     char szName[EXPERTSTRINGLENGTH];
   2138     char szVendor[EXPERTSTRINGLENGTH];
   2139     char szDescription[EXPERTSTRINGLENGTH];
   2140     DWORD Version;
   2141     DWORD Flags;
   2142     char szDllName[MAX_PATH];
   2143     HEXPERT hExpert;
   2144     HINSTANCE hModule;
   2145     PEXPERTREGISTERPROC pRegisterProc;
   2146     PEXPERTCONFIGPROC pConfigProc;
   2147     PEXPERTRUNPROC pRunProc;
   2148   } EXPERTENUMINFO;
   2149 
   2150   typedef EXPERTENUMINFO *PEXPERTENUMINFO;
   2151 
   2152 #define EXPERT_ENUM_FLAG_CONFIGURABLE (0x1)
   2153 #define EXPERT_ENUM_FLAG_VIEWER_PRIVATE (0x2)
   2154 #define EXPERT_ENUM_FLAG_NO_VIEWER (0x4)
   2155 #define EXPERT_ENUM_FLAG_ADD_ME_TO_RMC_IN_SUMMARY (0x10)
   2156 #define EXPERT_ENUM_FLAG_ADD_ME_TO_RMC_IN_DETAIL (0x20)
   2157 
   2158   typedef struct _EXPERTSTARTUPINFO {
   2159     DWORD Flags;
   2160     HCAPTURE hCapture;
   2161     char szCaptureFile[MAX_PATH];
   2162     DWORD dwFrameNumber;
   2163     HPROTOCOL hProtocol;
   2164     LPPROPERTYINST lpPropertyInst;
   2165     struct {
   2166       BYTE BitNumber;
   2167       WINBOOL bOn;
   2168     } sBitfield;
   2169   } EXPERTSTARTUPINFO;
   2170 
   2171   typedef struct _EXPERTCONFIG {
   2172     DWORD RawConfigLength;
   2173     BYTE RawConfigData[0];
   2174   } EXPERTCONFIG;
   2175 
   2176   typedef EXPERTCONFIG *PEXPERTCONFIG;
   2177 
   2178   typedef struct {
   2179     HEXPERT hExpert;
   2180     DWORD StartupFlags;
   2181     PEXPERTCONFIG pConfig;
   2182   } CONFIGUREDEXPERT;
   2183 
   2184   typedef CONFIGUREDEXPERT *PCONFIGUREDEXPERT;
   2185 
   2186   typedef struct {
   2187     DWORD FrameNumber;
   2188     HFRAME hFrame;
   2189     ULPFRAME pFrame;
   2190     LPRECOGNIZEDATATABLE lpRecognizeDataTable;
   2191     LPPROPERTYTABLE lpPropertyTable;
   2192   } EXPERTFRAMEDESCRIPTOR;
   2193 
   2194   typedef EXPERTFRAMEDESCRIPTOR *LPEXPERTFRAMEDESCRIPTOR;
   2195 
   2196 #define GET_SPECIFIED_FRAME (0)
   2197 #define GET_FRAME_NEXT_FORWARD (1)
   2198 #define GET_FRAME_NEXT_BACKWARD (2)
   2199 #define FLAGS_DEFER_TO_UI_FILTER (0x1)
   2200 #define FLAGS_ATTACH_PROPERTIES (0x2)
   2201 
   2202   typedef enum __MIDL___MIDL_itf_netmon_0000_0016 {
   2203     EXPERTSTATUS_INACTIVE = 0,EXPERTSTATUS_STARTING,EXPERTSTATUS_RUNNING,
   2204     EXPERTSTATUS_PROBLEM,EXPERTSTATUS_ABORTED,EXPERTSTATUS_DONE
   2205   } EXPERTSTATUSENUMERATION;
   2206 
   2207 #define EXPERTSUBSTATUS_ABORTED_USER (0x1)
   2208 #define EXPERTSUBSTATUS_ABORTED_LOAD_FAIL (0x2)
   2209 #define EXPERTSUBSTATUS_ABORTED_THREAD_FAIL (0x4)
   2210 #define EXPERTSUBSTATUS_ABORTED_BAD_ENTRY (0x8)
   2211 
   2212   typedef struct __MIDL___MIDL_itf_netmon_0000_0017 {
   2213     EXPERTSTATUSENUMERATION Status;
   2214     DWORD SubStatus;
   2215     DWORD PercentDone;
   2216     DWORD Frame;
   2217     char szStatusText[260];
   2218   } EXPERTSTATUS;
   2219 
   2220   typedef EXPERTSTATUS *PEXPERTSTATUS;
   2221 
   2222 #define EXPERT_STARTUP_FLAG_USE_STARTUP_DATA_OVER_CONFIG_DATA (0x1)
   2223 #define INVALID_FRAME_NUMBER ((DWORD)-1)
   2224 #define CAPTUREFILE_OPEN OPEN_EXISTING
   2225 #define CAPTUREFILE_CREATE CREATE_NEW
   2226 
   2227   LPSYSTEMTIME WINAPI GetCaptureTimeStamp(HCAPTURE hCapture);
   2228   DWORD WINAPI GetCaptureMacType(HCAPTURE hCapture);
   2229   DWORD WINAPI GetCaptureTotalFrames(HCAPTURE hCapture);
   2230   LPSTR WINAPI GetCaptureComment(HCAPTURE hCapture);
   2231   DWORD WINAPI MacTypeToAddressType(DWORD MacType);
   2232   DWORD WINAPI AddressTypeToMacType(DWORD AddressType);
   2233   DWORD WINAPI GetFrameDstAddressOffset(HFRAME hFrame,DWORD AddressType,LPDWORD AddressLength);
   2234   DWORD WINAPI GetFrameSrcAddressOffset(HFRAME hFrame,DWORD AddressType,LPDWORD AddressLength);
   2235   HCAPTURE WINAPI GetFrameCaptureHandle(HFRAME hFrame);
   2236   DWORD WINAPI GetFrameDestAddress(HFRAME hFrame,LPADDRESS2 lpAddress,DWORD AddressType,DWORD Flags);
   2237   DWORD WINAPI GetFrameSourceAddress(HFRAME hFrame,LPADDRESS2 lpAddress,DWORD AddressType,DWORD Flags);
   2238   DWORD WINAPI GetFrameMacHeaderLength(HFRAME hFrame);
   2239   WINBOOL WINAPI CompareFrameDestAddress(HFRAME hFrame,LPADDRESS2 lpAddress);
   2240   WINBOOL WINAPI CompareFrameSourceAddress(HFRAME hFrame,LPADDRESS2 lpAddress);
   2241   DWORD WINAPI GetFrameLength(HFRAME hFrame);
   2242   DWORD WINAPI GetFrameStoredLength(HFRAME hFrame);
   2243   DWORD WINAPI GetFrameMacType(HFRAME hFrame);
   2244   DWORD WINAPI GetFrameMacHeaderLength(HFRAME hFrame);
   2245   DWORD WINAPI GetFrameNumber(HFRAME hFrame);
   2246   __MINGW_EXTENSION __int64 WINAPI GetFrameTimeStamp(HFRAME hFrame);
   2247   ULPFRAME WINAPI GetFrameFromFrameHandle(HFRAME hFrame);
   2248   __MINGW_EXTENSION HFRAME WINAPI ModifyFrame(HCAPTURE hCapture,DWORD FrameNumber,LPBYTE FrameData,DWORD FrameLength,__int64 TimeStamp);
   2249   HFRAME WINAPI FindNextFrame(HFRAME hCurrentFrame,LPSTR ProtocolName,LPADDRESS2 lpDestAddress,LPADDRESS2 lpSrcAddress,LPWORD ProtocolOffset,DWORD OriginalFrameNumber,DWORD nHighestFrame);
   2250   HFRAME WINAPI FindPreviousFrame(HFRAME hCurrentFrame,LPSTR ProtocolName,LPADDRESS2 lpDstAddress,LPADDRESS2 lpSrcAddress,LPWORD ProtocolOffset,DWORD OriginalFrameNumber,DWORD nLowestFrame);
   2251   HCAPTURE WINAPI GetFrameCaptureHandle(HFRAME);
   2252   HFRAME WINAPI GetFrame(HCAPTURE hCapture,DWORD FrameNumber);
   2253   LPRECOGNIZEDATATABLE WINAPI GetFrameRecognizeData(HFRAME hFrame);
   2254   HPROTOCOL WINAPI CreateProtocol(LPSTR ProtocolName,LPENTRYPOINTS lpEntryPoints,DWORD cbEntryPoints);
   2255   VOID WINAPI DestroyProtocol(HPROTOCOL hProtocol);
   2256   LPPROTOCOLINFO WINAPI GetProtocolInfo(HPROTOCOL hProtocol);
   2257   HPROPERTY WINAPI GetProperty(HPROTOCOL hProtocol,LPSTR PropertyName);
   2258   HPROTOCOL WINAPI GetProtocolFromName(LPSTR ProtocolName);
   2259   DWORD WINAPI GetProtocolStartOffset(HFRAME hFrame,LPSTR ProtocolName);
   2260   DWORD WINAPI GetProtocolStartOffsetHandle(HFRAME hFrame,HPROTOCOL hProtocol);
   2261   DWORD WINAPI GetPreviousProtocolOffsetByName(HFRAME hFrame,DWORD dwStartOffset,LPSTR szProtocolName,DWORD *pdwPreviousOffset);
   2262   LPPROTOCOLTABLE WINAPI GetEnabledProtocols(HCAPTURE hCapture);
   2263   DWORD WINAPI CreatePropertyDatabase(HPROTOCOL hProtocol,DWORD nProperties);
   2264   DWORD WINAPI DestroyPropertyDatabase(HPROTOCOL hProtocol);
   2265   HPROPERTY WINAPI AddProperty(HPROTOCOL hProtocol,LPPROPERTYINFO PropertyInfo);
   2266   WINBOOL WINAPI AttachPropertyInstance(HFRAME hFrame,HPROPERTY hProperty,DWORD Length,ULPVOID lpData,DWORD HelpID,DWORD Level,DWORD IFlags);
   2267   WINBOOL WINAPI AttachPropertyInstanceEx(HFRAME hFrame,HPROPERTY hProperty,DWORD Length,ULPVOID lpData,DWORD ExLength,ULPVOID lpExData,DWORD HelpID,DWORD Level,DWORD IFlags);
   2268   LPPROPERTYINST WINAPI FindPropertyInstance(HFRAME hFrame,HPROPERTY hProperty);
   2269   LPPROPERTYINST WINAPI FindPropertyInstanceRestart (HFRAME hFrame,HPROPERTY hProperty,LPPROPERTYINST *lpRestartKey,WINBOOL DirForward);
   2270   LPPROPERTYINFO WINAPI GetPropertyInfo(HPROPERTY hProperty);
   2271   LPSTR WINAPI GetPropertyText(HFRAME hFrame,LPPROPERTYINST lpPI,LPSTR szBuffer,DWORD BufferSize);
   2272   DWORD WINAPI ResetPropertyInstanceLength(LPPROPERTYINST lpProp,WORD nOrgLen,WORD nNewLen);
   2273   DWORD WINAPI GetCaptureCommentFromFilename(LPSTR lpFilename,LPSTR lpComment,DWORD BufferSize);
   2274   int WINAPI CompareAddresses(LPADDRESS2 lpAddress1,LPADDRESS2 lpAddress2);
   2275   DWORD WINAPIV FormatPropertyInstance(LPPROPERTYINST lpPropertyInst,...);
   2276   __MINGW_EXTENSION SYSTEMTIME *WINAPI AdjustSystemTime(SYSTEMTIME *SystemTime,__int64 TimeDelta);
   2277   LPSTR WINAPI NMRtlIpv6AddressToStringA(const BYTE IP6Addr[],LPSTR S);
   2278   LPWSTR WINAPI NMRtlIpv6AddressToStringW(const BYTE IP6Addr[],LPWSTR S);
   2279   ULONG WINAPI NMRtlIpv6StringToAddressA(LPCSTR S,LPCSTR *Terminator,BYTE IP6Addr[]);
   2280   ULONG WINAPI NMRtlIpv6StringToAddressW(LPCWSTR S,LPCWSTR *Terminator,BYTE IP6Addr[]);
   2281   DWORD WINAPI ExpertGetFrame(HEXPERTKEY hExpertKey,DWORD Direction,DWORD RequestFlags,DWORD RequestedFrameNumber,HFILTER hFilter,LPEXPERTFRAMEDESCRIPTOR pEFrameDescriptor);
   2282   LPVOID WINAPI ExpertAllocMemory(HEXPERTKEY hExpertKey,SIZE_T nBytes,DWORD *pError);
   2283   LPVOID WINAPI ExpertReallocMemory(HEXPERTKEY hExpertKey,LPVOID pOriginalMemory,SIZE_T nBytes,DWORD *pError);
   2284   DWORD WINAPI ExpertFreeMemory(HEXPERTKEY hExpertKey,LPVOID pOriginalMemory);
   2285   SIZE_T WINAPI ExpertMemorySize(HEXPERTKEY hExpertKey,LPVOID pOriginalMemory);
   2286   DWORD WINAPI ExpertIndicateStatus(HEXPERTKEY hExpertKey,EXPERTSTATUSENUMERATION Status,DWORD SubStatus,const char *szText,LONG PercentDone);
   2287   DWORD WINAPI ExpertSubmitEvent(HEXPERTKEY hExpertKey,PNMEVENTDATA pExpertEvent);
   2288   DWORD WINAPI ExpertGetStartupInfo(HEXPERTKEY hExpertKey,PEXPERTSTARTUPINFO pExpertStartupInfo);
   2289 
   2290 #define INITIAL_RESTART_KEY (0xffffffff)
   2291 
   2292   DWORD __cdecl CreateBlob(HBLOB *phBlob);
   2293   DWORD __cdecl DestroyBlob(HBLOB hBlob);
   2294   DWORD __cdecl SetStringInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const char *pString);
   2295   DWORD __cdecl SetWStringInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const WCHAR *pwString);
   2296   DWORD __cdecl ConvertWStringToHexString(const WCHAR *pwsz,char **ppsz);
   2297   DWORD __cdecl GetStringFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const char **ppString);
   2298   DWORD __cdecl ConvertHexStringToWString(CHAR *psz,WCHAR **ppwsz);
   2299   DWORD __cdecl GetWStringFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,WCHAR **ppwString);
   2300   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);
   2301   DWORD __cdecl RemoveFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName);
   2302   DWORD __cdecl LockBlob(HBLOB hBlob);
   2303   DWORD __cdecl UnlockBlob(HBLOB hBlob);
   2304   DWORD __cdecl FindUnknownBlobCategories(HBLOB hBlob,const char *pOwnerName,const char *pKnownCategoriesTable[],HBLOB hUnknownCategoriesBlob);
   2305   DWORD __cdecl MergeBlob(HBLOB hDstBlob,HBLOB hSrcBlob);
   2306   DWORD __cdecl DuplicateBlob (HBLOB hSrcBlob,HBLOB *hBlobThatWillBeCreated);
   2307   DWORD __cdecl WriteBlobToFile(HBLOB hBlob,const char *pFileName);
   2308   DWORD __cdecl ReadBlobFromFile(HBLOB *phBlob,const char *pFileName);
   2309   DWORD __cdecl RegCreateBlobKey(HKEY hkey,const char *szBlobName,HBLOB hBlob);
   2310   DWORD __cdecl RegOpenBlobKey(HKEY hkey,const char *szBlobName,HBLOB *phBlob);
   2311   DWORD __cdecl MarshalBlob(HBLOB hBlob,DWORD *pSize,BYTE **ppBytes);
   2312   DWORD __cdecl UnMarshalBlob(HBLOB *phBlob,DWORD Size,BYTE *pBytes);
   2313   DWORD __cdecl SetDwordInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,DWORD Dword);
   2314   DWORD __cdecl GetDwordFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,DWORD *pDword);
   2315   DWORD __cdecl SetBoolInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,WINBOOL Bool);
   2316   DWORD __cdecl GetBoolFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,WINBOOL *pBool);
   2317   DWORD __cdecl GetMacAddressFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,BYTE *pMacAddress);
   2318   DWORD __cdecl SetMacAddressInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const BYTE *pMacAddress);
   2319   DWORD __cdecl FindUnknownBlobTags(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pKnownTagsTable[],HBLOB hUnknownTagsBlob);
   2320   DWORD __cdecl SetNetworkInfoInBlob(HBLOB hBlob,LPNETWORKINFO lpNetworkInfo);
   2321   DWORD __cdecl GetNetworkInfoFromBlob(HBLOB hBlob,LPNETWORKINFO lpNetworkInfo);
   2322   DWORD __cdecl CreateNPPInterface (HBLOB hBlob,REFIID iid,void **ppvObject);
   2323   DWORD __cdecl SetClassIDInBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,const CLSID *pClsID);
   2324   DWORD __cdecl GetClassIDFromBlob(HBLOB hBlob,const char *pOwnerName,const char *pCategoryName,const char *pTagName,CLSID *pClsID);
   2325   DWORD __cdecl SetNPPPatternFilterInBlob(HBLOB hBlob,LPEXPRESSION pExpression,HBLOB hErrorBlob);
   2326   DWORD __cdecl GetNPPPatternFilterFromBlob(HBLOB hBlob,LPEXPRESSION pExpression,HBLOB hErrorBlob);
   2327   DWORD __cdecl SetNPPAddress2FilterInBlob(HBLOB hBlob,LPADDRESSTABLE2 pAddressTable);
   2328   DWORD __cdecl GetNPPAddress2FilterFromBlob(HBLOB hBlob,LPADDRESSTABLE2 pAddressTable,HBLOB hErrorBlob);
   2329   DWORD __cdecl SetNPPTriggerInBlob(HBLOB hBlob,LPTRIGGER pTrigger,HBLOB hErrorBlob);
   2330   DWORD __cdecl GetNPPTriggerFromBlob(HBLOB hBlob,LPTRIGGER pTrigger,HBLOB hErrorBlob);
   2331   DWORD __cdecl SetNPPEtypeSapFilter(HBLOB hBlob,WORD nSaps,WORD nEtypes,LPBYTE lpSapTable,LPWORD lpEtypeTable,DWORD FilterFlags,HBLOB hErrorBlob);
   2332   DWORD __cdecl GetNPPEtypeSapFilter(HBLOB hBlob,WORD *pnSaps,WORD *pnEtypes,LPBYTE *ppSapTable,LPWORD *ppEtypeTable,DWORD *pFilterFlags,HBLOB hErrorBlob);
   2333   DWORD __cdecl GetNPPMacTypeAsNumber(HBLOB hBlob,LPDWORD lpMacType);
   2334   WINBOOL __cdecl IsRemoteNPP (HBLOB hBLOB);
   2335 
   2336 #define OWNER_NPP "NPP"
   2337 
   2338 #define CATEGORY_NETWORKINFO "NetworkInfo"
   2339 #define TAG_MACTYPE "MacType"
   2340 #define TAG_CURRENTADDRESS "CurrentAddress"
   2341 #define TAG_LINKSPEED "LinkSpeed"
   2342 #define TAG_MAXFRAMESIZE "MaxFrameSize"
   2343 #define TAG_FLAGS "Flags"
   2344 #define TAG_TIMESTAMPSCALEFACTOR "TimeStampScaleFactor"
   2345 #define TAG_COMMENT "Comment"
   2346 #define TAG_NODENAME "NodeName"
   2347 #define TAG_NAME "Name"
   2348 #define TAG_FAKENPP "Fake"
   2349 #define TAG_PROMISCUOUS_MODE "PMode"
   2350 
   2351 #define CATEGORY_LOCATION "Location"
   2352 #define TAG_RAS "Dial-up Connection"
   2353 #define TAG_MACADDRESS "MacAddress"
   2354 #define TAG_CLASSID "ClassID"
   2355 #define TAG_NAME "Name"
   2356 #define TAG_CONNECTIONNAME "Connection Name"
   2357 #define TAG_FRIENDLYNAME "Friendly Name"
   2358 
   2359 #define CATEGORY_CONFIG "Config"
   2360 #define TAG_FRAME_SIZE "FrameSize"
   2361 #define TAG_UPDATE_FREQUENCY "UpdateFreq"
   2362 #define TAG_BUFFER_SIZE "BufferSize"
   2363 #define TAG_PATTERN_DESIGNATOR "PatternMatch"
   2364 #define TAG_PATTERN "Pattern"
   2365 #define TAG_ADDRESS_PAIR "AddressPair"
   2366 #define TAG_CONNECTIONFLAGS "ConnectionFlags"
   2367 #define TAG_ETYPES "Etypes"
   2368 #define TAG_SAPS "Saps"
   2369 #define TAG_NO_CONVERSATION_STATS "NoConversationStats"
   2370 #define TAG_NO_STATS_FRAME "NoStatsFrame"
   2371 #define TAG_DONT_DELETE_EMPTY_CAPTURE "DontDeleteEmptyCapture"
   2372 #define TAG_WANT_PROTOCOL_INFO "WantProtocolInfo"
   2373 #define TAG_INTERFACE_DELAYED_CAPTURE "IDdC"
   2374 #define TAG_INTERFACE_REALTIME_CAPTURE "IRTC"
   2375 #define TAG_INTERFACE_STATS "ISts"
   2376 #define TAG_INTERFACE_TRANSMIT "IXmt"
   2377 #define TAG_LOCAL_ONLY "LocalOnly"
   2378 
   2379 #define TAG_IS_REMOTE "IsRemote"
   2380 
   2381 #define CATEGORY_TRIGGER "Trigger"
   2382 #define TAG_TRIGGER "Trigger"
   2383 
   2384 #define CATEGORY_FINDER "Finder"
   2385 #define TAG_ROOT "Root"
   2386 #define TAG_PROCNAME "ProcName"
   2387 #define TAG_DISP_STRING "Display"
   2388 #define TAG_DLL_FILENAME "DLLName"
   2389 #define TAG_GET_SPECIAL_BLOBS "Specials"
   2390 
   2391 #define CATEGORY_REMOTE "Remote"
   2392 #define TAG_REMOTECOMPUTER "RemoteComputer"
   2393 #define TAG_REMOTECLASSID "ClassID"
   2394 
   2395 #define PROTOCOL_STRING_ETHERNET_TXT "ETHERNET"
   2396 #define PROTOCOL_STRING_TOKENRING_TXT "TOKENRING"
   2397 #define PROTOCOL_STRING_FDDI_TXT "FDDI"
   2398 #define PROTOCOL_STRING_ATM_TXT "ATM"
   2399 #define PROTOCOL_STRING_1394_TXT "IP/1394"
   2400 
   2401 #define PROTOCOL_STRING_IP_TXT "IP"
   2402 #define PROTOCOL_STRING_IP6_TXT "IP6"
   2403 #define PROTOCOL_STRING_IPX_TXT "IPX"
   2404 #define PROTOCOL_STRING_XNS_TXT "XNS"
   2405 #define PROTOCOL_STRING_VINES_IP_TXT "VINES IP"
   2406 
   2407 #define PROTOCOL_STRING_ICMP_TXT "ICMP"
   2408 #define PROTOCOL_STRING_TCP_TXT "TCP"
   2409 #define PROTOCOL_STRING_UDP_TXT "UDP"
   2410 #define PROTOCOL_STRING_SPX_TXT "SPX"
   2411 #define PROTOCOL_STRING_NCP_TXT "NCP"
   2412 
   2413 #define PROTOCOL_STRING_ANY_TXT "ANY"
   2414 #define PROTOCOL_STRING_ANY_GROUP_TXT "ANY GROUP"
   2415 #define PROTOCOL_STRING_HIGHEST_TXT "HIGHEST"
   2416 #define PROTOCOL_STRING_LOCAL_ONLY_TXT "LOCAL ONLY"
   2417 #define PROTOCOL_STRING_UNKNOWN_TXT "UNKNOWN"
   2418 #define PROTOCOL_STRING_DATA_TXT "DATA"
   2419 #define PROTOCOL_STRING_FRAME_TXT "FRAME"
   2420 #define PROTOCOL_STRING_NONE_TXT "NONE"
   2421 #define PROTOCOL_STRING_EFFECTIVE_TXT "EFFECTIVE"
   2422 
   2423 #define ADDRESS_PAIR_INCLUDE_TXT "INCLUDE"
   2424 #define ADDRESS_PAIR_EXCLUDE_TXT "EXCLUDE"
   2425 
   2426 #define INCLUDE_ALL_EXCEPT_TXT "INCLUDE ALL EXCEPT"
   2427 #define EXCLUDE_ALL_EXCEPT_TXT "EXCLUDE ALL EXCEPT"
   2428 
   2429 #define PATTERN_MATCH_OR_TXT "OR("
   2430 #define PATTERN_MATCH_AND_TXT "AND("
   2431 
   2432 #define TRIGGER_PATTERN_TXT "PATTERN MATCH"
   2433 #define TRIGGER_BUFFER_TXT "BUFFER CONTENT"
   2434 
   2435 #define TRIGGER_NOTIFY_TXT "NOTIFY"
   2436 #define TRIGGER_STOP_TXT "STOP"
   2437 #define TRIGGER_PAUSE_TXT "PAUSE"
   2438 
   2439 #define TRIGGER_25_PERCENT_TXT "25 PERCENT"
   2440 #define TRIGGER_50_PERCENT_TXT "50 PERCENT"
   2441 #define TRIGGER_75_PERCENT_TXT "75 PERCENT"
   2442 #define TRIGGER_100_PERCENT_TXT "100 PERCENT"
   2443 
   2444 #define PATTERN_MATCH_NOT_TXT "NOT"
   2445 
   2446   LPCSTR __cdecl FindOneOf(LPCSTR p1,LPCSTR p2);
   2447   LONG __cdecl recursiveDeleteKey(HKEY hKeyParent,const char *lpszKeyChild);
   2448   WINBOOL __cdecl SubkeyExists(const char *pszPath,const char *szSubkey);
   2449   WINBOOL __cdecl setKeyAndValue(const char *szKey,const char *szSubkey,const char *szValue,const char *szName);
   2450 
   2451 #pragma pack(push,1)
   2452 
   2453   typedef struct _IP {
   2454     __C89_NAMELESS union {
   2455       BYTE Version;
   2456       BYTE HdrLen;
   2457     };
   2458     BYTE ServiceType;
   2459     WORD TotalLen;
   2460     WORD ID;
   2461     __C89_NAMELESS union {
   2462       WORD Flags;
   2463       WORD FragOff;
   2464     };
   2465     BYTE TimeToLive;
   2466     BYTE Protocol;
   2467     WORD HdrChksum;
   2468     DWORD SrcAddr;
   2469     DWORD DstAddr;
   2470     BYTE Options[0];
   2471   } IP;
   2472 
   2473   typedef IP *LPIP;
   2474   typedef IP UNALIGNED *ULPIP;
   2475 
   2476   typedef struct _PSUHDR {
   2477     DWORD ph_SrcIP;
   2478     DWORD ph_DstIP;
   2479     UCHAR ph_Zero;
   2480     UCHAR ph_Proto;
   2481     WORD ph_ProtLen;
   2482   } PSUHDR;
   2483 
   2484   typedef PSUHDR UNALIGNED *LPPSUHDR;
   2485 
   2486 #define IP_VERSION_MASK ((BYTE) 0xf0)
   2487 #define IP_VERSION_SHIFT (4)
   2488 #define IP_HDRLEN_MASK ((BYTE) 0x0f)
   2489 #define IP_HDRLEN_SHIFT (0)
   2490 #define IP_PRECEDENCE_MASK ((BYTE) 0xE0)
   2491 #define IP_PRECEDENCE_SHIFT (5)
   2492 #define IP_TOS_MASK ((BYTE) 0x1E)
   2493 #define IP_TOS_SHIFT (1)
   2494 #define IP_DELAY_MASK ((BYTE) 0x10)
   2495 #define IP_THROUGHPUT_MASK ((BYTE) 0x08)
   2496 #define IP_RELIABILITY_MASK ((BYTE) 0x04)
   2497 #define IP_FLAGS_MASK ((BYTE) 0xE0)
   2498 #define IP_FLAGS_SHIFT (13)
   2499 #define IP_DF_MASK ((BYTE) 0x40)
   2500 #define IP_MF_MASK ((BYTE) 0x20)
   2501 #define IP_MF_SHIFT (5)
   2502 #define IP_FRAGOFF_MASK ((WORD) 0x1FFF)
   2503 #define IP_FRAGOFF_SHIFT (3)
   2504 #define IP_TCC_MASK ((DWORD) 0xFFFFFF00)
   2505 #define IP_TIME_OPTS_MASK ((BYTE) 0x0F)
   2506 #define IP_MISS_STNS_MASK ((BYTE) 0xF0)
   2507 
   2508 #define IP_TIME_OPTS_SHIFT (0)
   2509 #define IP_MISS_STNS_SHIFT (4)
   2510 
   2511 #define IP_CHKSUM_OFF 10
   2512 
   2513 #ifndef __CRT__NO_INLINE
   2514   INLINE BYTE IP_Version(ULPIP pIP) { return (pIP->Version & IP_VERSION_MASK) >> IP_VERSION_SHIFT; }
   2515   INLINE DWORD IP_HdrLen(ULPIP pIP) { return ((pIP->HdrLen & IP_HDRLEN_MASK) >> IP_HDRLEN_SHIFT) << 2; }
   2516   INLINE WORD IP_FragOff(ULPIP pIP) { return (XCHG(pIP->FragOff) & IP_FRAGOFF_MASK) << IP_FRAGOFF_SHIFT; }
   2517   INLINE DWORD IP_TotalLen(ULPIP pIP) { return XCHG(pIP->TotalLen); }
   2518   INLINE DWORD IP_MoreFragments(ULPIP pIP) { return (pIP->Flags & IP_MF_MASK) >> IP_MF_SHIFT; }
   2519 #endif
   2520 
   2521 #define PORT_TCPMUX 1
   2522 #define PORT_RJE 5
   2523 #define PORT_ECHO 7
   2524 #define PORT_DISCARD 9
   2525 #define PORT_USERS 11
   2526 #define PORT_DAYTIME 13
   2527 #define PORT_NETSTAT 15
   2528 #define PORT_QUOTE 17
   2529 #define PORT_CHARGEN 19
   2530 #define PORT_FTPDATA 20
   2531 #define PORT_FTP 21
   2532 #define PORT_TELNET 23
   2533 #define PORT_SMTP 25
   2534 #define PORT_NSWFE 27
   2535 #define PORT_MSGICP 29
   2536 #define PORT_MSGAUTH 31
   2537 #define PORT_DSP 33
   2538 #define PORT_PRTSERVER 35
   2539 #define PORT_TIME 37
   2540 #define PORT_RLP 39
   2541 #define PORT_GRAPHICS 41
   2542 #define PORT_NAMESERVER 42
   2543 #define PORT_NICNAME 43
   2544 #define PORT_MPMFLAGS 44
   2545 #define PORT_MPM 45
   2546 #define PORT_MPMSND 46
   2547 #define PORT_NIFTP 47
   2548 #define PORT_LOGIN 49
   2549 #define PORT_LAMAINT 51
   2550 #define PORT_DOMAIN 53
   2551 #define PORT_ISIGL 55
   2552 #define PORT_ANYTERMACC 57
   2553 #define PORT_ANYFILESYS 59
   2554 #define PORT_NIMAIL 61
   2555 #define PORT_VIAFTP 63
   2556 #define PORT_TACACSDS 65
   2557 #define PORT_BOOTPS 67
   2558 #define PORT_BOOTPC 68
   2559 #define PORT_TFTP 69
   2560 #define PORT_NETRJS1 71
   2561 #define PORT_NETRJS2 72
   2562 #define PORT_NETRJS3 73
   2563 #define PORT_NETRJS4 74
   2564 #define PORT_ANYDIALOUT 75
   2565 #define PORT_ANYRJE 77
   2566 #define PORT_FINGER 79
   2567 #define PORT_HTTP 80
   2568 #define PORT_HOSTS2NS 81
   2569 #define PORT_MITMLDEV1 83
   2570 #define PORT_MITMLDEV2 85
   2571 #define PORT_ANYTERMLINK 87
   2572 #define PORT_SUMITTG 89
   2573 #define PORT_MITDOV 91
   2574 #define PORT_DCP 93
   2575 #define PORT_SUPDUP 95
   2576 #define PORT_SWIFTRVF 97
   2577 #define PORT_TACNEWS 98
   2578 #define PORT_METAGRAM 99
   2579 #define PORT_NEWACCT 100
   2580 #define PORT_HOSTNAME 101
   2581 #define PORT_ISOTSAP 102
   2582 #define PORT_X400 103
   2583 #define PORT_X400SND 104
   2584 #define PORT_CSNETNS 105
   2585 #define PORT_RTELNET 107
   2586 #define PORT_POP2 109
   2587 #define PORT_POP3 110
   2588 #define PORT_SUNRPC 111
   2589 #define PORT_AUTH 113
   2590 #define PORT_SFTP 115
   2591 #define PORT_UUCPPATH 117
   2592 #define PORT_NNTP 119
   2593 #define PORT_ERPC 121
   2594 #define PORT_NTP 123
   2595 #define PORT_LOCUSMAP 125
   2596 #define PORT_LOCUSCON 127
   2597 #define PORT_PWDGEN 129
   2598 #define PORT_CISCOFNA 130
   2599 #define PORT_CISCOTNA 131
   2600 #define PORT_CISCOSYS 132
   2601 #define PORT_STATSRV 133
   2602 #define PORT_INGRESNET 134
   2603 #define PORT_LOCSRV 135
   2604 #define PORT_PROFILE 136
   2605 #define PORT_NETBIOSNS 137
   2606 #define PORT_NETBIOSDGM 138
   2607 #define PORT_NETBIOSSSN 139
   2608 #define PORT_EMFISDATA 140
   2609 #define PORT_EMFISCNTL 141
   2610 #define PORT_BLIDM 142
   2611 #define PORT_IMAP2 143
   2612 #define PORT_NEWS 144
   2613 #define PORT_UAAC 145
   2614 #define PORT_ISOTP0 146
   2615 #define PORT_ISOIP 147
   2616 #define PORT_CRONUS 148
   2617 #define PORT_AED512 149
   2618 #define PORT_SQLNET 150
   2619 #define PORT_HEMS 151
   2620 #define PORT_BFTP 152
   2621 #define PORT_SGMP 153
   2622 #define PORT_NETSCPROD 154
   2623 #define PORT_NETSCDEV 155
   2624 #define PORT_SQLSRV 156
   2625 #define PORT_KNETCMP 157
   2626 #define PORT_PCMAILSRV 158
   2627 #define PORT_NSSROUTING 159
   2628 #define PORT_SGMPTRAPS 160
   2629 #define PORT_SNMP 161
   2630 #define PORT_SNMPTRAP 162
   2631 #define PORT_CMIPMANAGE 163
   2632 #define PORT_CMIPAGENT 164
   2633 #define PORT_XNSCOURIER 165
   2634 #define PORT_SNET 166
   2635 #define PORT_NAMP 167
   2636 #define PORT_RSVD 168
   2637 #define PORT_SEND 169
   2638 #define PORT_PRINTSRV 170
   2639 #define PORT_MULTIPLEX 171
   2640 #define PORT_CL1 172
   2641 #define PORT_XYPLEXMUX 173
   2642 #define PORT_MAILQ 174
   2643 #define PORT_VMNET 175
   2644 #define PORT_GENRADMUX 176
   2645 #define PORT_XDMCP 177
   2646 #define PORT_NEXTSTEP 178
   2647 #define PORT_BGP 179
   2648 #define PORT_RIS 180
   2649 #define PORT_UNIFY 181
   2650 #define PORT_UNISYSCAM 182
   2651 #define PORT_OCBINDER 183
   2652 #define PORT_OCSERVER 184
   2653 #define PORT_REMOTEKIS 185
   2654 #define PORT_KIS 186
   2655 #define PORT_ACI 187
   2656 #define PORT_MUMPS 188
   2657 #define PORT_QFT 189
   2658 #define PORT_GACP 190
   2659 #define PORT_PROSPERO 191
   2660 #define PORT_OSUNMS 192
   2661 #define PORT_SRMP 193
   2662 #define PORT_IRC 194
   2663 #define PORT_DN6NLMAUD 195
   2664 #define PORT_DN6SMMRED 196
   2665 #define PORT_DLS 197
   2666 #define PORT_DLSMON 198
   2667 #define PORT_ATRMTP 201
   2668 #define PORT_ATNBP 202
   2669 #define PORT_AT3 203
   2670 #define PORT_ATECHO 204
   2671 #define PORT_AT5 205
   2672 #define PORT_ATZIS 206
   2673 #define PORT_AT7 207
   2674 #define PORT_AT8 208
   2675 #define PORT_SURMEAS 243
   2676 #define PORT_LINK 245
   2677 #define PORT_DSP3270 246
   2678 #define PORT_LDAP1 389
   2679 #define PORT_ISAKMP 500
   2680 #define PORT_REXEC 512
   2681 #define PORT_RLOGIN 513
   2682 #define PORT_RSH 514
   2683 #define PORT_LPD 515
   2684 #define PORT_RIP 520
   2685 #define PORT_TEMPO 526
   2686 #define PORT_COURIER 530
   2687 #define PORT_NETNEWS 532
   2688 #define PORT_UUCPD 540
   2689 #define PORT_KLOGIN 543
   2690 #define PORT_KSHELL 544
   2691 #define PORT_DSF 555
   2692 #define PORT_REMOTEEFS 556
   2693 #define PORT_CHSHELL 562
   2694 #define PORT_METER 570
   2695 #define PORT_PCSERVER 600
   2696 #define PORT_NQS 607
   2697 #define PORT_HMMP_INDICATION 612
   2698 #define PORT_HMMP_OPERATION 613
   2699 #define PORT_MDQS 666
   2700 #define PORT_LPD721 721
   2701 #define PORT_LPD722 722
   2702 #define PORT_LPD723 723
   2703 #define PORT_LPD724 724
   2704 #define PORT_LPD725 725
   2705 #define PORT_LPD726 726
   2706 #define PORT_LPD727 727
   2707 #define PORT_LPD728 728
   2708 #define PORT_LPD729 729
   2709 #define PORT_LPD730 730
   2710 #define PORT_LPD731 731
   2711 #define PORT_RFILE 750
   2712 #define PORT_PUMP 751
   2713 #define PORT_QRH 752
   2714 #define PORT_RRH 753
   2715 #define PORT_TELL 754
   2716 #define PORT_NLOGIN 758
   2717 #define PORT_CON 759
   2718 #define PORT_NS 760
   2719 #define PORT_RXE 761
   2720 #define PORT_QUOTAD 762
   2721 #define PORT_CYCLESERV 763
   2722 #define PORT_OMSERV 764
   2723 #define PORT_WEBSTER 765
   2724 #define PORT_PHONEBOOK 767
   2725 #define PORT_VID 769
   2726 #define PORT_RTIP 771
   2727 #define PORT_CYCLESERV2 772
   2728 #define PORT_SUBMIT 773
   2729 #define PORT_RPASSWD 774
   2730 #define PORT_ENTOMB 775
   2731 #define PORT_WPAGES 776
   2732 #define PORT_WPGS 780
   2733 #define PORT_MDBSDAEMON 800
   2734 #define PORT_DEVICE 801
   2735 #define PORT_MAITRD 997
   2736 #define PORT_BUSBOY 998
   2737 #define PORT_GARCON 999
   2738 #define PORT_NFS 2049
   2739 #define PORT_LDAP2 3268
   2740 #define PORT_PPTP 5678
   2741 
   2742   typedef struct _RequestReplyFields {
   2743     WORD ID;
   2744     WORD SeqNo;
   2745   } ReqReply;
   2746 
   2747   typedef struct _ParameterProblemFields {
   2748     BYTE Pointer;
   2749     BYTE junk[3];
   2750   } ParmProb;
   2751 
   2752   typedef struct _TimestampFields {
   2753     DWORD tsOrig;
   2754     DWORD tsRecv;
   2755     DWORD tsXmit;
   2756   } TS;
   2757 
   2758   typedef struct _RouterAnnounceHeaderFields {
   2759     BYTE NumAddrs;
   2760     BYTE AddrEntrySize;
   2761     WORD Lifetime;
   2762   } RouterAH;
   2763 
   2764   typedef struct _RouterAnnounceEntry {
   2765     DWORD Address;
   2766     DWORD PreferenceLevel;
   2767   } RouterAE;
   2768 
   2769   typedef struct _ICMP {
   2770     BYTE Type;
   2771     BYTE Code;
   2772     WORD Checksum;
   2773     __C89_NAMELESS union {
   2774       DWORD Unused;
   2775       DWORD Address;
   2776       ReqReply RR;
   2777       ParmProb PP;
   2778       RouterAH RAH;
   2779     };
   2780     __C89_NAMELESS union {
   2781       TS Time;
   2782       IP IP;
   2783       RouterAE RAE[0];
   2784     };
   2785   } ICMP;
   2786 
   2787   typedef ICMP *LPICMP;
   2788   typedef ICMP UNALIGNED *ULPICMP;
   2789 #define ICMP_HEADER_LENGTH (8)
   2790 
   2791 #define ICMP_IP_DATA_LENGTH (8)
   2792 
   2793 #define ECHO_REPLY (0)
   2794 #define DESTINATION_UNREACHABLE (3)
   2795 #define SOURCE_QUENCH (4)
   2796 #define REDIRECT (5)
   2797 #define ECHO (8)
   2798 #define ROUTER_ADVERTISEMENT (9)
   2799 #define ROUTER_SOLICITATION (10)
   2800 #define TIME_EXCEEDED (11)
   2801 #define PARAMETER_PROBLEM (12)
   2802 #define TIMESTAMP (13)
   2803 #define TIMESTAMP_REPLY (14)
   2804 #define INFORMATION_REQUEST (15)
   2805 #define INFORMATION_REPLY (16)
   2806 #define ADDRESS_MASK_REQUEST (17)
   2807 #define ADDRESS_MASK_REPLY (18)
   2808 
   2809   typedef struct __MIDL___MIDL_itf_netmon_0000_0018 {
   2810     UCHAR ha_address[6];
   2811   } HOST_ADDRESS;
   2812 
   2813   typedef struct _IPXADDRESS {
   2814     ULONG ipx_NetNumber;
   2815     HOST_ADDRESS ipx_HostAddr;
   2816   } IPXADDRESS;
   2817 
   2818   typedef IPXADDRESS UNALIGNED *PIPXADDRESS;
   2819 
   2820   typedef struct _NET_ADDRESS {
   2821     IPXADDRESS na_IPXAddr;
   2822     USHORT na_socket;
   2823   } NET_ADDRESS;
   2824 
   2825   typedef NET_ADDRESS UNALIGNED *UPNET_ADDRESS;
   2826 
   2827   typedef struct __MIDL___MIDL_itf_netmon_0000_0019 {
   2828     USHORT ipx_checksum;
   2829     USHORT ipx_length;
   2830     UCHAR ipx_xport_control;
   2831     UCHAR ipx_packet_type;
   2832     NET_ADDRESS ipx_dest;
   2833     NET_ADDRESS ipx_source;
   2834   } IPX_HDR;
   2835 
   2836   typedef IPX_HDR UNALIGNED *ULPIPX_HDR;
   2837 
   2838   typedef struct _SPX_HDR {
   2839     IPX_HDR spx_idp_hdr;
   2840     UCHAR spx_conn_ctrl;
   2841     UCHAR spx_data_type;
   2842     USHORT spx_src_conn_id;
   2843     USHORT spx_dest_conn_id;
   2844     USHORT spx_sequence_num;
   2845     USHORT spx_ack_num;
   2846     USHORT spx_alloc_num;
   2847   } SPX_HDR;
   2848 
   2849   typedef SPX_HDR UNALIGNED *PSPX_HDR;
   2850 
   2851   typedef struct _TCP {
   2852     WORD SrcPort;
   2853     WORD DstPort;
   2854     DWORD SeqNum;
   2855     DWORD AckNum;
   2856     BYTE DataOff;
   2857     BYTE Flags;
   2858     WORD Window;
   2859     WORD Chksum;
   2860     WORD UrgPtr;
   2861   } TCP;
   2862 
   2863   typedef TCP *LPTCP;
   2864 
   2865   typedef TCP UNALIGNED *ULPTCP;
   2866 
   2867 #ifndef __CRT__NO_INLINE
   2868   INLINE DWORD TCP_HdrLen(ULPTCP pTCP) { return (pTCP->DataOff & 0xf0) >> 2; }
   2869   INLINE DWORD TCP_SrcPort(ULPTCP pTCP) { return XCHG(pTCP->SrcPort); }
   2870   INLINE DWORD TCP_DstPort(ULPTCP pTCP) { return XCHG(pTCP->DstPort); }
   2871 #endif
   2872 
   2873 #define TCP_OPTION_ENDOFOPTIONS (0)
   2874 #define TCP_OPTION_NOP (1)
   2875 #define TCP_OPTION_MAXSEGSIZE (2)
   2876 #define TCP_OPTION_WSCALE (3)
   2877 #define TCP_OPTION_SACK_PERMITTED (4)
   2878 #define TCP_OPTION_SACK (5)
   2879 #define TCP_OPTION_TIMESTAMPS (8)
   2880 
   2881 #define TCP_FLAG_URGENT (0x20)
   2882 #define TCP_FLAG_ACK (0x10)
   2883 #define TCP_FLAG_PUSH (0x8)
   2884 #define TCP_FLAG_RESET (0x4)
   2885 #define TCP_FLAG_SYN (0x2)
   2886 #define TCP_FLAG_FIN (0x1)
   2887 #define TCP_RESERVED_MASK (0xfc0)
   2888 
   2889 #pragma pack(pop)
   2890 
   2891 #define DEFAULT_DELAYED_BUFFER_SIZE (1)
   2892 #define USE_DEFAULT_DRIVE_LETTER (0)
   2893 #define RTC_FRAME_SIZE_FULL (0)
   2894 
   2895   extern RPC_IF_HANDLE __MIDL_itf_netmon_0000_v0_0_c_ifspec;
   2896   extern RPC_IF_HANDLE __MIDL_itf_netmon_0000_v0_0_s_ifspec;
   2897 
   2898 #ifndef __IDelaydC_INTERFACE_DEFINED__
   2899 #define __IDelaydC_INTERFACE_DEFINED__
   2900   EXTERN_C const IID IID_IDelaydC;
   2901 #if defined(__cplusplus) && !defined(CINTERFACE)
   2902   struct IDelaydC : public IUnknown {
   2903   public:
   2904     virtual HRESULT WINAPI Connect(HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob) = 0;
   2905     virtual HRESULT WINAPI Disconnect(void) = 0;
   2906     virtual HRESULT WINAPI QueryStatus(NETWORKSTATUS *pNetworkStatus) = 0;
   2907     virtual HRESULT WINAPI Configure(HBLOB hConfigurationBlob,HBLOB hErrorBlob) = 0;
   2908     virtual HRESULT WINAPI Start(char *pFileName) = 0;
   2909     virtual HRESULT WINAPI Pause(void) = 0;
   2910     virtual HRESULT WINAPI Resume(void) = 0;
   2911     virtual HRESULT WINAPI Stop(LPSTATISTICS lpStats) = 0;
   2912     virtual HRESULT WINAPI GetControlState(WINBOOL *IsRunnning,WINBOOL *IsPaused) = 0;
   2913     virtual HRESULT WINAPI GetTotalStatistics(LPSTATISTICS lpStats,WINBOOL fClearAfterReading) = 0;
   2914     virtual HRESULT WINAPI GetConversationStatistics(DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading) = 0;
   2915     virtual HRESULT WINAPI InsertSpecialFrame(DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength) = 0;
   2916     virtual HRESULT WINAPI QueryStations(QUERYTABLE *lpQueryTable) = 0;
   2917   };
   2918 #else
   2919   typedef struct IDelaydCVtbl {
   2920     BEGIN_INTERFACE
   2921       HRESULT (WINAPI *QueryInterface)(IDelaydC *This,REFIID riid,void **ppvObject);
   2922       ULONG (WINAPI *AddRef)(IDelaydC *This);
   2923       ULONG (WINAPI *Release)(IDelaydC *This);
   2924       HRESULT (WINAPI *Connect)(IDelaydC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob);
   2925       HRESULT (WINAPI *Disconnect)(IDelaydC *This);
   2926       HRESULT (WINAPI *QueryStatus)(IDelaydC *This,NETWORKSTATUS *pNetworkStatus);
   2927       HRESULT (WINAPI *Configure)(IDelaydC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob);
   2928       HRESULT (WINAPI *Start)(IDelaydC *This,char *pFileName);
   2929       HRESULT (WINAPI *Pause)(IDelaydC *This);
   2930       HRESULT (WINAPI *Resume)(IDelaydC *This);
   2931       HRESULT (WINAPI *Stop)(IDelaydC *This,LPSTATISTICS lpStats);
   2932       HRESULT (WINAPI *GetControlState)(IDelaydC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused);
   2933       HRESULT (WINAPI *GetTotalStatistics)(IDelaydC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading);
   2934       HRESULT (WINAPI *GetConversationStatistics)(IDelaydC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading);
   2935       HRESULT (WINAPI *InsertSpecialFrame)(IDelaydC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength);
   2936       HRESULT (WINAPI *QueryStations)(IDelaydC *This,QUERYTABLE *lpQueryTable);
   2937     END_INTERFACE
   2938   } IDelaydCVtbl;
   2939   struct IDelaydC {
   2940     CONST_VTBL struct IDelaydCVtbl *lpVtbl;
   2941   };
   2942 #ifdef COBJMACROS
   2943 #define IDelaydC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2944 #define IDelaydC_AddRef(This) (This)->lpVtbl->AddRef(This)
   2945 #define IDelaydC_Release(This) (This)->lpVtbl->Release(This)
   2946 #define IDelaydC_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob) (This)->lpVtbl->Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
   2947 #define IDelaydC_Disconnect(This) (This)->lpVtbl->Disconnect(This)
   2948 #define IDelaydC_QueryStatus(This,pNetworkStatus) (This)->lpVtbl->QueryStatus(This,pNetworkStatus)
   2949 #define IDelaydC_Configure(This,hConfigurationBlob,hErrorBlob) (This)->lpVtbl->Configure(This,hConfigurationBlob,hErrorBlob)
   2950 #define IDelaydC_Start(This,pFileName) (This)->lpVtbl->Start(This,pFileName)
   2951 #define IDelaydC_Pause(This) (This)->lpVtbl->Pause(This)
   2952 #define IDelaydC_Resume(This) (This)->lpVtbl->Resume(This)
   2953 #define IDelaydC_Stop(This,lpStats) (This)->lpVtbl->Stop(This,lpStats)
   2954 #define IDelaydC_GetControlState(This,IsRunnning,IsPaused) (This)->lpVtbl->GetControlState(This,IsRunnning,IsPaused)
   2955 #define IDelaydC_GetTotalStatistics(This,lpStats,fClearAfterReading) (This)->lpVtbl->GetTotalStatistics(This,lpStats,fClearAfterReading)
   2956 #define IDelaydC_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) (This)->lpVtbl->GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
   2957 #define IDelaydC_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) (This)->lpVtbl->InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
   2958 #define IDelaydC_QueryStations(This,lpQueryTable) (This)->lpVtbl->QueryStations(This,lpQueryTable)
   2959 #endif
   2960 #endif
   2961   HRESULT WINAPI IDelaydC_Connect_Proxy(IDelaydC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob);
   2962   void __RPC_STUB IDelaydC_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2963   HRESULT WINAPI IDelaydC_Disconnect_Proxy(IDelaydC *This);
   2964   void __RPC_STUB IDelaydC_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2965   HRESULT WINAPI IDelaydC_QueryStatus_Proxy(IDelaydC *This,NETWORKSTATUS *pNetworkStatus);
   2966   void __RPC_STUB IDelaydC_QueryStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2967   HRESULT WINAPI IDelaydC_Configure_Proxy(IDelaydC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob);
   2968   void __RPC_STUB IDelaydC_Configure_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2969   HRESULT WINAPI IDelaydC_Start_Proxy(IDelaydC *This,char *pFileName);
   2970   void __RPC_STUB IDelaydC_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2971   HRESULT WINAPI IDelaydC_Pause_Proxy(IDelaydC *This);
   2972   void __RPC_STUB IDelaydC_Pause_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2973   HRESULT WINAPI IDelaydC_Resume_Proxy(IDelaydC *This);
   2974   void __RPC_STUB IDelaydC_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2975   HRESULT WINAPI IDelaydC_Stop_Proxy(IDelaydC *This,LPSTATISTICS lpStats);
   2976   void __RPC_STUB IDelaydC_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2977   HRESULT WINAPI IDelaydC_GetControlState_Proxy(IDelaydC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused);
   2978   void __RPC_STUB IDelaydC_GetControlState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2979   HRESULT WINAPI IDelaydC_GetTotalStatistics_Proxy(IDelaydC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading);
   2980   void __RPC_STUB IDelaydC_GetTotalStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2981   HRESULT WINAPI IDelaydC_GetConversationStatistics_Proxy(IDelaydC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading);
   2982   void __RPC_STUB IDelaydC_GetConversationStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2983   HRESULT WINAPI IDelaydC_InsertSpecialFrame_Proxy(IDelaydC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength);
   2984   void __RPC_STUB IDelaydC_InsertSpecialFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2985   HRESULT WINAPI IDelaydC_QueryStations_Proxy(IDelaydC *This,QUERYTABLE *lpQueryTable);
   2986   void __RPC_STUB IDelaydC_QueryStations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   2987 #endif
   2988 
   2989 #define DEFAULT_RTC_BUFFER_SIZE (0x100000)
   2990 
   2991   extern RPC_IF_HANDLE __MIDL_itf_netmon_0010_v0_0_c_ifspec;
   2992   extern RPC_IF_HANDLE __MIDL_itf_netmon_0010_v0_0_s_ifspec;
   2993 
   2994 #ifndef __IRTC_INTERFACE_DEFINED__
   2995 #define __IRTC_INTERFACE_DEFINED__
   2996   EXTERN_C const IID IID_IRTC;
   2997 #if defined(__cplusplus) && !defined(CINTERFACE)
   2998   struct IRTC : public IUnknown {
   2999   public:
   3000     virtual HRESULT WINAPI Connect(HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID FramesCallbackProc,LPVOID UserContext,HBLOB hErrorBlob) = 0;
   3001     virtual HRESULT WINAPI Disconnect(void) = 0;
   3002     virtual HRESULT WINAPI QueryStatus(NETWORKSTATUS *pNetworkStatus) = 0;
   3003     virtual HRESULT WINAPI Configure(HBLOB hConfigurationBlob,HBLOB hErrorBlob) = 0;
   3004     virtual HRESULT WINAPI Start(void) = 0;
   3005     virtual HRESULT WINAPI Pause(void) = 0;
   3006     virtual HRESULT WINAPI Resume(void) = 0;
   3007     virtual HRESULT WINAPI Stop(void) = 0;
   3008     virtual HRESULT WINAPI GetControlState(WINBOOL *IsRunnning,WINBOOL *IsPaused) = 0;
   3009     virtual HRESULT WINAPI GetTotalStatistics(LPSTATISTICS lpStats,WINBOOL fClearAfterReading) = 0;
   3010     virtual HRESULT WINAPI GetConversationStatistics(DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading) = 0;
   3011     virtual HRESULT WINAPI InsertSpecialFrame(DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength) = 0;
   3012     virtual HRESULT WINAPI QueryStations(QUERYTABLE *lpQueryTable) = 0;
   3013   };
   3014 #else
   3015   typedef struct IRTCVtbl {
   3016     BEGIN_INTERFACE
   3017       HRESULT (WINAPI *QueryInterface)(IRTC *This,REFIID riid,void **ppvObject);
   3018       ULONG (WINAPI *AddRef)(IRTC *This);
   3019       ULONG (WINAPI *Release)(IRTC *This);
   3020       HRESULT (WINAPI *Connect)(IRTC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID FramesCallbackProc,LPVOID UserContext,HBLOB hErrorBlob);
   3021       HRESULT (WINAPI *Disconnect)(IRTC *This);
   3022       HRESULT (WINAPI *QueryStatus)(IRTC *This,NETWORKSTATUS *pNetworkStatus);
   3023       HRESULT (WINAPI *Configure)(IRTC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob);
   3024       HRESULT (WINAPI *Start)(IRTC *This);
   3025       HRESULT (WINAPI *Pause)(IRTC *This);
   3026       HRESULT (WINAPI *Resume)(IRTC *This);
   3027       HRESULT (WINAPI *Stop)(IRTC *This);
   3028       HRESULT (WINAPI *GetControlState)(IRTC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused);
   3029       HRESULT (WINAPI *GetTotalStatistics)(IRTC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading);
   3030       HRESULT (WINAPI *GetConversationStatistics)(IRTC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading);
   3031       HRESULT (WINAPI *InsertSpecialFrame)(IRTC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength);
   3032       HRESULT (WINAPI *QueryStations)(IRTC *This,QUERYTABLE *lpQueryTable);
   3033     END_INTERFACE
   3034   } IRTCVtbl;
   3035   struct IRTC {
   3036     CONST_VTBL struct IRTCVtbl *lpVtbl;
   3037   };
   3038 #ifdef COBJMACROS
   3039 #define IRTC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3040 #define IRTC_AddRef(This) (This)->lpVtbl->AddRef(This)
   3041 #define IRTC_Release(This) (This)->lpVtbl->Release(This)
   3042 #define IRTC_Connect(This,hInputBlob,StatusCallbackProc,FramesCallbackProc,UserContext,hErrorBlob) (This)->lpVtbl->Connect(This,hInputBlob,StatusCallbackProc,FramesCallbackProc,UserContext,hErrorBlob)
   3043 #define IRTC_Disconnect(This) (This)->lpVtbl->Disconnect(This)
   3044 #define IRTC_QueryStatus(This,pNetworkStatus) (This)->lpVtbl->QueryStatus(This,pNetworkStatus)
   3045 #define IRTC_Configure(This,hConfigurationBlob,hErrorBlob) (This)->lpVtbl->Configure(This,hConfigurationBlob,hErrorBlob)
   3046 #define IRTC_Start(This) (This)->lpVtbl->Start(This)
   3047 #define IRTC_Pause(This) (This)->lpVtbl->Pause(This)
   3048 #define IRTC_Resume(This) (This)->lpVtbl->Resume(This)
   3049 #define IRTC_Stop(This) (This)->lpVtbl->Stop(This)
   3050 #define IRTC_GetControlState(This,IsRunnning,IsPaused) (This)->lpVtbl->GetControlState(This,IsRunnning,IsPaused)
   3051 #define IRTC_GetTotalStatistics(This,lpStats,fClearAfterReading) (This)->lpVtbl->GetTotalStatistics(This,lpStats,fClearAfterReading)
   3052 #define IRTC_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) (This)->lpVtbl->GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
   3053 #define IRTC_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) (This)->lpVtbl->InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
   3054 #define IRTC_QueryStations(This,lpQueryTable) (This)->lpVtbl->QueryStations(This,lpQueryTable)
   3055 #endif
   3056 #endif
   3057   HRESULT WINAPI IRTC_Connect_Proxy(IRTC *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID FramesCallbackProc,LPVOID UserContext,HBLOB hErrorBlob);
   3058   void __RPC_STUB IRTC_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3059   HRESULT WINAPI IRTC_Disconnect_Proxy(IRTC *This);
   3060   void __RPC_STUB IRTC_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3061   HRESULT WINAPI IRTC_QueryStatus_Proxy(IRTC *This,NETWORKSTATUS *pNetworkStatus);
   3062   void __RPC_STUB IRTC_QueryStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3063   HRESULT WINAPI IRTC_Configure_Proxy(IRTC *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob);
   3064   void __RPC_STUB IRTC_Configure_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3065   HRESULT WINAPI IRTC_Start_Proxy(IRTC *This);
   3066   void __RPC_STUB IRTC_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3067   HRESULT WINAPI IRTC_Pause_Proxy(IRTC *This);
   3068   void __RPC_STUB IRTC_Pause_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3069   HRESULT WINAPI IRTC_Resume_Proxy(IRTC *This);
   3070   void __RPC_STUB IRTC_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3071   HRESULT WINAPI IRTC_Stop_Proxy(IRTC *This);
   3072   void __RPC_STUB IRTC_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3073   HRESULT WINAPI IRTC_GetControlState_Proxy(IRTC *This,WINBOOL *IsRunnning,WINBOOL *IsPaused);
   3074   void __RPC_STUB IRTC_GetControlState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3075   HRESULT WINAPI IRTC_GetTotalStatistics_Proxy(IRTC *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading);
   3076   void __RPC_STUB IRTC_GetTotalStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3077   HRESULT WINAPI IRTC_GetConversationStatistics_Proxy(IRTC *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading);
   3078   void __RPC_STUB IRTC_GetConversationStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3079   HRESULT WINAPI IRTC_InsertSpecialFrame_Proxy(IRTC *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength);
   3080   void __RPC_STUB IRTC_InsertSpecialFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3081   HRESULT WINAPI IRTC_QueryStations_Proxy(IRTC *This,QUERYTABLE *lpQueryTable);
   3082   void __RPC_STUB IRTC_QueryStations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3083 #endif
   3084 
   3085   extern RPC_IF_HANDLE __MIDL_itf_netmon_0012_v0_0_c_ifspec;
   3086   extern RPC_IF_HANDLE __MIDL_itf_netmon_0012_v0_0_s_ifspec;
   3087 
   3088 #ifndef __IStats_INTERFACE_DEFINED__
   3089 #define __IStats_INTERFACE_DEFINED__
   3090   EXTERN_C const IID IID_IStats;
   3091 #if defined(__cplusplus) && !defined(CINTERFACE)
   3092   struct IStats : public IUnknown {
   3093   public:
   3094     virtual HRESULT WINAPI Connect(HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob) = 0;
   3095     virtual HRESULT WINAPI Disconnect(void) = 0;
   3096     virtual HRESULT WINAPI QueryStatus(NETWORKSTATUS *pNetworkStatus) = 0;
   3097     virtual HRESULT WINAPI Configure(HBLOB hConfigurationBlob,HBLOB hErrorBlob) = 0;
   3098     virtual HRESULT WINAPI Start(void) = 0;
   3099     virtual HRESULT WINAPI Pause(void) = 0;
   3100     virtual HRESULT WINAPI Resume(void) = 0;
   3101     virtual HRESULT WINAPI Stop(void) = 0;
   3102     virtual HRESULT WINAPI GetControlState(WINBOOL *IsRunnning,WINBOOL *IsPaused) = 0;
   3103     virtual HRESULT WINAPI GetTotalStatistics(LPSTATISTICS lpStats,WINBOOL fClearAfterReading) = 0;
   3104     virtual HRESULT WINAPI GetConversationStatistics(DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading) = 0;
   3105     virtual HRESULT WINAPI InsertSpecialFrame(DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength) = 0;
   3106     virtual HRESULT WINAPI QueryStations(QUERYTABLE *lpQueryTable) = 0;
   3107   };
   3108 #else
   3109   typedef struct IStatsVtbl {
   3110     BEGIN_INTERFACE
   3111       HRESULT (WINAPI *QueryInterface)(IStats *This,REFIID riid,void **ppvObject);
   3112       ULONG (WINAPI *AddRef)(IStats *This);
   3113       ULONG (WINAPI *Release)(IStats *This);
   3114       HRESULT (WINAPI *Connect)(IStats *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob);
   3115       HRESULT (WINAPI *Disconnect)(IStats *This);
   3116       HRESULT (WINAPI *QueryStatus)(IStats *This,NETWORKSTATUS *pNetworkStatus);
   3117       HRESULT (WINAPI *Configure)(IStats *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob);
   3118       HRESULT (WINAPI *Start)(IStats *This);
   3119       HRESULT (WINAPI *Pause)(IStats *This);
   3120       HRESULT (WINAPI *Resume)(IStats *This);
   3121       HRESULT (WINAPI *Stop)(IStats *This);
   3122       HRESULT (WINAPI *GetControlState)(IStats *This,WINBOOL *IsRunnning,WINBOOL *IsPaused);
   3123       HRESULT (WINAPI *GetTotalStatistics)(IStats *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading);
   3124       HRESULT (WINAPI *GetConversationStatistics)(IStats *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading);
   3125       HRESULT (WINAPI *InsertSpecialFrame)(IStats *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength);
   3126       HRESULT (WINAPI *QueryStations)(IStats *This,QUERYTABLE *lpQueryTable);
   3127     END_INTERFACE
   3128   } IStatsVtbl;
   3129   struct IStats {
   3130     CONST_VTBL struct IStatsVtbl *lpVtbl;
   3131   };
   3132 #ifdef COBJMACROS
   3133 #define IStats_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3134 #define IStats_AddRef(This) (This)->lpVtbl->AddRef(This)
   3135 #define IStats_Release(This) (This)->lpVtbl->Release(This)
   3136 #define IStats_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob) (This)->lpVtbl->Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
   3137 #define IStats_Disconnect(This) (This)->lpVtbl->Disconnect(This)
   3138 #define IStats_QueryStatus(This,pNetworkStatus) (This)->lpVtbl->QueryStatus(This,pNetworkStatus)
   3139 #define IStats_Configure(This,hConfigurationBlob,hErrorBlob) (This)->lpVtbl->Configure(This,hConfigurationBlob,hErrorBlob)
   3140 #define IStats_Start(This) (This)->lpVtbl->Start(This)
   3141 #define IStats_Pause(This) (This)->lpVtbl->Pause(This)
   3142 #define IStats_Resume(This) (This)->lpVtbl->Resume(This)
   3143 #define IStats_Stop(This) (This)->lpVtbl->Stop(This)
   3144 #define IStats_GetControlState(This,IsRunnning,IsPaused) (This)->lpVtbl->GetControlState(This,IsRunnning,IsPaused)
   3145 #define IStats_GetTotalStatistics(This,lpStats,fClearAfterReading) (This)->lpVtbl->GetTotalStatistics(This,lpStats,fClearAfterReading)
   3146 #define IStats_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading) (This)->lpVtbl->GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
   3147 #define IStats_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength) (This)->lpVtbl->InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
   3148 #define IStats_QueryStations(This,lpQueryTable) (This)->lpVtbl->QueryStations(This,lpQueryTable)
   3149 #endif
   3150 #endif
   3151   HRESULT WINAPI IStats_Connect_Proxy(IStats *This,HBLOB hInputBlob,LPVOID StatusCallbackProc,LPVOID UserContext,HBLOB hErrorBlob);
   3152   void __RPC_STUB IStats_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3153   HRESULT WINAPI IStats_Disconnect_Proxy(IStats *This);
   3154   void __RPC_STUB IStats_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3155   HRESULT WINAPI IStats_QueryStatus_Proxy(IStats *This,NETWORKSTATUS *pNetworkStatus);
   3156   void __RPC_STUB IStats_QueryStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3157   HRESULT WINAPI IStats_Configure_Proxy(IStats *This,HBLOB hConfigurationBlob,HBLOB hErrorBlob);
   3158   void __RPC_STUB IStats_Configure_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3159   HRESULT WINAPI IStats_Start_Proxy(IStats *This);
   3160   void __RPC_STUB IStats_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3161   HRESULT WINAPI IStats_Pause_Proxy(IStats *This);
   3162   void __RPC_STUB IStats_Pause_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3163   HRESULT WINAPI IStats_Resume_Proxy(IStats *This);
   3164   void __RPC_STUB IStats_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3165   HRESULT WINAPI IStats_Stop_Proxy(IStats *This);
   3166   void __RPC_STUB IStats_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3167   HRESULT WINAPI IStats_GetControlState_Proxy(IStats *This,WINBOOL *IsRunnning,WINBOOL *IsPaused);
   3168   void __RPC_STUB IStats_GetControlState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3169   HRESULT WINAPI IStats_GetTotalStatistics_Proxy(IStats *This,LPSTATISTICS lpStats,WINBOOL fClearAfterReading);
   3170   void __RPC_STUB IStats_GetTotalStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3171   HRESULT WINAPI IStats_GetConversationStatistics_Proxy(IStats *This,DWORD *nSessions,LPSESSIONSTATS lpSessionStats,DWORD *nStations,LPSTATIONSTATS lpStationStats,WINBOOL fClearAfterReading);
   3172   void __RPC_STUB IStats_GetConversationStatistics_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3173   HRESULT WINAPI IStats_InsertSpecialFrame_Proxy(IStats *This,DWORD FrameType,DWORD Flags,BYTE *pUserData,DWORD UserDataLength);
   3174   void __RPC_STUB IStats_InsertSpecialFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3175   HRESULT WINAPI IStats_QueryStations_Proxy(IStats *This,QUERYTABLE *lpQueryTable);
   3176   void __RPC_STUB IStats_QueryStations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
   3177 #endif
   3178 
   3179 #pragma pack()
   3180 
   3181   extern RPC_IF_HANDLE __MIDL_itf_netmon_0014_v0_0_c_ifspec;
   3182   extern RPC_IF_HANDLE __MIDL_itf_netmon_0014_v0_0_s_ifspec;
   3183 
   3184 #ifdef __cplusplus
   3185 }
   3186 #endif
   3187 #endif
   3188