netmon.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:220k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #define ETHERNET_FRAME_LENGTH ( 0x5ea )
  2. #define ETHERNET_FRAME_TYPE ( 0x600 )
  3. //=============================================================================
  4. //  Header for NM_ATM Packets.
  5. //=============================================================================
  6. typedef struct _NM_ATM
  7.     {
  8.     UCHAR DstAddr[ 6 ];
  9.     UCHAR SrcAddr[ 6 ];
  10.     ULONG Vpi;
  11.     ULONG Vci;
  12.     }  NM_ATM;
  13. typedef NM_ATM *PNM_ATM;
  14. typedef NM_ATM *UPNM_ATM;
  15. #define NM_ATM_HEADER_LENGTH sizeof(NM_ATM)
  16. typedef struct _NM_1394
  17.     {
  18.     UCHAR DstAddr[ 6 ];
  19.     UCHAR SrcAddr[ 6 ];
  20.     ULONGLONG VcId;
  21.     }  NM_1394;
  22. typedef NM_1394 *PNM_1394;
  23. typedef NM_1394 *UPNM_1394;
  24. #define NM_1394_HEADER_LENGTH sizeof(NM_1394)
  25. //=============================================================================
  26. //  802.5 (TOKENRING) MAC structure.
  27. //=============================================================================
  28. // This structure is used to decode network data and so needs to be packed
  29. #pragma pack(push, 1)
  30. typedef struct _TOKENRING
  31. {
  32.     BYTE    AccessCtrl;                 //... access control field.
  33.     BYTE    FrameCtrl;                  //... frame control field.
  34.     BYTE    DstAddr[MAX_ADDR_LENGTH];   //... destination address.
  35.     BYTE    SrcAddr[MAX_ADDR_LENGTH];   //... source address.
  36.     union
  37.     {
  38.         BYTE    Info[0];                //... information field.
  39.         WORD    RoutingInfo[0];         //... routing information field.
  40.     };
  41. } TOKENRING;
  42. typedef TOKENRING *LPTOKENRING;
  43. typedef TOKENRING UNALIGNED *ULPTOKENRING;
  44. #define TOKENRING_SIZE  sizeof(TOKENRING)
  45. #define TOKENRING_HEADER_LENGTH ( 14 )
  46. #define TOKENRING_SA_ROUTING_INFO ( 0x80 )
  47. #define TOKENRING_SA_LOCAL ( 0x40 )
  48. #define TOKENRING_DA_LOCAL ( 0x40 )
  49. #define TOKENRING_DA_GROUP ( 0x80 )
  50. #define TOKENRING_RC_LENGTHMASK ( 0x1f )
  51. #define TOKENRING_BC_MASK ( 0xe0 )
  52. #define TOKENRING_TYPE_MAC ( 0 )
  53. #define TOKENRING_TYPE_LLC ( 0x40 )
  54. #pragma pack(pop)
  55. //=============================================================================
  56. //  FDDI MAC structure.
  57. //=============================================================================
  58. // This structure is used to decode network data and so needs to be packed
  59. #pragma pack(push, 1)
  60. typedef struct _FDDI
  61. {
  62.     BYTE    FrameCtrl;                  //... frame control field.
  63.     BYTE    DstAddr[MAX_ADDR_LENGTH];   //... destination address.
  64.     BYTE    SrcAddr[MAX_ADDR_LENGTH];   //... source address.
  65.     BYTE    Info[0];                    //... information field.
  66. } FDDI;
  67. #define FDDI_SIZE       sizeof(FDDI)
  68. typedef FDDI *LPFDDI;
  69. typedef FDDI UNALIGNED *ULPFDDI;
  70. #define FDDI_HEADER_LENGTH ( 13 )
  71. #define FDDI_TYPE_MAC ( 0 )
  72. #define FDDI_TYPE_LLC ( 0x10 )
  73. #define FDDI_TYPE_LONG_ADDRESS ( 0x40 )
  74. #pragma pack(pop)
  75. //=============================================================================
  76. //  LLC (802.2)
  77. //=============================================================================
  78. // This structure is used to decode network data and so needs to be packed
  79. #pragma pack(push, 1)
  80. typedef struct _LLC
  81.     {
  82.     BYTE dsap;
  83.     BYTE ssap;
  84.     struct 
  85.         {
  86.         union 
  87.             {
  88.             BYTE Command;
  89.             BYTE NextSend;
  90.             }  ;
  91.         union 
  92.             {
  93.             BYTE NextRecv;
  94.             BYTE Data[ 1 ];
  95.             }  ;
  96.         }  ControlField;
  97.     }  LLC;
  98. typedef LLC *LPLLC;
  99. typedef LLC UNALIGNED *ULPLLC;
  100. #define LLC_SIZE ( sizeof( LLC  ) )
  101. #pragma pack(pop)
  102. //=============================================================================
  103. //  Helper macros.
  104. //=============================================================================
  105. #define IsRoutingInfoPresent(f) ((((ULPTOKENRING) (f))->SrcAddr[0] & TOKENRING_SA_ROUTING_INFO) ? TRUE : FALSE)
  106. #define GetRoutingInfoLength(f) (IsRoutingInfoPresent(f) 
  107.                                  ? (((ULPTOKENRING) (f))->RoutingInfo[0] & TOKENRING_RC_LENGTHMASK) : 0)
  108. //=============================================================================
  109. //=============================================================================
  110. //  (Parser.h)
  111. //=============================================================================
  112. //=============================================================================
  113. //=============================================================================
  114. //  Format Procedure Type.
  115. //
  116. //  NOTE: All format functions *must* be declared as WINAPIV not WINAPI!
  117. //=============================================================================
  118. typedef VOID (WINAPIV *FORMAT)(LPPROPERTYINST, ...);
  119. //  The protocol recognized the frame and moved the pointer to end of its
  120. //  protocol header. Network Monitor uses the protocols follow set to continue
  121. //  parsing.
  122. #define PROTOCOL_STATUS_RECOGNIZED ( 0 )
  123. //  The protocol did not recognized the frame and did not move the pointer
  124. //  (i.e. the start data pointer which was passed in). Network Monitor uses the
  125. //  protocols follow set to continue parsing.
  126. #define PROTOCOL_STATUS_NOT_RECOGNIZED ( 1 )
  127. //  The protocol recognized the frame and claimed it all for itself,
  128. //  and parsing terminates.
  129. #define PROTOCOL_STATUS_CLAIMED ( 2 )
  130. //  The protocol recognized the frame and moved the pointer to end of its
  131. //  protocol header. The current protocol requests that Network Monitor 
  132. //  continue parsing at a known next protocol by returning the next protocols
  133. //  handle back to Network Monitor. In this case, the follow of the current 
  134. //  protocol, if any, is not used.
  135. #define PROTOCOL_STATUS_NEXT_PROTOCOL ( 3 )
  136. //=============================================================================
  137. //  Macros.
  138. //=============================================================================
  139. extern  BYTE HexTable[];
  140. #define XCHG(x)         MAKEWORD( HIBYTE(x), LOBYTE(x) )
  141. #define DXCHG(x)        MAKELONG( XCHG(HIWORD(x)), XCHG(LOWORD(x)) )
  142. #define LONIBBLE(b) ((BYTE) ((b) & 0x0F))
  143. #define HINIBBLE(b)     ((BYTE) ((b) >> 4))
  144. #define HEX(b)          (HexTable[LONIBBLE(b)])
  145. #define SWAPBYTES(w)    ((w) = XCHG(w))
  146. #define SWAPWORDS(d)    ((d) = DXCHG(d))
  147. //=============================================================================
  148. //  All the MAC frame types combined.
  149. //=============================================================================
  150. typedef union _MACFRAME
  151. {
  152.     LPBYTE      MacHeader;              //... generic pointer.
  153.     LPETHERNET  Ethernet;               //... ethernet pointer.
  154.     LPTOKENRING Tokenring;              //... tokenring pointer.
  155.     LPFDDI      Fddi;                   //... FDDI pointer.
  156. } MACFRAME;
  157. typedef MACFRAME *LPMACFRAME;
  158. #define HOT_SIGNATURE       MAKE_IDENTIFIER('H', 'O', 'T', '$')
  159. #define HOE_SIGNATURE       MAKE_IDENTIFIER('H', 'O', 'E', '$')
  160. typedef struct _HANDOFFENTRY
  161.     {
  162.     DWORD hoe_sig;
  163.     DWORD hoe_ProtIdentNumber;
  164.     HPROTOCOL hoe_ProtocolHandle;
  165.     DWORD hoe_ProtocolData;
  166.     }  HANDOFFENTRY;
  167. typedef HANDOFFENTRY *LPHANDOFFENTRY;
  168. typedef struct _HANDOFFTABLE
  169.     {
  170.     DWORD hot_sig;
  171.     DWORD hot_NumEntries;
  172.     LPHANDOFFENTRY hot_Entries;
  173.     }  HANDOFFTABLE;
  174. typedef struct _HANDOFFTABLE *LPHANDOFFTABLE;
  175. //=============================================================================
  176. //  Parser helper macros.
  177. //=============================================================================
  178. INLINE LPVOID GetPropertyInstanceData(LPPROPERTYINST PropertyInst)
  179. {
  180.     if ( PropertyInst->DataLength != (WORD) -1 )
  181.     {
  182.         return PropertyInst->lpData;
  183.     }
  184.     return (LPVOID) PropertyInst->lpPropertyInstEx->Byte;
  185. }
  186. #define GetPropertyInstanceDataValue(p, type)  ((type *) GetPropertyInstanceData(p))[0]
  187. INLINE DWORD GetPropertyInstanceFrameDataLength(LPPROPERTYINST PropertyInst)
  188. {
  189.     if ( PropertyInst->DataLength != (WORD) -1 )
  190.     {
  191.         return PropertyInst->DataLength;
  192.     }
  193.     return PropertyInst->lpPropertyInstEx->Length;
  194. }
  195. INLINE DWORD GetPropertyInstanceExDataLength(LPPROPERTYINST PropertyInst)
  196. {
  197.     if ( PropertyInst->DataLength == (WORD) -1 )
  198.     {
  199.         PropertyInst->lpPropertyInstEx->Length;
  200.     }
  201.     return (WORD) -1;
  202. }
  203. //=============================================================================
  204. //  Parser helper functions.
  205. //=============================================================================
  206. LPLABELED_WORD  WINAPI GetProtocolDescriptionTable(LPDWORD TableSize);
  207. LPLABELED_WORD  WINAPI GetProtocolDescription(DWORD ProtocolID);
  208. DWORD        WINAPI GetMacHeaderLength(LPVOID MacHeader, DWORD MacType);
  209. DWORD        WINAPI GetLLCHeaderLength(LPLLC Frame);
  210. DWORD        WINAPI GetEtype(LPVOID MacHeader, DWORD MacType);
  211. DWORD        WINAPI GetSaps(LPVOID MacHeader, DWORD MacType);
  212. BOOL         WINAPI IsLLCPresent(LPVOID MacHeader, DWORD MacType);
  213. VOID         WINAPI CanonicalizeHexString(LPSTR hex, LPSTR dest, DWORD len);
  214. void         WINAPI CanonHex(UCHAR * pDest, UCHAR * pSource, int iLen, BOOL fOx );
  215. DWORD        WINAPI ByteToBinary(LPSTR string, DWORD ByteValue);
  216. DWORD        WINAPI WordToBinary(LPSTR string, DWORD WordValue);
  217. DWORD        WINAPI DwordToBinary(LPSTR string, DWORD DwordValue);
  218. LPSTR        WINAPI AddressToString(LPSTR string, BYTE *lpAddress);
  219. LPBYTE       WINAPI StringToAddress(BYTE *lpAddress, LPSTR string);
  220. LPDWORD      WINAPI VarLenSmallIntToDword( LPBYTE  pValue, 
  221.                                                   WORD    ValueLen, 
  222.                                                   BOOL    fIsByteswapped,
  223.                                                   LPDWORD lpDword );
  224. LPBYTE       WINAPI LookupByteSetString (LPSET lpSet, BYTE Value);
  225. LPBYTE       WINAPI LookupWordSetString (LPSET lpSet, WORD Value);
  226. LPBYTE       WINAPI LookupDwordSetString (LPSET lpSet, DWORD Value);
  227. DWORD        WINAPIV FormatByteFlags(LPSTR string, DWORD ByteValue, DWORD BitMask);
  228. DWORD        WINAPIV FormatWordFlags(LPSTR string, DWORD WordValue, DWORD BitMask);
  229. DWORD        WINAPIV FormatDwordFlags(LPSTR string, DWORD DwordValue, DWORD BitMask);
  230. LPSTR        WINAPIV FormatTimeAsString(SYSTEMTIME *time, LPSTR string);
  231. VOID         WINAPIV FormatLabeledByteSetAsFlags(LPPROPERTYINST lpPropertyInst);
  232. VOID         WINAPIV FormatLabeledWordSetAsFlags(LPPROPERTYINST lpPropertyInst);
  233. VOID         WINAPIV FormatLabeledDwordSetAsFlags(LPPROPERTYINST lpPropertyInst);
  234. VOID         WINAPIV FormatPropertyDataAsByte(LPPROPERTYINST lpPropertyInst, DWORD Base);
  235. VOID         WINAPIV FormatPropertyDataAsWord(LPPROPERTYINST lpPropertyInst, DWORD Base);
  236. VOID         WINAPIV FormatPropertyDataAsDword(LPPROPERTYINST lpPropertyInst, DWORD Base);
  237. VOID         WINAPIV FormatLabeledByteSet(LPPROPERTYINST lpPropertyInst);
  238. VOID         WINAPIV FormatLabeledWordSet(LPPROPERTYINST lpPropertyInst);
  239. VOID         WINAPIV FormatLabeledDwordSet(LPPROPERTYINST lpPropertyInst);
  240. VOID         WINAPIV FormatPropertyDataAsInt64(LPPROPERTYINST lpPropertyInst, DWORD Base);
  241. VOID         WINAPIV FormatPropertyDataAsTime(LPPROPERTYINST lpPropertyInst);
  242. VOID         WINAPIV FormatPropertyDataAsString(LPPROPERTYINST lpPropertyInst);
  243. VOID         WINAPIV FormatPropertyDataAsHexString(LPPROPERTYINST lpPropertyInst);
  244. // Parsers should NOT call LockFrame().  If a parser takes a lock and then gets
  245. // faulted or returns without unlocking, it leaves the system in a state where
  246. // it cannot change protocols or cut/copy frames.  Parsers should use ParserTemporaryLockFrame
  247. // which grants a lock ONLY during the context of the api entry into the parser.  The 
  248. // lock is released on exit from the parser for that frame.
  249. ULPBYTE       WINAPI ParserTemporaryLockFrame(HFRAME hFrame);
  250. LPVOID       WINAPI GetCCInstPtr(VOID);
  251. VOID         WINAPI SetCCInstPtr(LPVOID lpCurCaptureInst);
  252. LPVOID       WINAPI CCHeapAlloc(DWORD dwBytes, BOOL bZeroInit);
  253. LPVOID       WINAPI CCHeapReAlloc(LPVOID lpMem, DWORD dwBytes, BOOL bZeroInit);
  254. BOOL         WINAPI CCHeapFree(LPVOID lpMem);
  255. SIZE_T       WINAPI CCHeapSize(LPVOID lpMem);
  256. BOOL _cdecl BERGetInteger( ULPBYTE  pCurrentPointer,
  257.                            ULPBYTE *ppValuePointer,
  258.                            LPDWORD pHeaderLength,
  259.                            LPDWORD pDataLength,
  260.                            ULPBYTE *ppNext);
  261. BOOL _cdecl BERGetString( ULPBYTE  pCurrentPointer,
  262.                           ULPBYTE *ppValuePointer,
  263.                           LPDWORD pHeaderLength,
  264.                           LPDWORD pDataLength,
  265.                           ULPBYTE *ppNext);
  266. BOOL _cdecl BERGetHeader( ULPBYTE  pCurrentPointer,
  267.                           ULPBYTE  pTag,
  268.                           LPDWORD pHeaderLength,
  269.                           LPDWORD pDataLength,
  270.                           ULPBYTE *ppNext);
  271. //=============================================================================
  272. //  Parser Finder Structures.
  273. //=============================================================================
  274. #define MAX_PROTOCOL_COMMENT_LEN ( 256 )
  275. #define NETMON_MAX_PROTOCOL_NAME_LEN ( 16 )
  276. // the constant MAX_PROTOCOL_NAME_LEN conflicts with one of the same name
  277. // but different size in rtutils.h.
  278. // So if both headers are included, we do not define MAX_PROTOCOL_NAME_LEN.
  279. #ifndef MAX_PROTOCOL_NAME_LEN
  280. #define MAX_PROTOCOL_NAME_LEN ( NETMON_MAX_PROTOCOL_NAME_LEN )
  281. #else
  282. #undef MAX_PROTOCOL_NAME_LEN
  283. #endif
  284. // Handoff Value Format Base
  285. typedef /* [public][public][public] */ 
  286. enum __MIDL___MIDL_itf_netmon_0000_0021
  287.     { HANDOFF_VALUE_FORMAT_BASE_UNKNOWN = 0,
  288. HANDOFF_VALUE_FORMAT_BASE_DECIMAL = 10,
  289. HANDOFF_VALUE_FORMAT_BASE_HEX = 16
  290.     }  PF_HANDOFFVALUEFORMATBASE;
  291. // PF_HANDOFFENTRY
  292. typedef struct _PF_HANDOFFENTRY
  293.     {
  294.     char szIniFile[ 260 ];
  295.     char szIniSection[ 260 ];
  296.     char szProtocol[ 16 ];
  297.     DWORD dwHandOffValue;
  298.     PF_HANDOFFVALUEFORMATBASE ValueFormatBase;
  299.     }  PF_HANDOFFENTRY;
  300. typedef PF_HANDOFFENTRY *PPF_HANDOFFENTRY;
  301. // PF_HANDOFFSET
  302. typedef struct _PF_HANDOFFSET
  303. {
  304.     DWORD           nEntries;
  305.     PF_HANDOFFENTRY Entry[0];
  306. } PF_HANDOFFSET;
  307. typedef PF_HANDOFFSET* PPF_HANDOFFSET;
  308. // FOLLOWENTRY
  309. typedef struct _PF_FOLLOWENTRY
  310.     {
  311.     char szProtocol[ 16 ];
  312.     }  PF_FOLLOWENTRY;
  313. typedef PF_FOLLOWENTRY *PPF_FOLLOWENTRY;
  314. // PF_FOLLOWSET
  315. typedef struct _PF_FOLLOWSET
  316. {
  317.     DWORD           nEntries;
  318.     PF_FOLLOWENTRY  Entry[0];
  319. } PF_FOLLOWSET;
  320. typedef PF_FOLLOWSET* PPF_FOLLOWSET;
  321. // PARSERINFO - contains information about a single parser
  322. typedef struct _PF_PARSERINFO
  323. {
  324.     char szProtocolName[NETMON_MAX_PROTOCOL_NAME_LEN];
  325.     char szComment[MAX_PROTOCOL_COMMENT_LEN];
  326.     char szHelpFile[MAX_PATH];
  327.     PPF_FOLLOWSET pWhoCanPrecedeMe;
  328.     PPF_FOLLOWSET pWhoCanFollowMe;
  329.     PPF_HANDOFFSET pWhoHandsOffToMe;
  330.     PPF_HANDOFFSET pWhoDoIHandOffTo;
  331. } PF_PARSERINFO;
  332. typedef PF_PARSERINFO* PPF_PARSERINFO;
  333. // PF_PARSERDLLINFO - contains information about a single parser DLL
  334. typedef struct _PF_PARSERDLLINFO
  335. {             
  336. //    char          szDLLName[MAX_PATH];
  337.     DWORD         nParsers;
  338.     PF_PARSERINFO ParserInfo[0];
  339. } PF_PARSERDLLINFO;
  340. typedef PF_PARSERDLLINFO* PPF_PARSERDLLINFO;
  341. //=============================================================================
  342. //=============================================================================
  343. //  (IniLib.h)
  344. //=============================================================================
  345. //=============================================================================
  346. #define INI_PATH_LENGTH ( 256 )
  347. #define MAX_HANDOFF_ENTRY_LENGTH ( 80 )
  348. #define MAX_PROTOCOL_NAME ( 40 )
  349. #define NUMALLOCENTRIES ( 10 )
  350. #define RAW_INI_STR_LEN ( 200 )
  351. #define PARSERS_SUBDIR              "PARSERS"
  352. #define INI_EXTENSION               "INI"
  353. #define BASE10_FORMAT_STR           "%ld=%s %ld"
  354. #define BASE16_FORMAT_STR           "%lx=%s %lx"
  355. // Given "XNS" or "TCP" or whatever BuildINIPath will return fully qual. path to "XNS.INI" or "TCP.INI"
  356. LPSTR _cdecl BuildINIPath( char     *FullPath,
  357.                            char     *IniFileName );
  358. // Builds Handoff Set
  359. DWORD     WINAPI CreateHandoffTable(LPSTR               secName,
  360.                                     LPSTR               iniFile,
  361.                                     LPHANDOFFTABLE *    hTable,
  362.                                     DWORD               nMaxProtocolEntries,
  363.                                     DWORD               base);
  364. HPROTOCOL WINAPI GetProtocolFromTable(LPHANDOFFTABLE  hTable, // lp to Handoff Table...
  365.                                       DWORD           ItemToFind,       // port number etc...
  366.                                       PDWORD_PTR      lpInstData );   // inst data to give to next protocol
  367. VOID      WINAPI DestroyHandoffTable( LPHANDOFFTABLE hTable );
  368. BOOLEAN WINAPI IsRawIPXEnabled(LPSTR               secName,
  369.                                LPSTR               iniFile,
  370.                                LPSTR               CurProtocol );
  371. //=============================================================================
  372. //=============================================================================
  373. //  (NMExpert.h)
  374. //=============================================================================
  375. //=============================================================================
  376. #define EXPERTSTRINGLENGTH ( 260 )
  377. #define EXPERTGROUPNAMELENGTH ( 25 )
  378. // HEXPERTKEY tracks running experts. It is only used by experts for 
  379. // self reference. It refers to a RUNNINGEXPERT (an internal only structure)..
  380. typedef LPVOID HEXPERTKEY;
  381. typedef HEXPERTKEY *PHEXPERTKEY;
  382. // HEXPERT tracks loaded experts. It refers to an EXPERTENUMINFO.
  383. typedef LPVOID HEXPERT;
  384. typedef HEXPERT *PHEXPERT;
  385. // HRUNNINGEXPERT tracks a currently running expert.
  386. // It refers to a RUNNINGEXPERT (an internal only structure).
  387. typedef LPVOID HRUNNINGEXPERT;
  388. typedef HRUNNINGEXPERT *PHRUNNINGEXPERT;
  389. typedef struct _EXPERTENUMINFO * PEXPERTENUMINFO;
  390. typedef struct _EXPERTCONFIG   * PEXPERTCONFIG;
  391. typedef struct _EXPERTSTARTUPINFO * PEXPERTSTARTUPINFO;
  392. // Definitions needed to call experts
  393. #define EXPERTENTRY_REGISTER      "Register"
  394. #define EXPERTENTRY_CONFIGURE     "Configure"
  395. #define EXPERTENTRY_RUN           "Run"
  396. typedef BOOL (WINAPI * PEXPERTREGISTERPROC)( PEXPERTENUMINFO );
  397. typedef BOOL (WINAPI * PEXPERTCONFIGPROC)  ( HEXPERTKEY, PEXPERTCONFIG*, PEXPERTSTARTUPINFO, DWORD, HWND );
  398. typedef BOOL (WINAPI * PEXPERTRUNPROC)     ( HEXPERTKEY, PEXPERTCONFIG, PEXPERTSTARTUPINFO, DWORD, HWND);
  399. // EXPERTENUMINFO describes an expert that NetMon has loaded from disk. 
  400. // It does not include any configuration or runtime information.
  401. typedef struct _EXPERTENUMINFO
  402. {
  403.     char      szName[EXPERTSTRINGLENGTH];
  404.     char      szVendor[EXPERTSTRINGLENGTH];
  405.     char      szDescription[EXPERTSTRINGLENGTH];
  406.     DWORD     Version;    
  407.     DWORD     Flags;
  408.     char      szDllName[MAX_PATH];      // private, dont' touch
  409.     HEXPERT   hExpert;                  // private, don't touch
  410.     HINSTANCE hModule;                  // private, don't touch
  411.     PEXPERTREGISTERPROC pRegisterProc;  // private, don't touch
  412.     PEXPERTCONFIGPROC   pConfigProc;    // private, don't touch
  413.     PEXPERTRUNPROC      pRunProc;       // private, don't touch
  414. } EXPERTENUMINFO;
  415. typedef EXPERTENUMINFO * PEXPERTENUMINFO;
  416. #define EXPERT_ENUM_FLAG_CONFIGURABLE ( 0x1 )
  417. #define EXPERT_ENUM_FLAG_VIEWER_PRIVATE ( 0x2 )
  418. #define EXPERT_ENUM_FLAG_NO_VIEWER ( 0x4 )
  419. #define EXPERT_ENUM_FLAG_ADD_ME_TO_RMC_IN_SUMMARY ( 0x10 )
  420. #define EXPERT_ENUM_FLAG_ADD_ME_TO_RMC_IN_DETAIL ( 0x20 )
  421. // EXPERTSTARTUPINFO
  422. // This gives the Expert an indication of where he came from.
  423. // Note: if the lpPropertyInst->PropertyInfo->DataQualifier == PROP_QUAL_FLAGS
  424. // then the sBitField structure is filled in
  425. typedef struct _EXPERTSTARTUPINFO
  426. {
  427.     DWORD           Flags;
  428.     HCAPTURE        hCapture;
  429.     char            szCaptureFile[MAX_PATH];
  430.     DWORD           dwFrameNumber;
  431.     HPROTOCOL       hProtocol;
  432.     LPPROPERTYINST  lpPropertyInst;
  433.     struct
  434.     {
  435.         BYTE    BitNumber;
  436.         BOOL    bOn;
  437.     } sBitfield;
  438. } EXPERTSTARTUPINFO;
  439. // EXPERTCONFIG
  440. // This is a generic holder for an Expert's config data.
  441. typedef struct  _EXPERTCONFIG
  442. {
  443.     DWORD   RawConfigLength;
  444.     BYTE    RawConfigData[0];
  445. } EXPERTCONFIG;
  446. typedef EXPERTCONFIG * PEXPERTCONFIG;
  447. // CONFIGUREDEXPERT
  448. // This structure associates a loaded expert with its configuration data.
  449. typedef struct
  450. {
  451.     HEXPERT         hExpert;
  452.     DWORD           StartupFlags;
  453.     PEXPERTCONFIG   pConfig;
  454. } CONFIGUREDEXPERT;
  455. typedef CONFIGUREDEXPERT * PCONFIGUREDEXPERT;
  456. // EXPERTFRAMEDESCRIPTOR - passed back to the expert to fulfil the request for a frame
  457. typedef struct
  458. {
  459.     DWORD                FrameNumber;         // Frame Number.
  460.     HFRAME               hFrame;              // Handle to the frame.
  461.     ULPFRAME             pFrame;              // pointer to frame.
  462.     LPRECOGNIZEDATATABLE lpRecognizeDataTable;// pointer to table of RECOGNIZEDATA structures.
  463.     LPPROPERTYTABLE      lpPropertyTable;     // pointer to property table.
  464. } EXPERTFRAMEDESCRIPTOR;
  465. typedef EXPERTFRAMEDESCRIPTOR * LPEXPERTFRAMEDESCRIPTOR;
  466. #define GET_SPECIFIED_FRAME ( 0 )
  467. #define GET_FRAME_NEXT_FORWARD ( 1 )
  468. #define GET_FRAME_NEXT_BACKWARD ( 2 )
  469. #define FLAGS_DEFER_TO_UI_FILTER ( 0x1 )
  470. #define FLAGS_ATTACH_PROPERTIES ( 0x2 )
  471. // EXPERTSTATUSENUM
  472. // gives the possible values for the status field in the EXPERTSTATUS structure
  473. typedef /* [public][public][public] */ 
  474. enum __MIDL___MIDL_itf_netmon_0000_0022
  475.     { EXPERTSTATUS_INACTIVE = 0,
  476. EXPERTSTATUS_STARTING = EXPERTSTATUS_INACTIVE + 1,
  477. EXPERTSTATUS_RUNNING = EXPERTSTATUS_STARTING + 1,
  478. EXPERTSTATUS_PROBLEM = EXPERTSTATUS_RUNNING + 1,
  479. EXPERTSTATUS_ABORTED = EXPERTSTATUS_PROBLEM + 1,
  480. EXPERTSTATUS_DONE = EXPERTSTATUS_ABORTED + 1
  481.     }  EXPERTSTATUSENUMERATION;
  482. // EXPERTSUBSTATUS bitfield 
  483. // gives the possible values for the substatus field in the EXPERTSTATUS structure
  484. #define EXPERTSUBSTATUS_ABORTED_USER ( 0x1 )
  485. #define EXPERTSUBSTATUS_ABORTED_LOAD_FAIL ( 0x2 )
  486. #define EXPERTSUBSTATUS_ABORTED_THREAD_FAIL ( 0x4 )
  487. #define EXPERTSUBSTATUS_ABORTED_BAD_ENTRY ( 0x8 )
  488. // EXPERTSTATUS
  489. // Indicates the current status of a running expert.
  490. typedef /* [public][public] */ struct __MIDL___MIDL_itf_netmon_0000_0023
  491.     {
  492.     EXPERTSTATUSENUMERATION Status;
  493.     DWORD SubStatus;
  494.     DWORD PercentDone;
  495.     DWORD Frame;
  496.     char szStatusText[ 260 ];
  497.     }  EXPERTSTATUS;
  498. typedef EXPERTSTATUS *PEXPERTSTATUS;
  499. // EXPERT STARTUP FLAGS
  500. #define EXPERT_STARTUP_FLAG_USE_STARTUP_DATA_OVER_CONFIG_DATA ( 0x1 )
  501. //=============================================================================
  502. //=============================================================================
  503. //  (NetMon.h)
  504. //=============================================================================
  505. //=============================================================================
  506. //  A frame with no number contains this value as its frame number.
  507. #define INVALID_FRAME_NUMBER ( ( DWORD  )-1 )
  508. //=============================================================================
  509. //  Capture file flags.
  510. //=============================================================================
  511. #define CAPTUREFILE_OPEN                OPEN_EXISTING
  512. #define CAPTUREFILE_CREATE              CREATE_NEW
  513. //=============================================================================
  514. //  CAPTURE CONTEXT API's.
  515. //=============================================================================
  516. LPSYSTEMTIME         WINAPI GetCaptureTimeStamp(HCAPTURE hCapture);
  517. DWORD                WINAPI GetCaptureMacType(HCAPTURE hCapture);
  518. DWORD                WINAPI GetCaptureTotalFrames(HCAPTURE hCapture);
  519. LPSTR                WINAPI GetCaptureComment(HCAPTURE hCapture);
  520. //=============================================================================
  521. //  FRAME HELP API's.
  522. //=============================================================================
  523. DWORD                WINAPI MacTypeToAddressType(DWORD MacType);
  524. DWORD                WINAPI AddressTypeToMacType(DWORD AddressType);
  525. DWORD                WINAPI GetFrameDstAddressOffset(HFRAME hFrame, DWORD AddressType, LPDWORD AddressLength);
  526. DWORD                WINAPI GetFrameSrcAddressOffset(HFRAME hFrame, DWORD AddressType, LPDWORD AddressLength);
  527. HCAPTURE             WINAPI GetFrameCaptureHandle(HFRAME hFrame);
  528. DWORD                WINAPI GetFrameDestAddress(HFRAME       hFrame,
  529.                                                        LPADDRESS    lpAddress,
  530.                                                        DWORD        AddressType,
  531.                                                        DWORD        Flags);
  532. DWORD                WINAPI GetFrameSourceAddress(HFRAME     hFrame,
  533.                                                          LPADDRESS  lpAddress,
  534.                                                          DWORD      AddressType,
  535.                                                          DWORD      Flags);
  536. DWORD                WINAPI GetFrameMacHeaderLength(HFRAME hFrame);
  537. BOOL                 WINAPI CompareFrameDestAddress(HFRAME hFrame, LPADDRESS lpAddress);
  538. BOOL                 WINAPI CompareFrameSourceAddress(HFRAME hFrame, LPADDRESS lpAddress);
  539. DWORD                WINAPI GetFrameLength(HFRAME hFrame);
  540. DWORD                WINAPI GetFrameStoredLength(HFRAME hFrame);
  541. DWORD                WINAPI GetFrameMacType(HFRAME hFrame);
  542. DWORD                WINAPI GetFrameMacHeaderLength(HFRAME hFrame);
  543. DWORD                WINAPI GetFrameNumber(HFRAME hFrame);
  544. __int64              WINAPI GetFrameTimeStamp(HFRAME hFrame);
  545. ULPFRAME             WINAPI GetFrameFromFrameHandle(HFRAME hFrame);
  546. //=============================================================================
  547. //  FRAME API's.
  548. //=============================================================================
  549. HFRAME               WINAPI ModifyFrame(HCAPTURE hCapture,
  550.                                                DWORD    FrameNumber,
  551.                                                LPBYTE   FrameData,
  552.                                                DWORD    FrameLength,
  553.                                                __int64  TimeStamp);
  554. HFRAME               WINAPI FindNextFrame(HFRAME hCurrentFrame,
  555.                                                 LPSTR ProtocolName,
  556.                                                 LPADDRESS lpDesstAddress,
  557.                                                 LPADDRESS lpSrcAddress,
  558.                                                 LPWORD ProtocolOffset,
  559.                                                 DWORD  OriginalFrameNumber,
  560.                                                 DWORD  nHighestFrame);
  561. HFRAME               WINAPI FindPreviousFrame(HFRAME hCurrentFrame,
  562.                                                     LPSTR ProtocolName,
  563.                                                     LPADDRESS lpDstAddress,
  564.                                                     LPADDRESS lpSrcAddress,
  565.                                                     LPWORD ProtocolOffset,
  566.                                                     DWORD  OriginalFrameNumber,
  567.                                                     DWORD  nLowestFrame );
  568. HCAPTURE             WINAPI GetFrameCaptureHandle(HFRAME);
  569. HFRAME               WINAPI GetFrame(HCAPTURE hCapture, DWORD FrameNumber);
  570. LPRECOGNIZEDATATABLE WINAPI GetFrameRecognizeData(HFRAME hFrame);
  571. //=============================================================================
  572. //  Protocol API's.
  573. //=============================================================================
  574. HPROTOCOL            WINAPI CreateProtocol(LPSTR ProtocolName,
  575.                                                   LPENTRYPOINTS lpEntryPoints,
  576.                                                   DWORD cbEntryPoints);
  577. VOID                 WINAPI DestroyProtocol(HPROTOCOL hProtocol);
  578. LPPROTOCOLINFO       WINAPI GetProtocolInfo(HPROTOCOL hProtocol);
  579. HPROPERTY            WINAPI GetProperty(HPROTOCOL hProtocol, LPSTR PropertyName);
  580. HPROTOCOL            WINAPI GetProtocolFromName(LPSTR ProtocolName);
  581. DWORD                WINAPI GetProtocolStartOffset(HFRAME hFrame, LPSTR ProtocolName);
  582. DWORD                WINAPI GetProtocolStartOffsetHandle(HFRAME hFrame, HPROTOCOL hProtocol);
  583. DWORD                WINAPI GetPreviousProtocolOffsetByName(HFRAME hFrame,
  584.                                                                    DWORD  dwStartOffset,
  585.                                                                    LPSTR  szProtocolName,
  586.                                                                    DWORD* pdwPreviousOffset);
  587. LPPROTOCOLTABLE      WINAPI GetEnabledProtocols(HCAPTURE hCapture);
  588. //=============================================================================
  589. //  Property API's.
  590. //=============================================================================
  591. DWORD                WINAPI CreatePropertyDatabase(HPROTOCOL hProtocol, DWORD nProperties);
  592. DWORD                WINAPI DestroyPropertyDatabase(HPROTOCOL hProtocol);
  593. HPROPERTY            WINAPI AddProperty(HPROTOCOL hProtocol, LPPROPERTYINFO PropertyInfo);
  594. BOOL                 WINAPI AttachPropertyInstance(HFRAME    hFrame,
  595.                                                           HPROPERTY hProperty,
  596.                                                           DWORD     Length,
  597.                                                           ULPVOID   lpData,
  598.                                                           DWORD     HelpID,
  599.                                                           DWORD     Level,
  600.                                                           DWORD     IFlags);
  601. BOOL                 WINAPI AttachPropertyInstanceEx(HFRAME      hFrame,
  602.                                                             HPROPERTY   hProperty,
  603.                                                             DWORD       Length,
  604.                                                             ULPVOID     lpData,
  605.                                                             DWORD       ExLength,
  606.                                                             ULPVOID     lpExData,
  607.                                                             DWORD       HelpID,
  608.                                                             DWORD       Level,
  609.                                                             DWORD       IFlags);
  610. LPPROPERTYINST       WINAPI FindPropertyInstance(HFRAME hFrame, HPROPERTY hProperty);
  611. LPPROPERTYINST       WINAPI FindPropertyInstanceRestart (HFRAME      hFrame, 
  612.                                                                 HPROPERTY   hProperty, 
  613.                                                                 LPPROPERTYINST *lpRestartKey, 
  614.                                                                 BOOL        DirForward );
  615. LPPROPERTYINFO       WINAPI GetPropertyInfo(HPROPERTY hProperty);
  616. LPSTR                WINAPI GetPropertyText(HFRAME hFrame, LPPROPERTYINST lpPI, LPSTR szBuffer, DWORD BufferSize);
  617. DWORD                WINAPI ResetPropertyInstanceLength( LPPROPERTYINST lpProp, 
  618.                                                                 WORD nOrgLen, 
  619.                                                                 WORD nNewLen );
  620. //=============================================================================
  621. //  MISC. API's.
  622. //=============================================================================
  623. DWORD                WINAPI GetCaptureCommentFromFilename(LPSTR lpFilename, LPSTR lpComment, DWORD BufferSize);
  624. int                  WINAPI CompareAddresses(LPADDRESS lpAddress1, LPADDRESS lpAddress2);
  625. DWORD                WINAPIV FormatPropertyInstance(LPPROPERTYINST lpPropertyInst, ...);
  626. SYSTEMTIME *         WINAPI AdjustSystemTime(SYSTEMTIME *SystemTime, __int64 TimeDelta);
  627. //=============================================================================
  628. //  EXPERT API's for use by Experts
  629. //=============================================================================
  630. DWORD WINAPI ExpertGetFrame( IN HEXPERTKEY hExpertKey,
  631.                                     IN DWORD Direction,
  632.                                     IN DWORD RequestFlags,
  633.                                     IN DWORD RequestedFrameNumber,
  634.                                     IN HFILTER hFilter,
  635.                                     OUT LPEXPERTFRAMEDESCRIPTOR pEFrameDescriptor);
  636. LPVOID WINAPI ExpertAllocMemory( IN  HEXPERTKEY hExpertKey,
  637.                                         IN  SIZE_T nBytes,
  638.                                         OUT DWORD* pError);
  639. LPVOID WINAPI ExpertReallocMemory( IN  HEXPERTKEY hExpertKey,
  640.                                           IN  LPVOID pOriginalMemory,
  641.                                           IN  SIZE_T nBytes,
  642.                                           OUT DWORD* pError);
  643. DWORD WINAPI ExpertFreeMemory( IN HEXPERTKEY hExpertKey,
  644.                                       IN LPVOID pOriginalMemory);
  645. SIZE_T WINAPI ExpertMemorySize( IN HEXPERTKEY hExpertKey,
  646.                                        IN LPVOID pOriginalMemory);
  647. DWORD WINAPI ExpertIndicateStatus( IN HEXPERTKEY              hExpertKey, 
  648.                                           IN EXPERTSTATUSENUMERATION Status,
  649.                                           IN DWORD                   SubStatus,
  650.                                           IN const char *            szText,
  651.                                           IN LONG                    PercentDone);
  652. DWORD WINAPI ExpertSubmitEvent( IN HEXPERTKEY   hExpertKey,
  653.                                        IN PNMEVENTDATA pExpertEvent);
  654. DWORD WINAPI ExpertGetStartupInfo( IN  HEXPERTKEY hExpertKey,
  655.                                           OUT PEXPERTSTARTUPINFO pExpertStartupInfo);
  656. //=============================================================================
  657. //  DEBUG API's.
  658. //=============================================================================
  659. #ifdef DEBUG
  660. //=============================================================================
  661. //  BreakPoint() macro.
  662. //=============================================================================
  663. // We do not want breakpoints in our code any more...
  664. // so we are defining DebugBreak(), usually a system call, to be
  665. // just a dprintf. BreakPoint() is still defined as DebugBreak().
  666. #ifdef DebugBreak
  667. #undef DebugBreak
  668. #endif // DebugBreak
  669. #define DebugBreak()    dprintf("DebugBreak Called at %s:%s", __FILE__, __LINE__);
  670. #define BreakPoint()    DebugBreak()
  671. #endif // DEBUG
  672. //=============================================================================
  673. //=============================================================================
  674. //  (NMBlob.h)
  675. //=============================================================================
  676. //=============================================================================
  677. //=============================================================================
  678. // Blob Constants
  679. //=============================================================================
  680. #define INITIAL_RESTART_KEY ( 0xffffffff )
  681. //=============================================================================
  682. // Blob Core Helper Routines 
  683. //=============================================================================
  684. DWORD _cdecl CreateBlob(HBLOB * phBlob);
  685. DWORD _cdecl DestroyBlob(HBLOB hBlob);
  686. DWORD _cdecl SetStringInBlob(HBLOB  hBlob,         
  687.                       const char * pOwnerName,    
  688.                       const char * pCategoryName, 
  689.                       const char * pTagName,      
  690.                       const char * pString);      
  691. DWORD _cdecl GetStringFromBlob(HBLOB   hBlob,
  692.                         const char *  pOwnerName,
  693.                         const char *  pCategoryName,
  694.                         const char *  pTagName,
  695.                         const char ** ppString);
  696. DWORD _cdecl GetStringsFromBlob(HBLOB   hBlob,
  697.                          const char * pRequestedOwnerName,
  698.                          const char * pRequestedCategoryName,
  699.                          const char * pRequestedTagName,
  700.                          const char ** ppReturnedOwnerName,
  701.                          const char ** ppReturnedCategoryName,
  702.                          const char ** ppReturnedTagName,
  703.                          const char ** ppReturnedString,
  704.                          DWORD *       pRestartKey);
  705. DWORD _cdecl RemoveFromBlob(HBLOB   hBlob,
  706.                      const char *  pOwnerName,
  707.                      const char *  pCategoryName,
  708.                      const char *  pTagName);
  709. DWORD _cdecl LockBlob(HBLOB hBlob);
  710. DWORD _cdecl UnlockBlob(HBLOB hBlob);
  711. DWORD _cdecl FindUnknownBlobCategories( HBLOB hBlob,
  712.                                  const char *  pOwnerName,
  713.                                  const char *  pKnownCategoriesTable[],
  714.                                  HBLOB hUnknownCategoriesBlob);
  715. //=============================================================================
  716. // Blob Helper Routines 
  717. //=============================================================================
  718. DWORD _cdecl MergeBlob(HBLOB hDstBlob,
  719.                 HBLOB hSrcBlob); 
  720. DWORD _cdecl DuplicateBlob (HBLOB hSrcBlob,
  721.                      HBLOB *hBlobThatWillBeCreated ); 
  722. DWORD _cdecl WriteBlobToFile(HBLOB  hBlob,
  723.                       const char * pFileName);
  724. DWORD _cdecl ReadBlobFromFile(HBLOB* phBlob,
  725.                        const char * pFileName);
  726. DWORD _cdecl RegCreateBlobKey(HKEY hkey, const char* szBlobName, HBLOB hBlob);
  727. DWORD _cdecl RegOpenBlobKey(HKEY hkey, const char* szBlobName, HBLOB* phBlob);
  728. DWORD _cdecl MarshalBlob(HBLOB hBlob, DWORD* pSize, BYTE** ppBytes);
  729. DWORD _cdecl UnMarshalBlob(HBLOB* phBlob, DWORD Size, BYTE* pBytes);
  730. DWORD _cdecl SetDwordInBlob(HBLOB hBlob,
  731.                      const char *  pOwnerName,
  732.                      const char *  pCategoryName,
  733.                      const char *  pTagName,
  734.                      DWORD         Dword);
  735. DWORD _cdecl GetDwordFromBlob(HBLOB   hBlob,
  736.                        const char *  pOwnerName,
  737.                        const char *  pCategoryName,
  738.                        const char *  pTagName,
  739.                        DWORD      *  pDword);
  740. DWORD _cdecl SetBoolInBlob(HBLOB   hBlob,
  741.                     const char *  pOwnerName,
  742.                     const char *  pCategoryName,
  743.                     const char *  pTagName,
  744.                     BOOL          Bool);
  745. DWORD _cdecl GetBoolFromBlob(HBLOB   hBlob,
  746.                       const char *  pOwnerName,
  747.                       const char *  pCategoryName,
  748.                       const char *  pTagName,
  749.                       BOOL       *  pBool);
  750. DWORD _cdecl GetMacAddressFromBlob(HBLOB   hBlob,
  751.                             const char *  pOwnerName,
  752.                             const char *  pCategoryName,
  753.                             const char *  pTagName,
  754.                             BYTE *  pMacAddress);
  755. DWORD _cdecl SetMacAddressInBlob(HBLOB   hBlob,
  756.                           const char *  pOwnerName,
  757.                           const char *  pCategoryName,
  758.                           const char *  pTagName,
  759.                           const BYTE *  pMacAddress);
  760. DWORD _cdecl FindUnknownBlobTags( HBLOB hBlob,
  761.                            const char *  pOwnerName,
  762.                            const char *  pCategoryName,
  763.                            const char *  pKnownTagsTable[],
  764.                            HBLOB hUnknownTagsBlob);
  765. //=============================================================================
  766. // Blob NPP Helper Routines
  767. //=============================================================================
  768. DWORD _cdecl SetNetworkInfoInBlob(HBLOB hBlob, 
  769.                            LPNETWORKINFO lpNetworkInfo);
  770. DWORD _cdecl GetNetworkInfoFromBlob(HBLOB hBlob, 
  771.                              LPNETWORKINFO lpNetworkInfo);
  772. DWORD _cdecl CreateNPPInterface ( HBLOB hBlob,
  773.                            REFIID iid,
  774.                            void ** ppvObject);
  775. DWORD _cdecl SetClassIDInBlob(HBLOB hBlob,
  776.                        const char* pOwnerName,
  777.                        const char* pCategoryName,
  778.                        const char* pTagName,
  779.                        const CLSID*  pClsID);
  780. DWORD _cdecl GetClassIDFromBlob(HBLOB hBlob,
  781.                          const char* pOwnerName,
  782.                          const char* pCategoryName,
  783.                          const char* pTagName,
  784.                          CLSID * pClsID);
  785. DWORD _cdecl SetNPPPatternFilterInBlob( HBLOB hBlob,
  786.                                  LPEXPRESSION pExpression,
  787.                                  HBLOB hErrorBlob);
  788. DWORD _cdecl GetNPPPatternFilterFromBlob( HBLOB hBlob,
  789.                                    LPEXPRESSION pExpression,
  790.                                    HBLOB hErrorBlob);
  791. DWORD _cdecl SetNPPAddressFilterInBlob( HBLOB hBlob,
  792.                                  LPADDRESSTABLE pAddressTable);
  793. DWORD _cdecl GetNPPAddressFilterFromBlob( HBLOB hBlob,
  794.                                    LPADDRESSTABLE pAddressTable,
  795.                                    HBLOB hErrorBlob);
  796. DWORD _cdecl SetNPPTriggerInBlob( HBLOB hBlob,
  797.                            LPTRIGGER   pTrigger,
  798.                            HBLOB hErrorBlob);
  799. DWORD _cdecl GetNPPTriggerFromBlob( HBLOB hBlob,
  800.                              LPTRIGGER   pTrigger,
  801.                              HBLOB hErrorBlob);
  802. DWORD _cdecl SetNPPEtypeSapFilter(HBLOB  hBlob, 
  803.                            WORD   nSaps,
  804.                            WORD   nEtypes,
  805.                            LPBYTE lpSapTable,
  806.                            LPWORD lpEtypeTable,
  807.                            DWORD  FilterFlags,
  808.                            HBLOB  hErrorBlob);
  809. DWORD _cdecl GetNPPEtypeSapFilter(HBLOB  hBlob, 
  810.                            WORD   *pnSaps,
  811.                            WORD   *pnEtypes,
  812.                            LPBYTE *ppSapTable,
  813.                            LPWORD *ppEtypeTable,
  814.                            DWORD  *pFilterFlags,
  815.                            HBLOB  hErrorBlob);
  816. // GetNPPMacTypeAsNumber maps the tag NPP:NetworkInfo:MacType to the MAC_TYPE_*
  817. // defined in the NPPTYPES.h.  If the tag is unavailable, the API returns MAC_TYPE_UNKNOWN.
  818. DWORD _cdecl GetNPPMacTypeAsNumber(HBLOB hBlob, 
  819.                             LPDWORD lpMacType);
  820. // See if a remote catagory exists... and make sure that the remote computername
  821. // isn't the same as the local computername.
  822. BOOL  _cdecl IsRemoteNPP ( HBLOB hBLOB);
  823. //=============================================================================
  824. // npp tag definitions
  825. //=============================================================================
  826. #define OWNER_NPP               "NPP"
  827. #define CATEGORY_NETWORKINFO        "NetworkInfo"
  828. #define TAG_MACTYPE                     "MacType"
  829. #define TAG_CURRENTADDRESS              "CurrentAddress"
  830. #define TAG_LINKSPEED                   "LinkSpeed"
  831. #define TAG_MAXFRAMESIZE                "MaxFrameSize"
  832. #define TAG_FLAGS                       "Flags"
  833. #define TAG_TIMESTAMPSCALEFACTOR        "TimeStampScaleFactor"
  834. #define TAG_COMMENT                     "Comment"
  835. #define TAG_NODENAME                    "NodeName"
  836. #define TAG_NAME                        "Name"
  837. #define TAG_FAKENPP                     "Fake"
  838. #define TAG_PROMISCUOUS_MODE            "PMode"
  839. #define CATEGORY_LOCATION           "Location"
  840. #define TAG_RAS                         "Dial-up Connection"
  841. #define TAG_MACADDRESS                  "MacAddress"
  842. #define TAG_CLASSID                     "ClassID"
  843. #define TAG_NAME                        "Name"
  844. #define CATEGORY_CONFIG             "Config"
  845. #define TAG_FRAME_SIZE                  "FrameSize"
  846. #define TAG_UPDATE_FREQUENCY            "UpdateFreq"
  847. #define TAG_BUFFER_SIZE                 "BufferSize"
  848. #define TAG_DRIVE_LETTER                "DriveLetter"
  849. #define TAG_PATTERN_DESIGNATOR          "PatternMatch"
  850. #define TAG_PATTERN                     "Pattern"
  851. #define TAG_ADDRESS_PAIR                "AddressPair"
  852. #define TAG_CONNECTIONFLAGS             "ConnectionFlags"
  853. #define TAG_ETYPES                      "Etypes"
  854. #define TAG_SAPS                        "Saps"
  855. #define TAG_NO_CONVERSATION_STATS       "NoConversationStats"
  856. #define TAG_NO_STATS_FRAME              "NoStatsFrame"
  857. #define TAG_DONT_DELETE_EMPTY_CAPTURE   "DontDeleteEmptyCapture"
  858. #define TAG_WANT_PROTOCOL_INFO          "WantProtocolInfo"
  859. #define TAG_INTERFACE_DELAYED_CAPTURE   "IDdC"
  860. #define TAG_INTERFACE_REALTIME_CAPTURE  "IRTC"
  861. #define TAG_INTERFACE_STATS             "ISts"
  862. #define TAG_INTERFACE_TRANSMIT          "IXmt"
  863. #define TAG_INTERFACE_EXPERT_STATS      "IESP"
  864. #define TAG_LOCAL_ONLY                  "LocalOnly"
  865. // Is_Remote is set to TRUE by NPPs that go remote.  Note that when you
  866. //  are looking for a remote NPP, you probably also need to ask for
  867. //  blobs that have the TAG_GET_SPECIAL_BLOBS bool set
  868. #define TAG_IS_REMOTE                   "IsRemote"
  869. #define CATEGORY_TRIGGER            "Trigger"
  870. #define TAG_TRIGGER                     "Trigger"
  871. #define CATEGORY_FINDER             "Finder"
  872. #define TAG_ROOT                        "Root"
  873. #define TAG_PROCNAME                    "ProcName"
  874. #define TAG_DISP_STRING                 "Display"
  875. #define TAG_DLL_FILENAME                "DLLName"
  876. #define TAG_GET_SPECIAL_BLOBS           "Specials"
  877. #define CATEGORY_REMOTE              "Remote"
  878. #define TAG_REMOTECOMPUTER              "RemoteComputer"
  879. #define TAG_REMOTECLASSID               "ClassID"
  880. #define CATEGORY_ESP                "ESP"
  881. #define TAG_ESP_GENERAL_ACTIVE          "ESPGeneralActive"
  882. #define TAG_ESP_PROTOCOL_ACTIVE         "ESPProtocolActive"
  883. #define TAG_ESP_MAC_ACTIVE              "ESPMacActive"
  884. #define TAG_ESP_MAC2MAC_ACTIVE          "ESPMac2MacActive"
  885. #define TAG_ESP_IP_ACTIVE               "ESPIpActive"
  886. #define TAG_ESP_IP2IP_ACTIVE            "ESPIp2IpActive"
  887. #define TAG_ESP_IP_APP_ACTIVE           "ESPIpAppActive"
  888. #define TAG_ESP_IPX_ACTIVE              "ESPIpxActive"
  889. #define TAG_ESP_IPX2IPX_ACTIVE          "ESPIpx2IpxActive"
  890. #define TAG_ESP_IPX_APP_ACTIVE          "ESPIpxAppActive"
  891. #define TAG_ESP_DEC_ACTIVE              "ESPDecActive"
  892. #define TAG_ESP_DEC2DEC_ACTIVE          "ESPDec2DecActive"
  893. #define TAG_ESP_DEC_APP_ACTIVE          "ESPDecAppActive"
  894. #define TAG_ESP_APPLE_ACTIVE            "ESPAppleActive"
  895. #define TAG_ESP_APPLE2APPLE_ACTIVE      "ESPApple2AppleActive"
  896. #define TAG_ESP_APPLE_APP_ACTIVE        "ESPAppleAppActive"
  897. #define TAG_ESP_UTIL_SIZE               "ESPUtilSize"
  898. #define TAG_ESP_TIME_SIZE               "ESPTimeSize"
  899. #define TAG_ESP_BPS_SIZE                "ESPBpsSize"
  900. #define TAG_ESP_BPS_THRESH              "ESPBpsThresh"
  901. #define TAG_ESP_FPS_THRESH              "ESPFpsThresh"
  902. #define TAG_ESP_MAC                     "ESPMac"
  903. #define TAG_ESP_IPX                     "ESPIpx"
  904. #define TAG_ESP_IPXSPX                  "ESPIpxSpx"
  905. #define TAG_ESP_NCP                     "ESPNcp"
  906. #define TAG_ESP_IP                      "ESPIp"
  907. #define TAG_ESP_UDP                     "ESPUdp"
  908. #define TAG_ESP_TCP                     "ESPTcp"
  909. #define TAG_ESP_ICMP                    "ESPIcmp"
  910. #define TAG_ESP_ARP                     "ESPArp"
  911. #define TAG_ESP_RARP                    "ESPRarp"
  912. #define TAG_ESP_APPLE                   "ESPApple"
  913. #define TAG_ESP_AARP                    "ESPAarp"
  914. #define TAG_ESP_DEC                     "ESPDec"
  915. #define TAG_ESP_NETBIOS                 "ESPNetbios"
  916. #define TAG_ESP_SNA                     "ESPSna"
  917. #define TAG_ESP_BPDU                    "ESPBpdu"
  918. #define TAG_ESP_LLC                     "ESPLlc"
  919. #define TAG_ESP_RPL                     "ESPRpl"
  920. #define TAG_ESP_BANYAN                  "ESPBanyan"
  921. #define TAG_ESP_LANMAN                  "ESPLanMan"
  922. #define TAG_ESP_SNMP                    "ESPSnmp"
  923. #define TAG_ESP_X25                     "ESPX25"
  924. #define TAG_ESP_XNS                     "ESPXns"
  925. #define TAG_ESP_ISO                     "ESPIso"
  926. #define TAG_ESP_UNKNOWN                 "ESPUnknown"
  927. #define TAG_ESP_ATP                     "ESPAtp"
  928. #define TAG_ESP_ADSP                    "ESPAdsp"
  929. //=============================================================================
  930. // npp value definitions
  931. //=============================================================================
  932. // Mac types
  933. #define PROTOCOL_STRING_ETHERNET_TXT   "ETHERNET"
  934. #define PROTOCOL_STRING_TOKENRING_TXT  "TOKENRING"
  935. #define PROTOCOL_STRING_FDDI_TXT       "FDDI"
  936. #define PROTOCOL_STRING_ATM_TXT        "ATM"
  937. #define PROTOCOL_STRING_1394_TXT       "IP/1394"
  938. // lower protocols
  939. #define PROTOCOL_STRING_IP_TXT         "IP"
  940. #define PROTOCOL_STRING_IPX_TXT        "IPX"
  941. #define PROTOCOL_STRING_XNS_TXT        "XNS"
  942. #define PROTOCOL_STRING_VINES_IP_TXT   "VINES IP"
  943. // upper protocols
  944. #define PROTOCOL_STRING_ICMP_TXT       "ICMP"
  945. #define PROTOCOL_STRING_TCP_TXT        "TCP"
  946. #define PROTOCOL_STRING_UDP_TXT        "UDP"
  947. #define PROTOCOL_STRING_SPX_TXT        "SPX"
  948. #define PROTOCOL_STRING_NCP_TXT        "NCP"
  949. // pseudo protocols
  950. #define PROTOCOL_STRING_ANY_TXT        "ANY"
  951. #define PROTOCOL_STRING_ANY_GROUP_TXT  "ANY GROUP"
  952. #define PROTOCOL_STRING_HIGHEST_TXT    "HIGHEST"
  953. #define PROTOCOL_STRING_LOCAL_ONLY_TXT "LOCAL ONLY"
  954. #define PROTOCOL_STRING_UNKNOWN_TXT    "UNKNOWN"
  955. #define PROTOCOL_STRING_DATA_TXT       "DATA"
  956. #define PROTOCOL_STRING_FRAME_TXT      "FRAME"
  957. #define PROTOCOL_STRING_NONE_TXT       "NONE"
  958. #define PROTOCOL_STRING_EFFECTIVE_TXT  "EFFECTIVE"
  959. #define ADDRESS_PAIR_INCLUDE_TXT    "INCLUDE"
  960. #define ADDRESS_PAIR_EXCLUDE_TXT    "EXCLUDE"
  961. #define INCLUDE_ALL_EXCEPT_TXT      "INCLUDE ALL EXCEPT"
  962. #define EXCLUDE_ALL_EXCEPT_TXT      "EXCLUDE ALL EXCEPT"
  963. #define PATTERN_MATCH_OR_TXT        "OR("
  964. #define PATTERN_MATCH_AND_TXT       "AND("
  965. #define TRIGGER_PATTERN_TXT               "PATTERN MATCH"
  966. #define TRIGGER_BUFFER_TXT                "BUFFER CONTENT"
  967. #define TRIGGER_NOTIFY_TXT      "NOTIFY"
  968. #define TRIGGER_STOP_TXT        "STOP"
  969. #define TRIGGER_PAUSE_TXT       "PAUSE"
  970. #define TRIGGER_25_PERCENT_TXT  "25 PERCENT"
  971. #define TRIGGER_50_PERCENT_TXT  "50 PERCENT"
  972. #define TRIGGER_75_PERCENT_TXT  "75 PERCENT"
  973. #define TRIGGER_100_PERCENT_TXT "100 PERCENT"
  974. #define PATTERN_MATCH_NOT_TXT   "NOT"
  975. //=============================================================================
  976. //=============================================================================
  977. // (NMRegHelp.h)
  978. //=============================================================================
  979. //=============================================================================
  980. // Registry helpers
  981. LPCSTR _cdecl FindOneOf(LPCSTR p1, LPCSTR p2);
  982. LONG _cdecl recursiveDeleteKey(HKEY hKeyParent,            // Parent of key to delete.
  983.                         const char* lpszKeyChild);  // Key to delete.
  984. BOOL _cdecl SubkeyExists(const char* pszPath,              // Path of key to check
  985.                   const char* szSubkey);            // Key to check
  986. BOOL _cdecl setKeyAndValue(const char* szKey, 
  987.                     const char* szSubkey, 
  988.                     const char* szValue,
  989.                     const char* szName) ;
  990. //=============================================================================
  991. //=============================================================================
  992. // (NMIpStructs.h)
  993. //=============================================================================
  994. //=============================================================================
  995. // These structures are used to decode network data and so need to be packed
  996. #pragma pack(push, 1)
  997. //
  998. // IP Packet Structure
  999. //
  1000. typedef struct _IP 
  1001. {
  1002.     union 
  1003.     {
  1004.         BYTE   Version;
  1005.         BYTE   HdrLen;
  1006.     };
  1007.     BYTE ServiceType;
  1008.     WORD TotalLen;
  1009.     WORD ID;
  1010.     union 
  1011.     {
  1012.         WORD   Flags;
  1013.         WORD   FragOff;
  1014.     };
  1015.     BYTE TimeToLive;
  1016.     BYTE Protocol;
  1017.     WORD HdrChksum;
  1018.     DWORD   SrcAddr;
  1019.     DWORD   DstAddr;
  1020.     BYTE Options[0];
  1021. } IP;
  1022. typedef IP * LPIP;
  1023. typedef IP UNALIGNED * ULPIP;
  1024. // Psuedo Header used for CheckSum Calculations
  1025. typedef struct _PSUHDR
  1026.     {
  1027.     DWORD ph_SrcIP;
  1028.     DWORD ph_DstIP;
  1029.     UCHAR ph_Zero;
  1030.     UCHAR ph_Proto;
  1031.     WORD ph_ProtLen;
  1032.     }  PSUHDR;
  1033. typedef PSUHDR UNALIGNED * LPPSUHDR;
  1034. //
  1035. // IP Bitmasks that are useful
  1036. // (and the appropriate bit shifts, as well)
  1037. //
  1038. #define IP_VERSION_MASK ((BYTE) 0xf0)
  1039. #define IP_VERSION_SHIFT (4)
  1040. #define IP_HDRLEN_MASK  ((BYTE) 0x0f)
  1041. #define IP_HDRLEN_SHIFT (0)
  1042. #define IP_PRECEDENCE_MASK ((BYTE) 0xE0)
  1043. #define IP_PRECEDENCE_SHIFT   (5)
  1044. #define IP_TOS_MASK ((BYTE) 0x1E)
  1045. #define IP_TOS_SHIFT   (1)
  1046. #define IP_DELAY_MASK   ((BYTE) 0x10)
  1047. #define IP_THROUGHPUT_MASK ((BYTE) 0x08)
  1048. #define IP_RELIABILITY_MASK   ((BYTE) 0x04)
  1049. #define IP_FLAGS_MASK   ((BYTE) 0xE0)
  1050. #define IP_FLAGS_SHIFT  (13)
  1051. #define IP_DF_MASK   ((BYTE) 0x40)
  1052. #define IP_MF_MASK   ((BYTE) 0x20)
  1053. #define IP_MF_SHIFT     (5)
  1054. #define IP_FRAGOFF_MASK ((WORD) 0x1FFF)
  1055. #define IP_FRAGOFF_SHIFT   (3)
  1056. #define IP_TCC_MASK  ((DWORD) 0xFFFFFF00)
  1057. #define IP_TIME_OPTS_MASK  ((BYTE) 0x0F)
  1058. #define IP_MISS_STNS_MASK  ((BYTE) 0xF0)
  1059. #define IP_TIME_OPTS_SHIFT (0)
  1060. #define IP_MISS_STNS_SHIFT  (4)
  1061. //
  1062. // Offset to checksum field in ip header
  1063. //
  1064. #define IP_CHKSUM_OFF   10
  1065. INLINE BYTE IP_Version(ULPIP pIP)
  1066. {
  1067.     return (pIP->Version & IP_VERSION_MASK) >> IP_VERSION_SHIFT;
  1068. }
  1069. INLINE DWORD IP_HdrLen(ULPIP pIP)
  1070. {
  1071.     return ((pIP->HdrLen & IP_HDRLEN_MASK) >> IP_HDRLEN_SHIFT) << 2;
  1072. }
  1073. INLINE WORD IP_FragOff(ULPIP pIP)
  1074. {
  1075.     return (XCHG(pIP->FragOff) & IP_FRAGOFF_MASK) << IP_FRAGOFF_SHIFT;
  1076. }
  1077. INLINE DWORD IP_TotalLen(ULPIP pIP)
  1078. {
  1079.     return XCHG(pIP->TotalLen);
  1080. }
  1081. INLINE DWORD IP_MoreFragments(ULPIP pIP)
  1082. {
  1083.     return (pIP->Flags & IP_MF_MASK) >> IP_MF_SHIFT;
  1084. }
  1085. //
  1086. // Well known ports in the TCP/IP protocol (See RFC 1060)
  1087. //
  1088. #define PORT_TCPMUX              1  // TCP Port Service Multiplexer
  1089. #define PORT_RJE                 5  // Remote Job Entry
  1090. #define PORT_ECHO                7  // Echo
  1091. #define PORT_DISCARD             9  // Discard
  1092. #define PORT_USERS              11  // Active users
  1093. #define PORT_DAYTIME            13  // Daytime
  1094. #define PORT_NETSTAT            15  // Netstat
  1095. #define PORT_QUOTE              17  // Quote of the day
  1096. #define PORT_CHARGEN            19  // Character Generator
  1097. #define PORT_FTPDATA            20  // File transfer [default data]
  1098. #define PORT_FTP                21  // File transfer [Control]
  1099. #define PORT_TELNET             23  // Telnet
  1100. #define PORT_SMTP               25  // Simple Mail Transfer
  1101. #define PORT_NSWFE              27  // NSW User System FE
  1102. #define PORT_MSGICP             29  // MSG ICP
  1103. #define PORT_MSGAUTH            31  // MSG Authentication
  1104. #define PORT_DSP                33  // Display Support
  1105. #define PORT_PRTSERVER          35  // any private printer server
  1106. #define PORT_TIME               37  // Time
  1107. #define PORT_RLP                39  // Resource Location Protocol
  1108. #define PORT_GRAPHICS           41  // Graphics
  1109. #define PORT_NAMESERVER         42  // Host Name Server
  1110. #define PORT_NICNAME            43  // Who is
  1111. #define PORT_MPMFLAGS           44  // MPM Flags 
  1112. #define PORT_MPM                45  // Message Processing Module [recv]
  1113. #define PORT_MPMSND             46  // MPM [default send]
  1114. #define PORT_NIFTP              47  // NI FTP
  1115. #define PORT_LOGIN              49  // Login Host Protocol
  1116. #define PORT_LAMAINT            51  // IMP Logical Address Maintenance
  1117. #define PORT_DOMAIN             53  // Domain Name Server
  1118. #define PORT_ISIGL              55  // ISI Graphics Language
  1119. #define PORT_ANYTERMACC         57  // any private terminal access
  1120. #define PORT_ANYFILESYS         59  // any private file service
  1121. #define PORT_NIMAIL             61  // NI Mail
  1122. #define PORT_VIAFTP             63  // VIA Systems - FTP
  1123. #define PORT_TACACSDS           65  // TACACS - Database Service
  1124. #define PORT_BOOTPS             67  // Bootstrap Protocol server
  1125. #define PORT_BOOTPC             68  // Bootstrap Protocol client
  1126. #define PORT_TFTP               69  // Trivial File Transfer
  1127. #define PORT_NETRJS1            71  // Remote Job service
  1128. #define PORT_NETRJS2            72  // Remote Job service
  1129. #define PORT_NETRJS3            73  // Remote Job service
  1130. #define PORT_NETRJS4            74  // Remote Job service
  1131. #define PORT_ANYDIALOUT         75  // any private dial out service
  1132. #define PORT_ANYRJE             77  // any private RJE service
  1133. #define PORT_FINGER             79  // Finger
  1134. #define PORT_HTTP               80  // HTTP (www)
  1135. #define PORT_HOSTS2NS           81  // Hosts2 Name Server
  1136. #define PORT_MITMLDEV1          83  // MIT ML Device
  1137. #define PORT_MITMLDEV2          85  // MIT ML Device
  1138. #define PORT_ANYTERMLINK        87  // any private terminal link
  1139. #define PORT_SUMITTG            89  // SU/MIT Telnet Gateway
  1140. #define PORT_MITDOV             91  // MIT Dover Spooler
  1141. #define PORT_DCP                93  // Device Control Protocol
  1142. #define PORT_SUPDUP             95  // SUPDUP
  1143. #define PORT_SWIFTRVF           97  // Swift Remote Vitural File Protocol
  1144. #define PORT_TACNEWS            98  // TAC News
  1145. #define PORT_METAGRAM           99  // Metagram Relay
  1146. #define PORT_NEWACCT           100  // [Unauthorized use]
  1147. #define PORT_HOSTNAME          101  // NIC Host Name Server
  1148. #define PORT_ISOTSAP           102  // ISO-TSAP
  1149. #define PORT_X400              103  // X400
  1150. #define PORT_X400SND           104  // X400 - SND
  1151. #define PORT_CSNETNS           105  // Mailbox Name Nameserver
  1152. #define PORT_RTELNET           107  // Remote Telnet Service
  1153. #define PORT_POP2              109  // Post Office Protocol - version 2
  1154. #define PORT_POP3              110  // Post Office Protocol - version 3
  1155. #define PORT_SUNRPC            111  // SUN Remote Procedure Call
  1156. #define PORT_AUTH              113  // Authentication
  1157. #define PORT_SFTP              115  // Simple File Transfer Protocol
  1158. #define PORT_UUCPPATH          117  // UUCP Path Service
  1159. #define PORT_NNTP              119  // Network News Transfer Protocol
  1160. #define PORT_ERPC              121  // Encore Expedited Remote Proc. Call
  1161. #define PORT_NTP               123  // Network Time Protocol
  1162. #define PORT_LOCUSMAP          125  // Locus PC-Interface Net Map Sesrver
  1163. #define PORT_LOCUSCON          127  // Locus PC-Interface Conn Server
  1164. #define PORT_PWDGEN            129  // Password Generator Protocol
  1165. #define PORT_CISCOFNA          130  // CISCO FNATIVE
  1166. #define PORT_CISCOTNA          131  // CISCO TNATIVE
  1167. #define PORT_CISCOSYS          132  // CISCO SYSMAINT
  1168. #define PORT_STATSRV           133  // Statistics Service
  1169. #define PORT_INGRESNET         134  // Ingres net service
  1170. #define PORT_LOCSRV            135  // Location Service
  1171. #define PORT_PROFILE           136  // PROFILE Naming System
  1172. #define PORT_NETBIOSNS         137  // NETBIOS Name Service
  1173. #define PORT_NETBIOSDGM        138  // NETBIOS Datagram Service
  1174. #define PORT_NETBIOSSSN        139  // NETBIOS Session Service
  1175. #define PORT_EMFISDATA         140  // EMFIS Data Service
  1176. #define PORT_EMFISCNTL         141  // EMFIS Control Service
  1177. #define PORT_BLIDM             142  // Britton-Lee IDM
  1178. #define PORT_IMAP2             143  // Interim Mail Access Protocol v2
  1179. #define PORT_NEWS              144  // NewS
  1180. #define PORT_UAAC              145  // UAAC protocol
  1181. #define PORT_ISOTP0            146  // ISO-IP0
  1182. #define PORT_ISOIP             147  // ISO-IP
  1183. #define PORT_CRONUS            148  // CRONUS-Support
  1184. #define PORT_AED512            149  // AED 512 Emulation Service
  1185. #define PORT_SQLNET            150  // SQL-NET
  1186. #define PORT_HEMS              151  // HEMS
  1187. #define PORT_BFTP              152  // Background File Transfer Protocol
  1188. #define PORT_SGMP              153  // SGMP
  1189. #define PORT_NETSCPROD         154  // NETSC
  1190. #define PORT_NETSCDEV          155  // NETSC
  1191. #define PORT_SQLSRV            156  // SQL service
  1192. #define PORT_KNETCMP           157  // KNET/VM Command/Message Protocol
  1193. #define PORT_PCMAILSRV         158  // PCMail server
  1194. #define PORT_NSSROUTING        159  // NSS routing
  1195. #define PORT_SGMPTRAPS         160  // SGMP-TRAPS
  1196. #define PORT_SNMP              161  // SNMP
  1197. #define PORT_SNMPTRAP          162  // SNMPTRAP
  1198. #define PORT_CMIPMANAGE        163  // CMIP/TCP Manager
  1199. #define PORT_CMIPAGENT         164  // CMIP/TCP Agent
  1200. #define PORT_XNSCOURIER        165  // Xerox
  1201. #define PORT_SNET              166  // Sirius Systems
  1202. #define PORT_NAMP              167  // NAMP
  1203. #define PORT_RSVD              168  // RSVC
  1204. #define PORT_SEND              169  // SEND
  1205. #define PORT_PRINTSRV          170  // Network Postscript
  1206. #define PORT_MULTIPLEX         171  // Network Innovations Multiples
  1207. #define PORT_CL1               172  // Network Innovations CL/1
  1208. #define PORT_XYPLEXMUX         173  // Xyplex
  1209. #define PORT_MAILQ             174  // MAILQ
  1210. #define PORT_VMNET             175  // VMNET
  1211. #define PORT_GENRADMUX         176  // GENRAD-MUX
  1212. #define PORT_XDMCP             177  // X Display Manager Control Protocol
  1213. #define PORT_NEXTSTEP          178  // NextStep Window Server
  1214. #define PORT_BGP               179  // Border Gateway Protocol
  1215. #define PORT_RIS               180  // Intergraph
  1216. #define PORT_UNIFY             181  // Unify
  1217. #define PORT_UNISYSCAM         182  // Unisys-Cam
  1218. #define PORT_OCBINDER          183  // OCBinder
  1219. #define PORT_OCSERVER          184  // OCServer
  1220. #define PORT_REMOTEKIS         185  // Remote-KIS
  1221. #define PORT_KIS               186  // KIS protocol
  1222. #define PORT_ACI               187  // Application Communication Interface
  1223. #define PORT_MUMPS             188  // MUMPS
  1224. #define PORT_QFT               189  // Queued File Transport
  1225. #define PORT_GACP              190  // Gateway Access Control Protocol
  1226. #define PORT_PROSPERO          191  // Prospero
  1227. #define PORT_OSUNMS            192  // OSU Network Monitoring System
  1228. #define PORT_SRMP              193  // Spider Remote Monitoring Protocol
  1229. #define PORT_IRC               194  // Internet Relay Chat Protocol
  1230. #define PORT_DN6NLMAUD         195  // DNSIX Network Level Module Audit
  1231. #define PORT_DN6SMMRED         196  // DSNIX Session Mgt Module Audit Redirector
  1232. #define PORT_DLS               197  // Directory Location Service
  1233. #define PORT_DLSMON            198  // Directory Location Service Monitor
  1234. #define PORT_ATRMTP            201  // AppleTalk Routing Maintenance
  1235. #define PORT_ATNBP             202  // AppleTalk Name Binding
  1236. #define PORT_AT3               203  // AppleTalk Unused
  1237. #define PORT_ATECHO            204  // AppleTalk Echo
  1238. #define PORT_AT5               205  // AppleTalk Unused
  1239. #define PORT_ATZIS             206  // AppleTalk Zone Information
  1240. #define PORT_AT7               207  // AppleTalk Unused
  1241. #define PORT_AT8               208  // AppleTalk Unused
  1242. #define PORT_SURMEAS           243  // Survey Measurement
  1243. #define PORT_LINK              245  // LINK
  1244. #define PORT_DSP3270           246  // Display Systems Protocol
  1245. #define PORT_LDAP1             389  // LDAP
  1246. #define PORT_ISAKMP            500  // ISAKMP
  1247. #define PORT_REXEC             512  // Remote Process Execution
  1248. #define PORT_RLOGIN            513  // Remote login a la telnet
  1249. #define PORT_RSH               514  // Remote command
  1250. #define PORT_LPD               515  // Line printer spooler - LPD
  1251. #define PORT_RIP               520  // TCP=? / UDP=RIP
  1252. #define PORT_TEMPO             526  // Newdate
  1253. #define PORT_COURIER           530  // rpc
  1254. #define PORT_NETNEWS           532  // READNEWS
  1255. #define PORT_UUCPD             540  // UUCPD
  1256. #define PORT_KLOGIN            543  //
  1257. #define PORT_KSHELL            544  // krcmd
  1258. #define PORT_DSF               555  //
  1259. #define PORT_REMOTEEFS         556  // RFS server
  1260. #define PORT_CHSHELL           562  // chmod
  1261. #define PORT_METER             570  // METER
  1262. #define PORT_PCSERVER          600  // SUN IPC Server
  1263. #define PORT_NQS               607  // NQS
  1264. #define PORT_HMMP_INDICATION   612  //     
  1265. #define PORT_HMMP_OPERATION    613  //     
  1266. #define PORT_MDQS              666  // MDQS
  1267. #define PORT_LPD721            721  // LPD Client (lpd client ports 721 - 731)
  1268. #define PORT_LPD722            722  // LPD Client (see RFC 1179)
  1269. #define PORT_LPD723            723  // LPD Client
  1270. #define PORT_LPD724            724  // LPD Client
  1271. #define PORT_LPD725            725  // LPD Client
  1272. #define PORT_LPD726            726  // LPD Client
  1273. #define PORT_LPD727            727  // LPD Client
  1274. #define PORT_LPD728            728  // LPD Client
  1275. #define PORT_LPD729            729  // LPD Client
  1276. #define PORT_LPD730            730  // LPD Client
  1277. #define PORT_LPD731            731  // LPD Client
  1278. #define PORT_RFILE             750  // RFILE
  1279. #define PORT_PUMP              751  // PUMP
  1280. #define PORT_QRH               752  // QRH
  1281. #define PORT_RRH               753  // RRH
  1282. #define PORT_TELL              754  // TELL
  1283. #define PORT_NLOGIN            758  // NLOGIN
  1284. #define PORT_CON               759  // CON
  1285. #define PORT_NS                760  // NS
  1286. #define PORT_RXE               761  // RXE
  1287. #define PORT_QUOTAD            762  // QUOTAD
  1288. #define PORT_CYCLESERV         763  // CYCLESERV
  1289. #define PORT_OMSERV            764  // OMSERV
  1290. #define PORT_WEBSTER           765  // WEBSTER
  1291. #define PORT_PHONEBOOK         767  // PHONE
  1292. #define PORT_VID               769  // VID
  1293. #define PORT_RTIP              771  // RTIP
  1294. #define PORT_CYCLESERV2        772  // CYCLESERV-2
  1295. #define PORT_SUBMIT            773  // submit
  1296. #define PORT_RPASSWD           774  // RPASSWD
  1297. #define PORT_ENTOMB            775  // ENTOMB
  1298. #define PORT_WPAGES            776  // WPAGES
  1299. #define PORT_WPGS              780  // wpgs
  1300. #define PORT_MDBSDAEMON        800  // MDBS DAEMON
  1301. #define PORT_DEVICE            801  // DEVICE
  1302. #define PORT_MAITRD            997  // MAITRD
  1303. #define PORT_BUSBOY            998  // BUSBOY
  1304. #define PORT_GARCON            999  // GARCON
  1305. #define PORT_NFS              2049  // NFS
  1306. #define PORT_LDAP2            3268  // LDAP
  1307. #define PORT_PPTP             5678  // PPTP
  1308. //=============================================================================
  1309. //=============================================================================
  1310. // (NMIcmpStructs.h)
  1311. //=============================================================================
  1312. //=============================================================================
  1313. //
  1314. // ICMP Frame Structure
  1315. //
  1316. typedef struct _RequestReplyFields
  1317.     {
  1318.     WORD ID;
  1319.     WORD SeqNo;
  1320.     }  ReqReply;
  1321. typedef struct _ParameterProblemFields
  1322.     {
  1323.     BYTE Pointer;
  1324.     BYTE junk[ 3 ];
  1325.     }  ParmProb;
  1326. typedef struct _TimestampFields
  1327.     {
  1328.     DWORD tsOrig;
  1329.     DWORD tsRecv;
  1330.     DWORD tsXmit;
  1331.     }  TS;
  1332. typedef struct _RouterAnnounceHeaderFields
  1333.     {
  1334.     BYTE NumAddrs;
  1335.     BYTE AddrEntrySize;
  1336.     WORD Lifetime;
  1337.     }  RouterAH;
  1338. typedef struct _RouterAnnounceEntry
  1339.     {
  1340.     DWORD Address;
  1341.     DWORD PreferenceLevel;
  1342.     }  RouterAE;
  1343. typedef struct _ICMP 
  1344. {
  1345.    BYTE Type;
  1346.    BYTE Code;
  1347.    WORD Checksum;
  1348.    union
  1349.    {
  1350.       DWORD    Unused;
  1351.       DWORD    Address;
  1352.       ReqReply RR;
  1353.       ParmProb PP;
  1354.       RouterAH RAH;     
  1355.    };
  1356.    union
  1357.    {
  1358.       TS       Time;
  1359.       IP       IP;
  1360.       RouterAE RAE[0];
  1361.    };
  1362. } ICMP;
  1363. typedef ICMP * LPICMP;
  1364. typedef ICMP UNALIGNED * ULPICMP;
  1365. #define ICMP_HEADER_LENGTH ( 8 )
  1366. // # of *BYTES* of IP data to attach to
  1367. // datagram in addition to IP header
  1368. #define ICMP_IP_DATA_LENGTH ( 8 )
  1369. //
  1370. // ICMP Packet Types
  1371. //
  1372. #define ECHO_REPLY ( 0 )
  1373. #define DESTINATION_UNREACHABLE ( 3 )
  1374. #define SOURCE_QUENCH ( 4 )
  1375. #define REDIRECT ( 5 )
  1376. #define ECHO ( 8 )
  1377. #define ROUTER_ADVERTISEMENT ( 9 )
  1378. #define ROUTER_SOLICITATION ( 10 )
  1379. #define TIME_EXCEEDED ( 11 )
  1380. #define PARAMETER_PROBLEM ( 12 )
  1381. #define TIMESTAMP ( 13 )
  1382. #define TIMESTAMP_REPLY ( 14 )
  1383. #define INFORMATION_REQUEST ( 15 )
  1384. #define INFORMATION_REPLY ( 16 )
  1385. #define ADDRESS_MASK_REQUEST ( 17 )
  1386. #define ADDRESS_MASK_REPLY ( 18 )
  1387. //=============================================================================
  1388. //=============================================================================
  1389. // (NMIpxStructs.h)
  1390. //=============================================================================
  1391. //=============================================================================
  1392. //  IPX
  1393. typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_netmon_0000_0024
  1394.     {
  1395.     UCHAR ha_address[ 6 ];
  1396.     }  HOST_ADDRESS;
  1397. typedef struct _IPXADDRESS
  1398.     {
  1399.     ULONG ipx_NetNumber;
  1400.     HOST_ADDRESS ipx_HostAddr;
  1401.     }  IPXADDRESS;
  1402. typedef IPXADDRESS UNALIGNED * PIPXADDRESS;
  1403. typedef struct _NET_ADDRESS
  1404.     {
  1405.     IPXADDRESS na_IPXAddr;
  1406.     USHORT na_socket;
  1407.     }  NET_ADDRESS;
  1408. typedef NET_ADDRESS UNALIGNED * UPNET_ADDRESS;
  1409. // IPX Internetwork Packet eXchange Protocol Header.
  1410. typedef /* [public][public] */ struct __MIDL___MIDL_itf_netmon_0000_0025
  1411.     {
  1412.     USHORT ipx_checksum;
  1413.     USHORT ipx_length;
  1414.     UCHAR ipx_xport_control;
  1415.     UCHAR ipx_packet_type;
  1416.     NET_ADDRESS ipx_dest;
  1417.     NET_ADDRESS ipx_source;
  1418.     }  IPX_HDR;
  1419. typedef IPX_HDR UNALIGNED * ULPIPX_HDR;
  1420. //  SPX - Sequenced Packet Protocol
  1421. typedef struct _SPX_HDR
  1422.     {
  1423.     IPX_HDR spx_idp_hdr;
  1424.     UCHAR spx_conn_ctrl;
  1425.     UCHAR spx_data_type;
  1426.     USHORT spx_src_conn_id;
  1427.     USHORT spx_dest_conn_id;
  1428.     USHORT spx_sequence_num;
  1429.     USHORT spx_ack_num;
  1430.     USHORT spx_alloc_num;
  1431.     }  SPX_HDR;
  1432. typedef SPX_HDR UNALIGNED *PSPX_HDR;
  1433. //=============================================================================
  1434. //=============================================================================
  1435. // (NMTcpStructs.h)
  1436. //=============================================================================
  1437. //=============================================================================
  1438. //
  1439. // TCP Packet Structure
  1440. //
  1441. typedef struct _TCP
  1442.     {
  1443.     WORD SrcPort;
  1444.     WORD DstPort;
  1445.     DWORD SeqNum;
  1446.     DWORD AckNum;
  1447.     BYTE DataOff;
  1448.     BYTE Flags;
  1449.     WORD Window;
  1450.     WORD Chksum;
  1451.     WORD UrgPtr;
  1452.     }  TCP;
  1453. typedef TCP *LPTCP;
  1454. typedef TCP UNALIGNED * ULPTCP;
  1455. INLINE DWORD TCP_HdrLen(ULPTCP pTCP)
  1456. {
  1457.     return (pTCP->DataOff & 0xf0) >> 2;
  1458. }
  1459. INLINE DWORD TCP_SrcPort(ULPTCP pTCP)
  1460. {
  1461.     return XCHG(pTCP->SrcPort);
  1462. }
  1463. INLINE DWORD TCP_DstPort(ULPTCP pTCP)
  1464. {
  1465.     return XCHG(pTCP->DstPort);
  1466. }
  1467. //
  1468. // TCP Option Opcodes
  1469. //
  1470. #define TCP_OPTION_ENDOFOPTIONS ( 0 )
  1471. #define TCP_OPTION_NOP ( 1 )
  1472. #define TCP_OPTION_MAXSEGSIZE ( 2 )
  1473. #define TCP_OPTION_WSCALE ( 3 )
  1474. #define TCP_OPTION_SACK_PERMITTED ( 4 )
  1475. #define TCP_OPTION_SACK ( 5 )
  1476. #define TCP_OPTION_TIMESTAMPS ( 8 )
  1477. //
  1478. // TCP Flags
  1479. //
  1480. #define TCP_FLAG_URGENT ( 0x20 )
  1481. #define TCP_FLAG_ACK ( 0x10 )
  1482. #define TCP_FLAG_PUSH ( 0x8 )
  1483. #define TCP_FLAG_RESET ( 0x4 )
  1484. #define TCP_FLAG_SYN ( 0x2 )
  1485. #define TCP_FLAG_FIN ( 0x1 )
  1486. //
  1487. // TCP Field Masks
  1488. //
  1489. #define TCP_RESERVED_MASK ( 0xfc0 )
  1490. #pragma pack(pop)
  1491. //****************************************************************************
  1492. //****************************************************************************
  1493. // IDelaydC - used by a consumer to get frames after a capture has completed.
  1494. //****************************************************************************
  1495. //****************************************************************************
  1496. #define DEFAULT_DELAYED_BUFFER_SIZE ( 1 )
  1497. #define USE_DEFAULT_DRIVE_LETTER ( 0 )
  1498. #define RTC_FRAME_SIZE_FULL ( 0 )
  1499. extern RPC_IF_HANDLE __MIDL_itf_netmon_0000_v0_0_c_ifspec;
  1500. extern RPC_IF_HANDLE __MIDL_itf_netmon_0000_v0_0_s_ifspec;
  1501. #ifndef __IDelaydC_INTERFACE_DEFINED__
  1502. #define __IDelaydC_INTERFACE_DEFINED__
  1503. /* interface IDelaydC */
  1504. /* [local][unique][uuid][object] */ 
  1505. EXTERN_C const IID IID_IDelaydC;
  1506. #if defined(__cplusplus) && !defined(CINTERFACE)
  1507.     
  1508.     MIDL_INTERFACE("BFF9C030-B58F-11ce-B5B0-00AA006CB37D")
  1509.     IDelaydC : public IUnknown
  1510.     {
  1511.     public:
  1512.         virtual HRESULT STDMETHODCALLTYPE Connect( 
  1513.             /* [in] */ HBLOB hInputBlob,
  1514.             /* [in] */ LPVOID StatusCallbackProc,
  1515.             /* [in] */ LPVOID UserContext,
  1516.             /* [out] */ HBLOB hErrorBlob) = 0;
  1517.         
  1518.         virtual HRESULT STDMETHODCALLTYPE Disconnect( void) = 0;
  1519.         
  1520.         virtual HRESULT STDMETHODCALLTYPE QueryStatus( 
  1521.             /* [out] */ NETWORKSTATUS *pNetworkStatus) = 0;
  1522.         
  1523.         virtual HRESULT STDMETHODCALLTYPE Configure( 
  1524.             /* [in] */ HBLOB hConfigurationBlob,
  1525.             /* [out] */ HBLOB hErrorBlob) = 0;
  1526.         
  1527.         virtual HRESULT STDMETHODCALLTYPE Start( 
  1528.             /* [out] */ char *pFileName) = 0;
  1529.         
  1530.         virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  1531.         
  1532.         virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  1533.         
  1534.         virtual HRESULT STDMETHODCALLTYPE Stop( 
  1535.             /* [out] */ LPSTATISTICS lpStats) = 0;
  1536.         
  1537.         virtual HRESULT STDMETHODCALLTYPE GetControlState( 
  1538.             /* [out] */ BOOL *IsRunnning,
  1539.             /* [out] */ BOOL *IsPaused) = 0;
  1540.         
  1541.         virtual HRESULT STDMETHODCALLTYPE GetTotalStatistics( 
  1542.             /* [out] */ LPSTATISTICS lpStats,
  1543.             /* [in] */ BOOL fClearAfterReading) = 0;
  1544.         
  1545.         virtual HRESULT STDMETHODCALLTYPE GetConversationStatistics( 
  1546.             /* [out] */ DWORD *nSessions,
  1547.             /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  1548.             /* [out] */ DWORD *nStations,
  1549.             /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  1550.             /* [in] */ BOOL fClearAfterReading) = 0;
  1551.         
  1552.         virtual HRESULT STDMETHODCALLTYPE InsertSpecialFrame( 
  1553.             /* [in] */ DWORD FrameType,
  1554.             /* [in] */ DWORD Flags,
  1555.             /* [in] */ BYTE *pUserData,
  1556.             /* [in] */ DWORD UserDataLength) = 0;
  1557.         
  1558.         virtual HRESULT STDMETHODCALLTYPE QueryStations( 
  1559.             /* [out][in] */ QUERYTABLE *lpQueryTable) = 0;
  1560.         
  1561.     };
  1562.     
  1563. #else  /* C style interface */
  1564.     typedef struct IDelaydCVtbl
  1565.     {
  1566.         BEGIN_INTERFACE
  1567.         
  1568.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1569.             IDelaydC * This,
  1570.             /* [in] */ REFIID riid,
  1571.             /* [iid_is][out] */ void **ppvObject);
  1572.         
  1573.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1574.             IDelaydC * This);
  1575.         
  1576.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1577.             IDelaydC * This);
  1578.         
  1579.         HRESULT ( STDMETHODCALLTYPE *Connect )( 
  1580.             IDelaydC * This,
  1581.             /* [in] */ HBLOB hInputBlob,
  1582.             /* [in] */ LPVOID StatusCallbackProc,
  1583.             /* [in] */ LPVOID UserContext,
  1584.             /* [out] */ HBLOB hErrorBlob);
  1585.         
  1586.         HRESULT ( STDMETHODCALLTYPE *Disconnect )( 
  1587.             IDelaydC * This);
  1588.         
  1589.         HRESULT ( STDMETHODCALLTYPE *QueryStatus )( 
  1590.             IDelaydC * This,
  1591.             /* [out] */ NETWORKSTATUS *pNetworkStatus);
  1592.         
  1593.         HRESULT ( STDMETHODCALLTYPE *Configure )( 
  1594.             IDelaydC * This,
  1595.             /* [in] */ HBLOB hConfigurationBlob,
  1596.             /* [out] */ HBLOB hErrorBlob);
  1597.         
  1598.         HRESULT ( STDMETHODCALLTYPE *Start )( 
  1599.             IDelaydC * This,
  1600.             /* [out] */ char *pFileName);
  1601.         
  1602.         HRESULT ( STDMETHODCALLTYPE *Pause )( 
  1603.             IDelaydC * This);
  1604.         
  1605.         HRESULT ( STDMETHODCALLTYPE *Resume )( 
  1606.             IDelaydC * This);
  1607.         
  1608.         HRESULT ( STDMETHODCALLTYPE *Stop )( 
  1609.             IDelaydC * This,
  1610.             /* [out] */ LPSTATISTICS lpStats);
  1611.         
  1612.         HRESULT ( STDMETHODCALLTYPE *GetControlState )( 
  1613.             IDelaydC * This,
  1614.             /* [out] */ BOOL *IsRunnning,
  1615.             /* [out] */ BOOL *IsPaused);
  1616.         
  1617.         HRESULT ( STDMETHODCALLTYPE *GetTotalStatistics )( 
  1618.             IDelaydC * This,
  1619.             /* [out] */ LPSTATISTICS lpStats,
  1620.             /* [in] */ BOOL fClearAfterReading);
  1621.         
  1622.         HRESULT ( STDMETHODCALLTYPE *GetConversationStatistics )( 
  1623.             IDelaydC * This,
  1624.             /* [out] */ DWORD *nSessions,
  1625.             /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  1626.             /* [out] */ DWORD *nStations,
  1627.             /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  1628.             /* [in] */ BOOL fClearAfterReading);
  1629.         
  1630.         HRESULT ( STDMETHODCALLTYPE *InsertSpecialFrame )( 
  1631.             IDelaydC * This,
  1632.             /* [in] */ DWORD FrameType,
  1633.             /* [in] */ DWORD Flags,
  1634.             /* [in] */ BYTE *pUserData,
  1635.             /* [in] */ DWORD UserDataLength);
  1636.         
  1637.         HRESULT ( STDMETHODCALLTYPE *QueryStations )( 
  1638.             IDelaydC * This,
  1639.             /* [out][in] */ QUERYTABLE *lpQueryTable);
  1640.         
  1641.         END_INTERFACE
  1642.     } IDelaydCVtbl;
  1643.     interface IDelaydC
  1644.     {
  1645.         CONST_VTBL struct IDelaydCVtbl *lpVtbl;
  1646.     };
  1647.     
  1648. #ifdef COBJMACROS
  1649. #define IDelaydC_QueryInterface(This,riid,ppvObject)
  1650.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1651. #define IDelaydC_AddRef(This)
  1652.     (This)->lpVtbl -> AddRef(This)
  1653. #define IDelaydC_Release(This)
  1654.     (This)->lpVtbl -> Release(This)
  1655. #define IDelaydC_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
  1656.     (This)->lpVtbl -> Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
  1657. #define IDelaydC_Disconnect(This)
  1658.     (This)->lpVtbl -> Disconnect(This)
  1659. #define IDelaydC_QueryStatus(This,pNetworkStatus)
  1660.     (This)->lpVtbl -> QueryStatus(This,pNetworkStatus)
  1661. #define IDelaydC_Configure(This,hConfigurationBlob,hErrorBlob)
  1662.     (This)->lpVtbl -> Configure(This,hConfigurationBlob,hErrorBlob)
  1663. #define IDelaydC_Start(This,pFileName)
  1664.     (This)->lpVtbl -> Start(This,pFileName)
  1665. #define IDelaydC_Pause(This)
  1666.     (This)->lpVtbl -> Pause(This)
  1667. #define IDelaydC_Resume(This)
  1668.     (This)->lpVtbl -> Resume(This)
  1669. #define IDelaydC_Stop(This,lpStats)
  1670.     (This)->lpVtbl -> Stop(This,lpStats)
  1671. #define IDelaydC_GetControlState(This,IsRunnning,IsPaused)
  1672.     (This)->lpVtbl -> GetControlState(This,IsRunnning,IsPaused)
  1673. #define IDelaydC_GetTotalStatistics(This,lpStats,fClearAfterReading)
  1674.     (This)->lpVtbl -> GetTotalStatistics(This,lpStats,fClearAfterReading)
  1675. #define IDelaydC_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
  1676.     (This)->lpVtbl -> GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
  1677. #define IDelaydC_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
  1678.     (This)->lpVtbl -> InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
  1679. #define IDelaydC_QueryStations(This,lpQueryTable)
  1680.     (This)->lpVtbl -> QueryStations(This,lpQueryTable)
  1681. #endif /* COBJMACROS */
  1682. #endif  /* C style interface */
  1683. HRESULT STDMETHODCALLTYPE IDelaydC_Connect_Proxy( 
  1684.     IDelaydC * This,
  1685.     /* [in] */ HBLOB hInputBlob,
  1686.     /* [in] */ LPVOID StatusCallbackProc,
  1687.     /* [in] */ LPVOID UserContext,
  1688.     /* [out] */ HBLOB hErrorBlob);
  1689. void __RPC_STUB IDelaydC_Connect_Stub(
  1690.     IRpcStubBuffer *This,
  1691.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1692.     PRPC_MESSAGE _pRpcMessage,
  1693.     DWORD *_pdwStubPhase);
  1694. HRESULT STDMETHODCALLTYPE IDelaydC_Disconnect_Proxy( 
  1695.     IDelaydC * This);
  1696. void __RPC_STUB IDelaydC_Disconnect_Stub(
  1697.     IRpcStubBuffer *This,
  1698.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1699.     PRPC_MESSAGE _pRpcMessage,
  1700.     DWORD *_pdwStubPhase);
  1701. HRESULT STDMETHODCALLTYPE IDelaydC_QueryStatus_Proxy( 
  1702.     IDelaydC * This,
  1703.     /* [out] */ NETWORKSTATUS *pNetworkStatus);
  1704. void __RPC_STUB IDelaydC_QueryStatus_Stub(
  1705.     IRpcStubBuffer *This,
  1706.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1707.     PRPC_MESSAGE _pRpcMessage,
  1708.     DWORD *_pdwStubPhase);
  1709. HRESULT STDMETHODCALLTYPE IDelaydC_Configure_Proxy( 
  1710.     IDelaydC * This,
  1711.     /* [in] */ HBLOB hConfigurationBlob,
  1712.     /* [out] */ HBLOB hErrorBlob);
  1713. void __RPC_STUB IDelaydC_Configure_Stub(
  1714.     IRpcStubBuffer *This,
  1715.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1716.     PRPC_MESSAGE _pRpcMessage,
  1717.     DWORD *_pdwStubPhase);
  1718. HRESULT STDMETHODCALLTYPE IDelaydC_Start_Proxy( 
  1719.     IDelaydC * This,
  1720.     /* [out] */ char *pFileName);
  1721. void __RPC_STUB IDelaydC_Start_Stub(
  1722.     IRpcStubBuffer *This,
  1723.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1724.     PRPC_MESSAGE _pRpcMessage,
  1725.     DWORD *_pdwStubPhase);
  1726. HRESULT STDMETHODCALLTYPE IDelaydC_Pause_Proxy( 
  1727.     IDelaydC * This);
  1728. void __RPC_STUB IDelaydC_Pause_Stub(
  1729.     IRpcStubBuffer *This,
  1730.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1731.     PRPC_MESSAGE _pRpcMessage,
  1732.     DWORD *_pdwStubPhase);
  1733. HRESULT STDMETHODCALLTYPE IDelaydC_Resume_Proxy( 
  1734.     IDelaydC * This);
  1735. void __RPC_STUB IDelaydC_Resume_Stub(
  1736.     IRpcStubBuffer *This,
  1737.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1738.     PRPC_MESSAGE _pRpcMessage,
  1739.     DWORD *_pdwStubPhase);
  1740. HRESULT STDMETHODCALLTYPE IDelaydC_Stop_Proxy( 
  1741.     IDelaydC * This,
  1742.     /* [out] */ LPSTATISTICS lpStats);
  1743. void __RPC_STUB IDelaydC_Stop_Stub(
  1744.     IRpcStubBuffer *This,
  1745.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1746.     PRPC_MESSAGE _pRpcMessage,
  1747.     DWORD *_pdwStubPhase);
  1748. HRESULT STDMETHODCALLTYPE IDelaydC_GetControlState_Proxy( 
  1749.     IDelaydC * This,
  1750.     /* [out] */ BOOL *IsRunnning,
  1751.     /* [out] */ BOOL *IsPaused);
  1752. void __RPC_STUB IDelaydC_GetControlState_Stub(
  1753.     IRpcStubBuffer *This,
  1754.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1755.     PRPC_MESSAGE _pRpcMessage,
  1756.     DWORD *_pdwStubPhase);
  1757. HRESULT STDMETHODCALLTYPE IDelaydC_GetTotalStatistics_Proxy( 
  1758.     IDelaydC * This,
  1759.     /* [out] */ LPSTATISTICS lpStats,
  1760.     /* [in] */ BOOL fClearAfterReading);
  1761. void __RPC_STUB IDelaydC_GetTotalStatistics_Stub(
  1762.     IRpcStubBuffer *This,
  1763.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1764.     PRPC_MESSAGE _pRpcMessage,
  1765.     DWORD *_pdwStubPhase);
  1766. HRESULT STDMETHODCALLTYPE IDelaydC_GetConversationStatistics_Proxy( 
  1767.     IDelaydC * This,
  1768.     /* [out] */ DWORD *nSessions,
  1769.     /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  1770.     /* [out] */ DWORD *nStations,
  1771.     /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  1772.     /* [in] */ BOOL fClearAfterReading);
  1773. void __RPC_STUB IDelaydC_GetConversationStatistics_Stub(
  1774.     IRpcStubBuffer *This,
  1775.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1776.     PRPC_MESSAGE _pRpcMessage,
  1777.     DWORD *_pdwStubPhase);
  1778. HRESULT STDMETHODCALLTYPE IDelaydC_InsertSpecialFrame_Proxy( 
  1779.     IDelaydC * This,
  1780.     /* [in] */ DWORD FrameType,
  1781.     /* [in] */ DWORD Flags,
  1782.     /* [in] */ BYTE *pUserData,
  1783.     /* [in] */ DWORD UserDataLength);
  1784. void __RPC_STUB IDelaydC_InsertSpecialFrame_Stub(
  1785.     IRpcStubBuffer *This,
  1786.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1787.     PRPC_MESSAGE _pRpcMessage,
  1788.     DWORD *_pdwStubPhase);
  1789. HRESULT STDMETHODCALLTYPE IDelaydC_QueryStations_Proxy( 
  1790.     IDelaydC * This,
  1791.     /* [out][in] */ QUERYTABLE *lpQueryTable);
  1792. void __RPC_STUB IDelaydC_QueryStations_Stub(
  1793.     IRpcStubBuffer *This,
  1794.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1795.     PRPC_MESSAGE _pRpcMessage,
  1796.     DWORD *_pdwStubPhase);
  1797. #endif  /* __IDelaydC_INTERFACE_DEFINED__ */
  1798. /* interface __MIDL_itf_netmon_0010 */
  1799. /* [local] */ 
  1800. //****************************************************************************
  1801. //****************************************************************************
  1802. // IESP - used by a consumer to get extended statistics, no frames.
  1803. //****************************************************************************
  1804. //****************************************************************************
  1805. extern RPC_IF_HANDLE __MIDL_itf_netmon_0010_v0_0_c_ifspec;
  1806. extern RPC_IF_HANDLE __MIDL_itf_netmon_0010_v0_0_s_ifspec;
  1807. #ifndef __IESP_INTERFACE_DEFINED__
  1808. #define __IESP_INTERFACE_DEFINED__
  1809. /* interface IESP */
  1810. /* [local][unique][uuid][object] */ 
  1811. EXTERN_C const IID IID_IESP;
  1812. #if defined(__cplusplus) && !defined(CINTERFACE)
  1813.     
  1814.     MIDL_INTERFACE("E99A04AA-AB95-11d0-BE96-00A0C94989DE")
  1815.     IESP : public IUnknown
  1816.     {
  1817.     public:
  1818.         virtual HRESULT STDMETHODCALLTYPE Connect( 
  1819.             /* [in] */ HBLOB hInputBlob,
  1820.             /* [in] */ LPVOID StatusCallbackProc,
  1821.             /* [in] */ LPVOID UserContext,
  1822.             /* [out] */ HBLOB hErrorBlob) = 0;
  1823.         
  1824.         virtual HRESULT STDMETHODCALLTYPE Disconnect( void) = 0;
  1825.         
  1826.         virtual HRESULT STDMETHODCALLTYPE QueryStatus( 
  1827.             /* [out] */ NETWORKSTATUS *pNetworkStatus) = 0;
  1828.         
  1829.         virtual HRESULT STDMETHODCALLTYPE Configure( 
  1830.             /* [in] */ HBLOB hConfigurationBlob,
  1831.             /* [out] */ HBLOB hErrorBlob) = 0;
  1832.         
  1833.         virtual HRESULT STDMETHODCALLTYPE Start( 
  1834.             /* [out][string] */ char *pFileName) = 0;
  1835.         
  1836.         virtual HRESULT STDMETHODCALLTYPE Pause( 
  1837.             /* [out] */ LPSTATISTICS lpStats) = 0;
  1838.         
  1839.         virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  1840.         
  1841.         virtual HRESULT STDMETHODCALLTYPE Stop( 
  1842.             /* [out] */ LPSTATISTICS lpStats) = 0;
  1843.         
  1844.         virtual HRESULT STDMETHODCALLTYPE GetControlState( 
  1845.             /* [out] */ BOOL *IsRunnning,
  1846.             /* [out] */ BOOL *IsPaused) = 0;
  1847.         
  1848.         virtual HRESULT STDMETHODCALLTYPE QueryStations( 
  1849.             /* [out][in] */ QUERYTABLE *lpQueryTable) = 0;
  1850.         
  1851.     };
  1852.     
  1853. #else  /* C style interface */
  1854.     typedef struct IESPVtbl
  1855.     {
  1856.         BEGIN_INTERFACE
  1857.         
  1858.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1859.             IESP * This,
  1860.             /* [in] */ REFIID riid,
  1861.             /* [iid_is][out] */ void **ppvObject);
  1862.         
  1863.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1864.             IESP * This);
  1865.         
  1866.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1867.             IESP * This);
  1868.         
  1869.         HRESULT ( STDMETHODCALLTYPE *Connect )( 
  1870.             IESP * This,
  1871.             /* [in] */ HBLOB hInputBlob,
  1872.             /* [in] */ LPVOID StatusCallbackProc,
  1873.             /* [in] */ LPVOID UserContext,
  1874.             /* [out] */ HBLOB hErrorBlob);
  1875.         
  1876.         HRESULT ( STDMETHODCALLTYPE *Disconnect )( 
  1877.             IESP * This);
  1878.         
  1879.         HRESULT ( STDMETHODCALLTYPE *QueryStatus )( 
  1880.             IESP * This,
  1881.             /* [out] */ NETWORKSTATUS *pNetworkStatus);
  1882.         
  1883.         HRESULT ( STDMETHODCALLTYPE *Configure )( 
  1884.             IESP * This,
  1885.             /* [in] */ HBLOB hConfigurationBlob,
  1886.             /* [out] */ HBLOB hErrorBlob);
  1887.         
  1888.         HRESULT ( STDMETHODCALLTYPE *Start )( 
  1889.             IESP * This,
  1890.             /* [out][string] */ char *pFileName);
  1891.         
  1892.         HRESULT ( STDMETHODCALLTYPE *Pause )( 
  1893.             IESP * This,
  1894.             /* [out] */ LPSTATISTICS lpStats);
  1895.         
  1896.         HRESULT ( STDMETHODCALLTYPE *Resume )( 
  1897.             IESP * This);
  1898.         
  1899.         HRESULT ( STDMETHODCALLTYPE *Stop )( 
  1900.             IESP * This,
  1901.             /* [out] */ LPSTATISTICS lpStats);
  1902.         
  1903.         HRESULT ( STDMETHODCALLTYPE *GetControlState )( 
  1904.             IESP * This,
  1905.             /* [out] */ BOOL *IsRunnning,
  1906.             /* [out] */ BOOL *IsPaused);
  1907.         
  1908.         HRESULT ( STDMETHODCALLTYPE *QueryStations )( 
  1909.             IESP * This,
  1910.             /* [out][in] */ QUERYTABLE *lpQueryTable);
  1911.         
  1912.         END_INTERFACE
  1913.     } IESPVtbl;
  1914.     interface IESP
  1915.     {
  1916.         CONST_VTBL struct IESPVtbl *lpVtbl;
  1917.     };
  1918.     
  1919. #ifdef COBJMACROS
  1920. #define IESP_QueryInterface(This,riid,ppvObject)
  1921.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1922. #define IESP_AddRef(This)
  1923.     (This)->lpVtbl -> AddRef(This)
  1924. #define IESP_Release(This)
  1925.     (This)->lpVtbl -> Release(This)
  1926. #define IESP_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
  1927.     (This)->lpVtbl -> Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
  1928. #define IESP_Disconnect(This)
  1929.     (This)->lpVtbl -> Disconnect(This)
  1930. #define IESP_QueryStatus(This,pNetworkStatus)
  1931.     (This)->lpVtbl -> QueryStatus(This,pNetworkStatus)
  1932. #define IESP_Configure(This,hConfigurationBlob,hErrorBlob)
  1933.     (This)->lpVtbl -> Configure(This,hConfigurationBlob,hErrorBlob)
  1934. #define IESP_Start(This,pFileName)
  1935.     (This)->lpVtbl -> Start(This,pFileName)
  1936. #define IESP_Pause(This,lpStats)
  1937.     (This)->lpVtbl -> Pause(This,lpStats)
  1938. #define IESP_Resume(This)
  1939.     (This)->lpVtbl -> Resume(This)
  1940. #define IESP_Stop(This,lpStats)
  1941.     (This)->lpVtbl -> Stop(This,lpStats)
  1942. #define IESP_GetControlState(This,IsRunnning,IsPaused)
  1943.     (This)->lpVtbl -> GetControlState(This,IsRunnning,IsPaused)
  1944. #define IESP_QueryStations(This,lpQueryTable)
  1945.     (This)->lpVtbl -> QueryStations(This,lpQueryTable)
  1946. #endif /* COBJMACROS */
  1947. #endif  /* C style interface */
  1948. HRESULT STDMETHODCALLTYPE IESP_Connect_Proxy( 
  1949.     IESP * This,
  1950.     /* [in] */ HBLOB hInputBlob,
  1951.     /* [in] */ LPVOID StatusCallbackProc,
  1952.     /* [in] */ LPVOID UserContext,
  1953.     /* [out] */ HBLOB hErrorBlob);
  1954. void __RPC_STUB IESP_Connect_Stub(
  1955.     IRpcStubBuffer *This,
  1956.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1957.     PRPC_MESSAGE _pRpcMessage,
  1958.     DWORD *_pdwStubPhase);
  1959. HRESULT STDMETHODCALLTYPE IESP_Disconnect_Proxy( 
  1960.     IESP * This);
  1961. void __RPC_STUB IESP_Disconnect_Stub(
  1962.     IRpcStubBuffer *This,
  1963.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1964.     PRPC_MESSAGE _pRpcMessage,
  1965.     DWORD *_pdwStubPhase);
  1966. HRESULT STDMETHODCALLTYPE IESP_QueryStatus_Proxy( 
  1967.     IESP * This,
  1968.     /* [out] */ NETWORKSTATUS *pNetworkStatus);
  1969. void __RPC_STUB IESP_QueryStatus_Stub(
  1970.     IRpcStubBuffer *This,
  1971.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1972.     PRPC_MESSAGE _pRpcMessage,
  1973.     DWORD *_pdwStubPhase);
  1974. HRESULT STDMETHODCALLTYPE IESP_Configure_Proxy( 
  1975.     IESP * This,
  1976.     /* [in] */ HBLOB hConfigurationBlob,
  1977.     /* [out] */ HBLOB hErrorBlob);
  1978. void __RPC_STUB IESP_Configure_Stub(
  1979.     IRpcStubBuffer *This,
  1980.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1981.     PRPC_MESSAGE _pRpcMessage,
  1982.     DWORD *_pdwStubPhase);
  1983. HRESULT STDMETHODCALLTYPE IESP_Start_Proxy( 
  1984.     IESP * This,
  1985.     /* [out][string] */ char *pFileName);
  1986. void __RPC_STUB IESP_Start_Stub(
  1987.     IRpcStubBuffer *This,
  1988.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1989.     PRPC_MESSAGE _pRpcMessage,
  1990.     DWORD *_pdwStubPhase);
  1991. HRESULT STDMETHODCALLTYPE IESP_Pause_Proxy( 
  1992.     IESP * This,
  1993.     /* [out] */ LPSTATISTICS lpStats);
  1994. void __RPC_STUB IESP_Pause_Stub(
  1995.     IRpcStubBuffer *This,
  1996.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1997.     PRPC_MESSAGE _pRpcMessage,
  1998.     DWORD *_pdwStubPhase);
  1999. HRESULT STDMETHODCALLTYPE IESP_Resume_Proxy( 
  2000.     IESP * This);
  2001. void __RPC_STUB IESP_Resume_Stub(
  2002.     IRpcStubBuffer *This,
  2003.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2004.     PRPC_MESSAGE _pRpcMessage,
  2005.     DWORD *_pdwStubPhase);
  2006. HRESULT STDMETHODCALLTYPE IESP_Stop_Proxy( 
  2007.     IESP * This,
  2008.     /* [out] */ LPSTATISTICS lpStats);
  2009. void __RPC_STUB IESP_Stop_Stub(
  2010.     IRpcStubBuffer *This,
  2011.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2012.     PRPC_MESSAGE _pRpcMessage,
  2013.     DWORD *_pdwStubPhase);
  2014. HRESULT STDMETHODCALLTYPE IESP_GetControlState_Proxy( 
  2015.     IESP * This,
  2016.     /* [out] */ BOOL *IsRunnning,
  2017.     /* [out] */ BOOL *IsPaused);
  2018. void __RPC_STUB IESP_GetControlState_Stub(
  2019.     IRpcStubBuffer *This,
  2020.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2021.     PRPC_MESSAGE _pRpcMessage,
  2022.     DWORD *_pdwStubPhase);
  2023. HRESULT STDMETHODCALLTYPE IESP_QueryStations_Proxy( 
  2024.     IESP * This,
  2025.     /* [out][in] */ QUERYTABLE *lpQueryTable);
  2026. void __RPC_STUB IESP_QueryStations_Stub(
  2027.     IRpcStubBuffer *This,
  2028.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2029.     PRPC_MESSAGE _pRpcMessage,
  2030.     DWORD *_pdwStubPhase);
  2031. #endif  /* __IESP_INTERFACE_DEFINED__ */
  2032. /* interface __MIDL_itf_netmon_0012 */
  2033. /* [local] */ 
  2034. //****************************************************************************
  2035. //****************************************************************************
  2036. // IRTC - used by a consumer to get an interface to local entry points
  2037. // necessary to do real time capture processing.  It includes a method
  2038. // for handing a callback to the NPP.
  2039. //****************************************************************************
  2040. //****************************************************************************
  2041. #define DEFAULT_RTC_BUFFER_SIZE ( 0x100000 )
  2042. extern RPC_IF_HANDLE __MIDL_itf_netmon_0012_v0_0_c_ifspec;
  2043. extern RPC_IF_HANDLE __MIDL_itf_netmon_0012_v0_0_s_ifspec;
  2044. #ifndef __IRTC_INTERFACE_DEFINED__
  2045. #define __IRTC_INTERFACE_DEFINED__
  2046. /* interface IRTC */
  2047. /* [local][unique][uuid][object] */ 
  2048. EXTERN_C const IID IID_IRTC;
  2049. #if defined(__cplusplus) && !defined(CINTERFACE)
  2050.     
  2051.     MIDL_INTERFACE("4811EA40-B582-11ce-B5AF-00AA006CB37D")
  2052.     IRTC : public IUnknown
  2053.     {
  2054.     public:
  2055.         virtual HRESULT STDMETHODCALLTYPE Connect( 
  2056.             /* [in] */ HBLOB hInputBlob,
  2057.             /* [in] */ LPVOID StatusCallbackProc,
  2058.             /* [in] */ LPVOID FramesCallbackProc,
  2059.             /* [in] */ LPVOID UserContext,
  2060.             /* [out] */ HBLOB hErrorBlob) = 0;
  2061.         
  2062.         virtual HRESULT STDMETHODCALLTYPE Disconnect( void) = 0;
  2063.         
  2064.         virtual HRESULT STDMETHODCALLTYPE QueryStatus( 
  2065.             /* [out] */ NETWORKSTATUS *pNetworkStatus) = 0;
  2066.         
  2067.         virtual HRESULT STDMETHODCALLTYPE Configure( 
  2068.             /* [in] */ HBLOB hConfigurationBlob,
  2069.             /* [out] */ HBLOB hErrorBlob) = 0;
  2070.         
  2071.         virtual HRESULT STDMETHODCALLTYPE Start( void) = 0;
  2072.         
  2073.         virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  2074.         
  2075.         virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  2076.         
  2077.         virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
  2078.         
  2079.         virtual HRESULT STDMETHODCALLTYPE GetControlState( 
  2080.             /* [out] */ BOOL *IsRunnning,
  2081.             /* [out] */ BOOL *IsPaused) = 0;
  2082.         
  2083.         virtual HRESULT STDMETHODCALLTYPE GetTotalStatistics( 
  2084.             /* [out] */ LPSTATISTICS lpStats,
  2085.             /* [in] */ BOOL fClearAfterReading) = 0;
  2086.         
  2087.         virtual HRESULT STDMETHODCALLTYPE GetConversationStatistics( 
  2088.             /* [out] */ DWORD *nSessions,
  2089.             /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  2090.             /* [out] */ DWORD *nStations,
  2091.             /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  2092.             /* [in] */ BOOL fClearAfterReading) = 0;
  2093.         
  2094.         virtual HRESULT STDMETHODCALLTYPE InsertSpecialFrame( 
  2095.             /* [in] */ DWORD FrameType,
  2096.             /* [in] */ DWORD Flags,
  2097.             /* [in] */ BYTE *pUserData,
  2098.             /* [in] */ DWORD UserDataLength) = 0;
  2099.         
  2100.         virtual HRESULT STDMETHODCALLTYPE QueryStations( 
  2101.             /* [out][in] */ QUERYTABLE *lpQueryTable) = 0;
  2102.         
  2103.     };
  2104.     
  2105. #else  /* C style interface */
  2106.     typedef struct IRTCVtbl
  2107.     {
  2108.         BEGIN_INTERFACE
  2109.         
  2110.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2111.             IRTC * This,
  2112.             /* [in] */ REFIID riid,
  2113.             /* [iid_is][out] */ void **ppvObject);
  2114.         
  2115.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2116.             IRTC * This);
  2117.         
  2118.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2119.             IRTC * This);
  2120.         
  2121.         HRESULT ( STDMETHODCALLTYPE *Connect )( 
  2122.             IRTC * This,
  2123.             /* [in] */ HBLOB hInputBlob,
  2124.             /* [in] */ LPVOID StatusCallbackProc,
  2125.             /* [in] */ LPVOID FramesCallbackProc,
  2126.             /* [in] */ LPVOID UserContext,
  2127.             /* [out] */ HBLOB hErrorBlob);
  2128.         
  2129.         HRESULT ( STDMETHODCALLTYPE *Disconnect )( 
  2130.             IRTC * This);
  2131.         
  2132.         HRESULT ( STDMETHODCALLTYPE *QueryStatus )( 
  2133.             IRTC * This,
  2134.             /* [out] */ NETWORKSTATUS *pNetworkStatus);
  2135.         
  2136.         HRESULT ( STDMETHODCALLTYPE *Configure )( 
  2137.             IRTC * This,
  2138.             /* [in] */ HBLOB hConfigurationBlob,
  2139.             /* [out] */ HBLOB hErrorBlob);
  2140.         
  2141.         HRESULT ( STDMETHODCALLTYPE *Start )( 
  2142.             IRTC * This);
  2143.         
  2144.         HRESULT ( STDMETHODCALLTYPE *Pause )( 
  2145.             IRTC * This);
  2146.         
  2147.         HRESULT ( STDMETHODCALLTYPE *Resume )( 
  2148.             IRTC * This);
  2149.         
  2150.         HRESULT ( STDMETHODCALLTYPE *Stop )( 
  2151.             IRTC * This);
  2152.         
  2153.         HRESULT ( STDMETHODCALLTYPE *GetControlState )( 
  2154.             IRTC * This,
  2155.             /* [out] */ BOOL *IsRunnning,
  2156.             /* [out] */ BOOL *IsPaused);
  2157.         
  2158.         HRESULT ( STDMETHODCALLTYPE *GetTotalStatistics )( 
  2159.             IRTC * This,
  2160.             /* [out] */ LPSTATISTICS lpStats,
  2161.             /* [in] */ BOOL fClearAfterReading);
  2162.         
  2163.         HRESULT ( STDMETHODCALLTYPE *GetConversationStatistics )( 
  2164.             IRTC * This,
  2165.             /* [out] */ DWORD *nSessions,
  2166.             /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  2167.             /* [out] */ DWORD *nStations,
  2168.             /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  2169.             /* [in] */ BOOL fClearAfterReading);
  2170.         
  2171.         HRESULT ( STDMETHODCALLTYPE *InsertSpecialFrame )( 
  2172.             IRTC * This,
  2173.             /* [in] */ DWORD FrameType,
  2174.             /* [in] */ DWORD Flags,
  2175.             /* [in] */ BYTE *pUserData,
  2176.             /* [in] */ DWORD UserDataLength);
  2177.         
  2178.         HRESULT ( STDMETHODCALLTYPE *QueryStations )( 
  2179.             IRTC * This,
  2180.             /* [out][in] */ QUERYTABLE *lpQueryTable);
  2181.         
  2182.         END_INTERFACE
  2183.     } IRTCVtbl;
  2184.     interface IRTC
  2185.     {
  2186.         CONST_VTBL struct IRTCVtbl *lpVtbl;
  2187.     };
  2188.     
  2189. #ifdef COBJMACROS
  2190. #define IRTC_QueryInterface(This,riid,ppvObject)
  2191.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2192. #define IRTC_AddRef(This)
  2193.     (This)->lpVtbl -> AddRef(This)
  2194. #define IRTC_Release(This)
  2195.     (This)->lpVtbl -> Release(This)
  2196. #define IRTC_Connect(This,hInputBlob,StatusCallbackProc,FramesCallbackProc,UserContext,hErrorBlob)
  2197.     (This)->lpVtbl -> Connect(This,hInputBlob,StatusCallbackProc,FramesCallbackProc,UserContext,hErrorBlob)
  2198. #define IRTC_Disconnect(This)
  2199.     (This)->lpVtbl -> Disconnect(This)
  2200. #define IRTC_QueryStatus(This,pNetworkStatus)
  2201.     (This)->lpVtbl -> QueryStatus(This,pNetworkStatus)
  2202. #define IRTC_Configure(This,hConfigurationBlob,hErrorBlob)
  2203.     (This)->lpVtbl -> Configure(This,hConfigurationBlob,hErrorBlob)
  2204. #define IRTC_Start(This)
  2205.     (This)->lpVtbl -> Start(This)
  2206. #define IRTC_Pause(This)
  2207.     (This)->lpVtbl -> Pause(This)
  2208. #define IRTC_Resume(This)
  2209.     (This)->lpVtbl -> Resume(This)
  2210. #define IRTC_Stop(This)
  2211.     (This)->lpVtbl -> Stop(This)
  2212. #define IRTC_GetControlState(This,IsRunnning,IsPaused)
  2213.     (This)->lpVtbl -> GetControlState(This,IsRunnning,IsPaused)
  2214. #define IRTC_GetTotalStatistics(This,lpStats,fClearAfterReading)
  2215.     (This)->lpVtbl -> GetTotalStatistics(This,lpStats,fClearAfterReading)
  2216. #define IRTC_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
  2217.     (This)->lpVtbl -> GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
  2218. #define IRTC_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
  2219.     (This)->lpVtbl -> InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
  2220. #define IRTC_QueryStations(This,lpQueryTable)
  2221.     (This)->lpVtbl -> QueryStations(This,lpQueryTable)
  2222. #endif /* COBJMACROS */
  2223. #endif  /* C style interface */
  2224. HRESULT STDMETHODCALLTYPE IRTC_Connect_Proxy( 
  2225.     IRTC * This,
  2226.     /* [in] */ HBLOB hInputBlob,
  2227.     /* [in] */ LPVOID StatusCallbackProc,
  2228.     /* [in] */ LPVOID FramesCallbackProc,
  2229.     /* [in] */ LPVOID UserContext,
  2230.     /* [out] */ HBLOB hErrorBlob);
  2231. void __RPC_STUB IRTC_Connect_Stub(
  2232.     IRpcStubBuffer *This,
  2233.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2234.     PRPC_MESSAGE _pRpcMessage,
  2235.     DWORD *_pdwStubPhase);
  2236. HRESULT STDMETHODCALLTYPE IRTC_Disconnect_Proxy( 
  2237.     IRTC * This);
  2238. void __RPC_STUB IRTC_Disconnect_Stub(
  2239.     IRpcStubBuffer *This,
  2240.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2241.     PRPC_MESSAGE _pRpcMessage,
  2242.     DWORD *_pdwStubPhase);
  2243. HRESULT STDMETHODCALLTYPE IRTC_QueryStatus_Proxy( 
  2244.     IRTC * This,
  2245.     /* [out] */ NETWORKSTATUS *pNetworkStatus);
  2246. void __RPC_STUB IRTC_QueryStatus_Stub(
  2247.     IRpcStubBuffer *This,
  2248.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2249.     PRPC_MESSAGE _pRpcMessage,
  2250.     DWORD *_pdwStubPhase);
  2251. HRESULT STDMETHODCALLTYPE IRTC_Configure_Proxy( 
  2252.     IRTC * This,
  2253.     /* [in] */ HBLOB hConfigurationBlob,
  2254.     /* [out] */ HBLOB hErrorBlob);
  2255. void __RPC_STUB IRTC_Configure_Stub(
  2256.     IRpcStubBuffer *This,
  2257.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2258.     PRPC_MESSAGE _pRpcMessage,
  2259.     DWORD *_pdwStubPhase);
  2260. HRESULT STDMETHODCALLTYPE IRTC_Start_Proxy( 
  2261.     IRTC * This);
  2262. void __RPC_STUB IRTC_Start_Stub(
  2263.     IRpcStubBuffer *This,
  2264.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2265.     PRPC_MESSAGE _pRpcMessage,
  2266.     DWORD *_pdwStubPhase);
  2267. HRESULT STDMETHODCALLTYPE IRTC_Pause_Proxy( 
  2268.     IRTC * This);
  2269. void __RPC_STUB IRTC_Pause_Stub(
  2270.     IRpcStubBuffer *This,
  2271.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2272.     PRPC_MESSAGE _pRpcMessage,
  2273.     DWORD *_pdwStubPhase);
  2274. HRESULT STDMETHODCALLTYPE IRTC_Resume_Proxy( 
  2275.     IRTC * This);
  2276. void __RPC_STUB IRTC_Resume_Stub(
  2277.     IRpcStubBuffer *This,
  2278.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2279.     PRPC_MESSAGE _pRpcMessage,
  2280.     DWORD *_pdwStubPhase);
  2281. HRESULT STDMETHODCALLTYPE IRTC_Stop_Proxy( 
  2282.     IRTC * This);
  2283. void __RPC_STUB IRTC_Stop_Stub(
  2284.     IRpcStubBuffer *This,
  2285.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2286.     PRPC_MESSAGE _pRpcMessage,
  2287.     DWORD *_pdwStubPhase);
  2288. HRESULT STDMETHODCALLTYPE IRTC_GetControlState_Proxy( 
  2289.     IRTC * This,
  2290.     /* [out] */ BOOL *IsRunnning,
  2291.     /* [out] */ BOOL *IsPaused);
  2292. void __RPC_STUB IRTC_GetControlState_Stub(
  2293.     IRpcStubBuffer *This,
  2294.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2295.     PRPC_MESSAGE _pRpcMessage,
  2296.     DWORD *_pdwStubPhase);
  2297. HRESULT STDMETHODCALLTYPE IRTC_GetTotalStatistics_Proxy( 
  2298.     IRTC * This,
  2299.     /* [out] */ LPSTATISTICS lpStats,
  2300.     /* [in] */ BOOL fClearAfterReading);
  2301. void __RPC_STUB IRTC_GetTotalStatistics_Stub(
  2302.     IRpcStubBuffer *This,
  2303.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2304.     PRPC_MESSAGE _pRpcMessage,
  2305.     DWORD *_pdwStubPhase);
  2306. HRESULT STDMETHODCALLTYPE IRTC_GetConversationStatistics_Proxy( 
  2307.     IRTC * This,
  2308.     /* [out] */ DWORD *nSessions,
  2309.     /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  2310.     /* [out] */ DWORD *nStations,
  2311.     /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  2312.     /* [in] */ BOOL fClearAfterReading);
  2313. void __RPC_STUB IRTC_GetConversationStatistics_Stub(
  2314.     IRpcStubBuffer *This,
  2315.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2316.     PRPC_MESSAGE _pRpcMessage,
  2317.     DWORD *_pdwStubPhase);
  2318. HRESULT STDMETHODCALLTYPE IRTC_InsertSpecialFrame_Proxy( 
  2319.     IRTC * This,
  2320.     /* [in] */ DWORD FrameType,
  2321.     /* [in] */ DWORD Flags,
  2322.     /* [in] */ BYTE *pUserData,
  2323.     /* [in] */ DWORD UserDataLength);
  2324. void __RPC_STUB IRTC_InsertSpecialFrame_Stub(
  2325.     IRpcStubBuffer *This,
  2326.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2327.     PRPC_MESSAGE _pRpcMessage,
  2328.     DWORD *_pdwStubPhase);
  2329. HRESULT STDMETHODCALLTYPE IRTC_QueryStations_Proxy( 
  2330.     IRTC * This,
  2331.     /* [out][in] */ QUERYTABLE *lpQueryTable);
  2332. void __RPC_STUB IRTC_QueryStations_Stub(
  2333.     IRpcStubBuffer *This,
  2334.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2335.     PRPC_MESSAGE _pRpcMessage,
  2336.     DWORD *_pdwStubPhase);
  2337. #endif  /* __IRTC_INTERFACE_DEFINED__ */
  2338. /* interface __MIDL_itf_netmon_0014 */
  2339. /* [local] */ 
  2340. //****************************************************************************
  2341. //****************************************************************************
  2342. // IStats - used by a consumer to get just statistics, no frames.
  2343. //****************************************************************************
  2344. //****************************************************************************
  2345. extern RPC_IF_HANDLE __MIDL_itf_netmon_0014_v0_0_c_ifspec;
  2346. extern RPC_IF_HANDLE __MIDL_itf_netmon_0014_v0_0_s_ifspec;
  2347. #ifndef __IStats_INTERFACE_DEFINED__
  2348. #define __IStats_INTERFACE_DEFINED__
  2349. /* interface IStats */
  2350. /* [local][unique][uuid][object] */ 
  2351. EXTERN_C const IID IID_IStats;
  2352. #if defined(__cplusplus) && !defined(CINTERFACE)
  2353.     
  2354.     MIDL_INTERFACE("944AD530-B09D-11ce-B59C-00AA006CB37D")
  2355.     IStats : public IUnknown
  2356.     {
  2357.     public:
  2358.         virtual HRESULT STDMETHODCALLTYPE Connect( 
  2359.             /* [in] */ HBLOB hInputBlob,
  2360.             /* [in] */ LPVOID StatusCallbackProc,
  2361.             /* [in] */ LPVOID UserContext,
  2362.             /* [out] */ HBLOB hErrorBlob) = 0;
  2363.         
  2364.         virtual HRESULT STDMETHODCALLTYPE Disconnect( void) = 0;
  2365.         
  2366.         virtual HRESULT STDMETHODCALLTYPE QueryStatus( 
  2367.             /* [out] */ NETWORKSTATUS *pNetworkStatus) = 0;
  2368.         
  2369.         virtual HRESULT STDMETHODCALLTYPE Configure( 
  2370.             /* [in] */ HBLOB hConfigurationBlob,
  2371.             /* [out] */ HBLOB hErrorBlob) = 0;
  2372.         
  2373.         virtual HRESULT STDMETHODCALLTYPE Start( void) = 0;
  2374.         
  2375.         virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  2376.         
  2377.         virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  2378.         
  2379.         virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
  2380.         
  2381.         virtual HRESULT STDMETHODCALLTYPE GetControlState( 
  2382.             /* [out] */ BOOL *IsRunnning,
  2383.             /* [out] */ BOOL *IsPaused) = 0;
  2384.         
  2385.         virtual HRESULT STDMETHODCALLTYPE GetTotalStatistics( 
  2386.             /* [out] */ LPSTATISTICS lpStats,
  2387.             /* [in] */ BOOL fClearAfterReading) = 0;
  2388.         
  2389.         virtual HRESULT STDMETHODCALLTYPE GetConversationStatistics( 
  2390.             /* [out] */ DWORD *nSessions,
  2391.             /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  2392.             /* [out] */ DWORD *nStations,
  2393.             /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  2394.             /* [in] */ BOOL fClearAfterReading) = 0;
  2395.         
  2396.         virtual HRESULT STDMETHODCALLTYPE InsertSpecialFrame( 
  2397.             /* [in] */ DWORD FrameType,
  2398.             /* [in] */ DWORD Flags,
  2399.             /* [in] */ BYTE *pUserData,
  2400.             /* [in] */ DWORD UserDataLength) = 0;
  2401.         
  2402.         virtual HRESULT STDMETHODCALLTYPE QueryStations( 
  2403.             /* [out][in] */ QUERYTABLE *lpQueryTable) = 0;
  2404.         
  2405.     };
  2406.     
  2407. #else  /* C style interface */
  2408.     typedef struct IStatsVtbl
  2409.     {
  2410.         BEGIN_INTERFACE
  2411.         
  2412.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2413.             IStats * This,
  2414.             /* [in] */ REFIID riid,
  2415.             /* [iid_is][out] */ void **ppvObject);
  2416.         
  2417.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2418.             IStats * This);
  2419.         
  2420.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2421.             IStats * This);
  2422.         
  2423.         HRESULT ( STDMETHODCALLTYPE *Connect )( 
  2424.             IStats * This,
  2425.             /* [in] */ HBLOB hInputBlob,
  2426.             /* [in] */ LPVOID StatusCallbackProc,
  2427.             /* [in] */ LPVOID UserContext,
  2428.             /* [out] */ HBLOB hErrorBlob);
  2429.         
  2430.         HRESULT ( STDMETHODCALLTYPE *Disconnect )( 
  2431.             IStats * This);
  2432.         
  2433.         HRESULT ( STDMETHODCALLTYPE *QueryStatus )( 
  2434.             IStats * This,
  2435.             /* [out] */ NETWORKSTATUS *pNetworkStatus);
  2436.         
  2437.         HRESULT ( STDMETHODCALLTYPE *Configure )( 
  2438.             IStats * This,
  2439.             /* [in] */ HBLOB hConfigurationBlob,
  2440.             /* [out] */ HBLOB hErrorBlob);
  2441.         
  2442.         HRESULT ( STDMETHODCALLTYPE *Start )( 
  2443.             IStats * This);
  2444.         
  2445.         HRESULT ( STDMETHODCALLTYPE *Pause )( 
  2446.             IStats * This);
  2447.         
  2448.         HRESULT ( STDMETHODCALLTYPE *Resume )( 
  2449.             IStats * This);
  2450.         
  2451.         HRESULT ( STDMETHODCALLTYPE *Stop )( 
  2452.             IStats * This);
  2453.         
  2454.         HRESULT ( STDMETHODCALLTYPE *GetControlState )( 
  2455.             IStats * This,
  2456.             /* [out] */ BOOL *IsRunnning,
  2457.             /* [out] */ BOOL *IsPaused);
  2458.         
  2459.         HRESULT ( STDMETHODCALLTYPE *GetTotalStatistics )( 
  2460.             IStats * This,
  2461.             /* [out] */ LPSTATISTICS lpStats,
  2462.             /* [in] */ BOOL fClearAfterReading);
  2463.         
  2464.         HRESULT ( STDMETHODCALLTYPE *GetConversationStatistics )( 
  2465.             IStats * This,
  2466.             /* [out] */ DWORD *nSessions,
  2467.             /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  2468.             /* [out] */ DWORD *nStations,
  2469.             /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  2470.             /* [in] */ BOOL fClearAfterReading);
  2471.         
  2472.         HRESULT ( STDMETHODCALLTYPE *InsertSpecialFrame )( 
  2473.             IStats * This,
  2474.             /* [in] */ DWORD FrameType,
  2475.             /* [in] */ DWORD Flags,
  2476.             /* [in] */ BYTE *pUserData,
  2477.             /* [in] */ DWORD UserDataLength);
  2478.         
  2479.         HRESULT ( STDMETHODCALLTYPE *QueryStations )( 
  2480.             IStats * This,
  2481.             /* [out][in] */ QUERYTABLE *lpQueryTable);
  2482.         
  2483.         END_INTERFACE
  2484.     } IStatsVtbl;
  2485.     interface IStats
  2486.     {
  2487.         CONST_VTBL struct IStatsVtbl *lpVtbl;
  2488.     };
  2489.     
  2490. #ifdef COBJMACROS
  2491. #define IStats_QueryInterface(This,riid,ppvObject)
  2492.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2493. #define IStats_AddRef(This)
  2494.     (This)->lpVtbl -> AddRef(This)
  2495. #define IStats_Release(This)
  2496.     (This)->lpVtbl -> Release(This)
  2497. #define IStats_Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
  2498.     (This)->lpVtbl -> Connect(This,hInputBlob,StatusCallbackProc,UserContext,hErrorBlob)
  2499. #define IStats_Disconnect(This)
  2500.     (This)->lpVtbl -> Disconnect(This)
  2501. #define IStats_QueryStatus(This,pNetworkStatus)
  2502.     (This)->lpVtbl -> QueryStatus(This,pNetworkStatus)
  2503. #define IStats_Configure(This,hConfigurationBlob,hErrorBlob)
  2504.     (This)->lpVtbl -> Configure(This,hConfigurationBlob,hErrorBlob)
  2505. #define IStats_Start(This)
  2506.     (This)->lpVtbl -> Start(This)
  2507. #define IStats_Pause(This)
  2508.     (This)->lpVtbl -> Pause(This)
  2509. #define IStats_Resume(This)
  2510.     (This)->lpVtbl -> Resume(This)
  2511. #define IStats_Stop(This)
  2512.     (This)->lpVtbl -> Stop(This)
  2513. #define IStats_GetControlState(This,IsRunnning,IsPaused)
  2514.     (This)->lpVtbl -> GetControlState(This,IsRunnning,IsPaused)
  2515. #define IStats_GetTotalStatistics(This,lpStats,fClearAfterReading)
  2516.     (This)->lpVtbl -> GetTotalStatistics(This,lpStats,fClearAfterReading)
  2517. #define IStats_GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
  2518.     (This)->lpVtbl -> GetConversationStatistics(This,nSessions,lpSessionStats,nStations,lpStationStats,fClearAfterReading)
  2519. #define IStats_InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
  2520.     (This)->lpVtbl -> InsertSpecialFrame(This,FrameType,Flags,pUserData,UserDataLength)
  2521. #define IStats_QueryStations(This,lpQueryTable)
  2522.     (This)->lpVtbl -> QueryStations(This,lpQueryTable)
  2523. #endif /* COBJMACROS */
  2524. #endif  /* C style interface */
  2525. HRESULT STDMETHODCALLTYPE IStats_Connect_Proxy( 
  2526.     IStats * This,
  2527.     /* [in] */ HBLOB hInputBlob,
  2528.     /* [in] */ LPVOID StatusCallbackProc,
  2529.     /* [in] */ LPVOID UserContext,
  2530.     /* [out] */ HBLOB hErrorBlob);
  2531. void __RPC_STUB IStats_Connect_Stub(
  2532.     IRpcStubBuffer *This,
  2533.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2534.     PRPC_MESSAGE _pRpcMessage,
  2535.     DWORD *_pdwStubPhase);
  2536. HRESULT STDMETHODCALLTYPE IStats_Disconnect_Proxy( 
  2537.     IStats * This);
  2538. void __RPC_STUB IStats_Disconnect_Stub(
  2539.     IRpcStubBuffer *This,
  2540.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2541.     PRPC_MESSAGE _pRpcMessage,
  2542.     DWORD *_pdwStubPhase);
  2543. HRESULT STDMETHODCALLTYPE IStats_QueryStatus_Proxy( 
  2544.     IStats * This,
  2545.     /* [out] */ NETWORKSTATUS *pNetworkStatus);
  2546. void __RPC_STUB IStats_QueryStatus_Stub(
  2547.     IRpcStubBuffer *This,
  2548.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2549.     PRPC_MESSAGE _pRpcMessage,
  2550.     DWORD *_pdwStubPhase);
  2551. HRESULT STDMETHODCALLTYPE IStats_Configure_Proxy( 
  2552.     IStats * This,
  2553.     /* [in] */ HBLOB hConfigurationBlob,
  2554.     /* [out] */ HBLOB hErrorBlob);
  2555. void __RPC_STUB IStats_Configure_Stub(
  2556.     IRpcStubBuffer *This,
  2557.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2558.     PRPC_MESSAGE _pRpcMessage,
  2559.     DWORD *_pdwStubPhase);
  2560. HRESULT STDMETHODCALLTYPE IStats_Start_Proxy( 
  2561.     IStats * This);
  2562. void __RPC_STUB IStats_Start_Stub(
  2563.     IRpcStubBuffer *This,
  2564.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2565.     PRPC_MESSAGE _pRpcMessage,
  2566.     DWORD *_pdwStubPhase);
  2567. HRESULT STDMETHODCALLTYPE IStats_Pause_Proxy( 
  2568.     IStats * This);
  2569. void __RPC_STUB IStats_Pause_Stub(
  2570.     IRpcStubBuffer *This,
  2571.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2572.     PRPC_MESSAGE _pRpcMessage,
  2573.     DWORD *_pdwStubPhase);
  2574. HRESULT STDMETHODCALLTYPE IStats_Resume_Proxy( 
  2575.     IStats * This);
  2576. void __RPC_STUB IStats_Resume_Stub(
  2577.     IRpcStubBuffer *This,
  2578.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2579.     PRPC_MESSAGE _pRpcMessage,
  2580.     DWORD *_pdwStubPhase);
  2581. HRESULT STDMETHODCALLTYPE IStats_Stop_Proxy( 
  2582.     IStats * This);
  2583. void __RPC_STUB IStats_Stop_Stub(
  2584.     IRpcStubBuffer *This,
  2585.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2586.     PRPC_MESSAGE _pRpcMessage,
  2587.     DWORD *_pdwStubPhase);
  2588. HRESULT STDMETHODCALLTYPE IStats_GetControlState_Proxy( 
  2589.     IStats * This,
  2590.     /* [out] */ BOOL *IsRunnning,
  2591.     /* [out] */ BOOL *IsPaused);
  2592. void __RPC_STUB IStats_GetControlState_Stub(
  2593.     IRpcStubBuffer *This,
  2594.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2595.     PRPC_MESSAGE _pRpcMessage,
  2596.     DWORD *_pdwStubPhase);
  2597. HRESULT STDMETHODCALLTYPE IStats_GetTotalStatistics_Proxy( 
  2598.     IStats * This,
  2599.     /* [out] */ LPSTATISTICS lpStats,
  2600.     /* [in] */ BOOL fClearAfterReading);
  2601. void __RPC_STUB IStats_GetTotalStatistics_Stub(
  2602.     IRpcStubBuffer *This,
  2603.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2604.     PRPC_MESSAGE _pRpcMessage,
  2605.     DWORD *_pdwStubPhase);
  2606. HRESULT STDMETHODCALLTYPE IStats_GetConversationStatistics_Proxy( 
  2607.     IStats * This,
  2608.     /* [out] */ DWORD *nSessions,
  2609.     /* [size_is][out] */ LPSESSIONSTATS lpSessionStats,
  2610.     /* [out] */ DWORD *nStations,
  2611.     /* [size_is][out] */ LPSTATIONSTATS lpStationStats,
  2612.     /* [in] */ BOOL fClearAfterReading);
  2613. void __RPC_STUB IStats_GetConversationStatistics_Stub(
  2614.     IRpcStubBuffer *This,
  2615.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2616.     PRPC_MESSAGE _pRpcMessage,
  2617.     DWORD *_pdwStubPhase);
  2618. HRESULT STDMETHODCALLTYPE IStats_InsertSpecialFrame_Proxy( 
  2619.     IStats * This,
  2620.     /* [in] */ DWORD FrameType,
  2621.     /* [in] */ DWORD Flags,
  2622.     /* [in] */ BYTE *pUserData,
  2623.     /* [in] */ DWORD UserDataLength);
  2624. void __RPC_STUB IStats_InsertSpecialFrame_Stub(
  2625.     IRpcStubBuffer *This,
  2626.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2627.     PRPC_MESSAGE _pRpcMessage,
  2628.     DWORD *_pdwStubPhase);
  2629. HRESULT STDMETHODCALLTYPE IStats_QueryStations_Proxy( 
  2630.     IStats * This,
  2631.     /* [out][in] */ QUERYTABLE *lpQueryTable);
  2632. void __RPC_STUB IStats_QueryStations_Stub(
  2633.     IRpcStubBuffer *This,
  2634.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2635.     PRPC_MESSAGE _pRpcMessage,
  2636.     DWORD *_pdwStubPhase);
  2637. #endif  /* __IStats_INTERFACE_DEFINED__ */
  2638. /* interface __MIDL_itf_netmon_0016 */
  2639. /* [local] */ 
  2640. #pragma warning(default:4200)
  2641. #pragma pack()
  2642. extern RPC_IF_HANDLE __MIDL_itf_netmon_0016_v0_0_c_ifspec;
  2643. extern RPC_IF_HANDLE __MIDL_itf_netmon_0016_v0_0_s_ifspec;
  2644. /* Additional Prototypes for ALL interfaces */
  2645. /* end of Additional Prototypes */
  2646. #ifdef __cplusplus
  2647. }
  2648. #endif
  2649. #endif