home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / BHTYPES.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  24.7 KB  |  648 lines

  1. //=============================================================================
  2. //  Microsoft (R) Bloodhound (tm). Copyright (C) 1991-1992.
  3. //
  4. //  MODULE: bhTypes.h
  5. //
  6. //  This is the top-level include file for all Bloodhound struct definitions.
  7. //=============================================================================
  8.  
  9. #if !defined(_BHTYPE_)
  10. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  11.  
  12. #define _BHTYPE_
  13.  
  14. #pragma pack(1)
  15.  
  16. //=============================================================================
  17. //  Unaligned base type definitions.
  18. //=============================================================================
  19.  
  20. typedef VOID        UNALIGNED   *ULPVOID;
  21. typedef BYTE        UNALIGNED   *ULPBYTE;
  22. typedef WORD        UNALIGNED   *ULPWORD;
  23. typedef DWORD       UNALIGNED   *ULPDWORD;
  24. typedef CHAR        UNALIGNED   *ULPSTR;
  25. typedef SYSTEMTIME  UNALIGNED   *ULPSYSTEMTIME;
  26.  
  27. //=============================================================================
  28. //  Handle definitions.
  29. //=============================================================================
  30.  
  31. typedef struct _PARSER     *HPARSER;
  32.  
  33. typedef struct _FRAMEDESC  *HFRAME;
  34. typedef struct _CAPTURE    *HCAPTURE;
  35. typedef struct _FILTER     *HFILTER;
  36. typedef struct _ADDRESSDB  *HADDRESSDB;
  37. typedef struct _PROTOCOL   *HPROTOCOL;
  38. typedef DWORD               HPROPERTY;
  39.  
  40. typedef HPROTOCOL          *LPHPROTOCOL;
  41.  
  42. //=============================================================================
  43. //  GetTableSize() -- The following macro is used to calculate the actual
  44. //                    length of Bloodhound variable-length table structures.
  45. //
  46. //  EXAMPLE:
  47. //
  48. //  GetTableSize(PROTOCOLTABLESIZE, ProtocolTable->nProtocols, sizeof(HPROTOCOL))
  49. //=============================================================================
  50.  
  51. #define GetTableSize(TableBaseSize, nElements, ElementSize) ((TableBaseSize) + ((nElements) * (ElementSize)))
  52.  
  53. //=============================================================================
  54. //  Object type identifiers.
  55. //=============================================================================
  56.  
  57. typedef DWORD OBJECTTYPE;
  58.  
  59. #ifndef MAKE_IDENTIFIER
  60. #define MAKE_IDENTIFIER(a, b, c, d)     ((DWORD) MAKELONG(MAKEWORD(a, b), MAKEWORD(c, d)))
  61. #endif
  62.  
  63. #define HANDLE_TYPE_INVALID             MAKE_IDENTIFIER(-1, -1, -1, -1)
  64. #define HANDLE_TYPE_CAPTURE             MAKE_IDENTIFIER('C', 'A', 'P', '$')
  65. #define HANDLE_TYPE_PARSER              MAKE_IDENTIFIER('P', 'S', 'R', '$')
  66. #define HANDLE_TYPE_ADDRESSDB           MAKE_IDENTIFIER('A', 'D', 'R', '$')
  67. #define HANDLE_TYPE_PROTOCOL            MAKE_IDENTIFIER('P', 'R', 'T', '$')
  68. #define HANDLE_TYPE_BUFFER              MAKE_IDENTIFIER('B', 'U', 'F', '$')
  69.  
  70. //=============================================================================
  71. //  Bloodhound constant definitions.
  72. //=============================================================================
  73.  
  74. #define INLINE  __inline
  75. #define BHAPI   WINAPI
  76.  
  77. #define MAX_NAME_LENGTH                 16
  78. #define MAX_ADDR_LENGTH                 6
  79.  
  80. //=============================================================================
  81. //  Ethernet type (ETYPE) constant definitions.
  82. //=============================================================================
  83.  
  84. #define ETYPE_LOOP                      0x9000
  85. #define ETYPE_3COM_NETMAP1              0x9001
  86. #define ETYPE_3COM_NETMAP2              0x9002
  87. #define ETYPE_IBM_RT                    0x80D5
  88. #define ETYPE_NETWARE                   0x8137
  89. #define ETYPE_XNS1                      0x0600
  90. #define ETYPE_XNS2                      0x0807
  91. #define ETYPE_3COM_NBP0                 0x3C00
  92. #define ETYPE_3COM_NBP1                 0x3C01
  93. #define ETYPE_3COM_NBP2                 0x3C02
  94. #define ETYPE_3COM_NBP3                 0x3C03
  95. #define ETYPE_3COM_NBP4                 0x3C04
  96. #define ETYPE_3COM_NBP5                 0x3C05
  97. #define ETYPE_3COM_NBP6                 0x3C06
  98. #define ETYPE_3COM_NBP7                 0x3C07
  99. #define ETYPE_3COM_NBP8                 0x3C08
  100. #define ETYPE_3COM_NBP9                 0x3C09
  101. #define ETYPE_3COM_NBP10                0x3C0A
  102. #define ETYPE_IP                        0x0800
  103. #define ETYPE_ARP1                      0x0806
  104. #define ETYPE_ARP2                      0x0807
  105. #define ETYPE_RARP                      0x8035
  106. #define ETYPE_TRLR0                     0x1000
  107. #define ETYPE_TRLR1                     0x1001
  108. #define ETYPE_TRLR2                     0x1002
  109. #define ETYPE_TRLR3                     0x1003
  110. #define ETYPE_TRLR4                     0x1004
  111. #define ETYPE_TRLR5                     0x1005
  112. #define ETYPE_PUP                       0x0200
  113. #define ETYPE_PUP_ARP                   0x0201
  114. #define ETYPE_APPLETALK_ARP             0x80F3
  115. #define ETYPE_APPLETALK_LAP             0x809B
  116. #define ETYPE_SNMP                      0x814C
  117.  
  118. //=============================================================================
  119. //  LLC (802.2) SAP constant definitions.
  120. //=============================================================================
  121.  
  122. #define SAP_SNAP                        0xAA
  123. #define SAP_BPDU                        0x42
  124. #define SAP_IBM_NM                      0xF4
  125. #define SAP_IBM_NETBIOS                 0xF0
  126. #define SAP_SNA1                        0x04
  127. #define SAP_SNA2                        0x05
  128. #define SAP_SNA3                        0x08
  129. #define SAP_SNA4                        0x0C
  130. #define SAP_NETWARE1                    0x10
  131. #define SAP_NETWARE2                    0xE0
  132. #define SAP_NETWARE3                    0xFE
  133. #define SAP_IP                          0x06
  134. #define SAP_X25                         0x7E
  135. #define SAP_RPL1                        0xF8
  136. #define SAP_RPL2                        0xFC
  137. #define SAP_UB                          0xFA
  138. #define SAP_XNS                         0x80
  139.  
  140. //=============================================================================
  141. //  Property constants
  142. //=============================================================================
  143.  
  144. // data types
  145.  
  146. #define PROP_TYPE_VOID              0x00
  147. #define PROP_TYPE_SUMMARY           0x01
  148. #define PROP_TYPE_BYTE              0x02
  149. #define PROP_TYPE_WORD              0x03
  150. #define PROP_TYPE_DWORD             0x04
  151. #define PROP_TYPE_LARGEINT          0x05
  152. #define PROP_TYPE_ADDR              0x06
  153. #define PROP_TYPE_TIME              0x07
  154. #define PROP_TYPE_STRING            0x08
  155. #define PROP_TYPE_IP_ADDRESS        0x09
  156. #define PROP_TYPE_IPX_ADDRESS       0x0A
  157. #define PROP_TYPE_BYTESWAPPED_WORD  0x0B
  158. #define PROP_TYPE_BYTESWAPPED_DWORD 0x0C
  159. #define PROP_TYPE_TYPED_STRING      0x0D
  160. #define PROP_TYPE_RAW_DATA          0x0E
  161. #define PROP_TYPE_COMMENT           0x0F
  162. #define PROP_TYPE_SRCFRIENDLYNAME   0x10
  163. #define PROP_TYPE_DSTFRIENDLYNAME   0x11
  164. #define PROP_TYPE_TOKENRING_ADDRESS 0x12
  165. #define PROP_TYPE_FDDI_ADDRESS      0x13
  166. #define PROP_TYPE_ETHERNET_ADDRESS  0x14
  167. #define PROP_TYPE_OBJECT_IDENTIFIER    0x15
  168. #define PROP_TYPE_VINES_IP_ADDRESS  0x16
  169. #define PROP_TYPE_VAR_LEN_SMALL_INT 0x17
  170.  
  171. // data qualifiers
  172.  
  173. #define PROP_QUAL_NONE              0x00
  174. #define PROP_QUAL_RANGE             0x01
  175. #define PROP_QUAL_SET               0x02
  176. #define PROP_QUAL_BITFIELD          0x03
  177. #define PROP_QUAL_LABELED_SET       0x04
  178. #define PROP_QUAL_LABELED_BITFIELD  0x08
  179. #define PROP_QUAL_CONST             0x09
  180. #define PROP_QUAL_FLAGS             0x0A
  181. #define PROP_QUAL_ARRAY             0x0B
  182.  
  183. //=============================================================================
  184. //  LARGEINT structure defined in winnt.h
  185. //=============================================================================
  186.  
  187. //typedef struct _LARGEINT
  188. //{
  189. //    ULONG LowLong;
  190. //    LONG  HighLong;
  191. //} LARGEINT;
  192. //
  193.  
  194. typedef LARGE_INTEGER *LPLARGEINT;
  195. typedef LARGE_INTEGER UNALIGNED *ULPLARGEINT;
  196.  
  197. //=============================================================================
  198. //  Range structure.
  199. //=============================================================================
  200.  
  201. typedef struct _RANGE
  202. {
  203.     DWORD   MinValue;
  204.     DWORD   MaxValue;
  205. } RANGE;
  206.  
  207. typedef RANGE *LPRANGE;
  208.  
  209. //=============================================================================
  210. //  LABELED_BYTE structure
  211. //=============================================================================
  212.  
  213. typedef struct _LABELED_BYTE
  214. {
  215.     BYTE    Value;
  216.     LPSTR   Label;
  217. } LABELED_BYTE;
  218.  
  219. typedef LABELED_BYTE *LPLABELED_BYTE;
  220.  
  221. //=============================================================================
  222. //  LABELED_WORD structure
  223. //=============================================================================
  224.  
  225. typedef struct _LABELED_WORD
  226. {
  227.     WORD    Value;
  228.     LPSTR   Label;
  229. } LABELED_WORD;
  230.  
  231. typedef LABELED_WORD *LPLABELED_WORD;
  232.  
  233. //=============================================================================
  234. //  LABELED_DWORD structure
  235. //=============================================================================
  236.  
  237. typedef struct _LABELED_DWORD
  238. {
  239.     DWORD   Value;
  240.     LPSTR   Label;
  241. } LABELED_DWORD;
  242.  
  243. typedef LABELED_DWORD *LPLABELED_DWORD;
  244.  
  245. //=============================================================================
  246. //  LABELED_LARGEINT structure
  247. //=============================================================================
  248.  
  249. typedef struct _LABELED_LARGEINT
  250. {
  251.     LARGE_INTEGER   Value;
  252.     LPSTR           Label;
  253. } LABELED_LARGEINT;
  254.  
  255. typedef LABELED_LARGEINT *LPLABELED_LARGEINT;
  256.  
  257. //=============================================================================
  258. //  LABELED_SYSTEMTIME structure
  259. //=============================================================================
  260.  
  261. typedef struct _LABELED_SYSTEMTIME
  262. {
  263.     SYSTEMTIME      Value;
  264.     LPSTR           Label;
  265. } LABELED_SYSTEMTIME;
  266.  
  267. typedef LABELED_SYSTEMTIME *LPLABELED_SYSTEMTIME;
  268.  
  269. //=============================================================================
  270. //  LABELED_BIT structure
  271. //=============================================================================
  272.  
  273. typedef struct _LABELED_BIT
  274. {
  275.     BYTE    BitNumber;          //... Bit number (starts at 0, upto 256 bits).
  276.     LPSTR   LabelOff;           //... Label for bit = 0
  277.     LPSTR   LabelOn;            //... Label for bit = 1
  278. } LABELED_BIT;
  279.  
  280. typedef LABELED_BIT *LPLABELED_BIT;
  281.  
  282. //=============================================================================
  283. //  TYPED_STRING structure
  284. //=============================================================================
  285.  
  286. #define TYPED_STRING_NORMAL     1
  287. #define TYPED_STRING_UNICODE    2
  288.  
  289. #define TYPED_STRING_EXFLAG     1
  290.  
  291. typedef struct _TYPED_STRING
  292. {
  293.     BYTE    StringType:7;   // defined above
  294.     BYTE    fStringEx:1;    // we are always Ex... so this is how we ExEx
  295.     LPSTR   lpString;       // the actual string
  296.     BYTE    Byte[0];        // if instEx, then the data would go here.
  297. } TYPED_STRING;
  298.  
  299. typedef TYPED_STRING *LPTYPED_STRING;
  300.  
  301. //=============================================================================
  302. //  OBJECT_IDENTIFIER structure
  303. //=============================================================================
  304.  
  305. typedef struct _OBJECT_IDENTIFIER
  306. {
  307.     DWORD   Length;            // Number of identifiers in the OID
  308.     LPDWORD    lpIdentifier;    // Array of Identifiers
  309. } OBJECT_IDENTIFIER;
  310.  
  311. typedef OBJECT_IDENTIFIER *LPOBJECT_IDENTIFIER;
  312.  
  313.  
  314. //=============================================================================
  315. //  Set structure.
  316. //=============================================================================
  317.  
  318. typedef struct _SET
  319. {
  320.     DWORD   nEntries;
  321.  
  322.     union
  323.     {
  324.         //... set of values
  325.  
  326.         LPVOID                  lpVoidTable;                    // set of anything.
  327.         LPBYTE                  lpByteTable;                    // set of bytes
  328.         LPWORD                  lpWordTable;                    // set of words
  329.         LPDWORD                 lpDwordTable;                   // set of dwords
  330.         LPLARGEINT              lpLargeIntTable;                // set of LARGEINT structures
  331.         LPSYSTEMTIME            lpSystemTimeTable;              // set of SYSTEMTIME structures
  332.  
  333.         //... set of labeled values
  334.  
  335.         LPLABELED_BYTE          lpLabeledByteTable;             // set of labeled_byte structs
  336.         LPLABELED_WORD          lpLabeledWordTable;             // set of labeled_word structs
  337.         LPLABELED_DWORD         lpLabeledDwordTable;            // set of labeled_dword structs
  338.         LPLABELED_LARGEINT      lpLabeledLargeIntTable;         // set of Labeled_LARGEINT structs
  339.         LPLABELED_SYSTEMTIME    lpLabeledSystemTimeTable;       // set of labeled_systemtime structs
  340.         LPLABELED_BIT           lpLabeledBit;                   // set of labeled_bit structs.
  341.     };
  342. } SET;
  343.  
  344. typedef SET *LPSET;
  345.  
  346. //=============================================================================
  347. //  String table.
  348. //=============================================================================
  349.  
  350. typedef struct _STRINGTABLE
  351. {
  352.     DWORD           nStrings;               // number LPSTR in table
  353.     LPSTR           String[0];
  354. } STRINGTABLE;
  355.  
  356. typedef STRINGTABLE *LPSTRINGTABLE;
  357.  
  358. #define STRINGTABLE_SIZE    sizeof(STRINGTABLE)
  359.  
  360. //=============================================================================
  361. //  RECOGNIZEDATA structure.
  362. //
  363. //  This structure to keep track of the start of each recognized protocol.
  364. //=============================================================================
  365.  
  366. typedef struct _RECOGNIZEDATA
  367. {
  368.     WORD        ProtocolID;         //... Protocol which was recognized
  369.     WORD        nProtocolOffset;    //... Offset from the start of the frame of the start of this protocol.
  370.     LPVOID      InstData;           //... Opaque, for protocol only.
  371. } RECOGNIZEDATA;
  372.  
  373. typedef RECOGNIZEDATA * LPRECOGNIZEDATA;
  374.  
  375. //=============================================================================
  376. //  RECOGNIZEDATATABLE structure.
  377. //
  378. //  This structure to keep track of the start of each RECOGNIZEDATA structure
  379. //=============================================================================
  380.  
  381. typedef struct _RECOGNIZEDATATABLE
  382. {
  383.     WORD            nRecognizeDatas;    //... number of RECOGNIZEDATA structures
  384.     RECOGNIZEDATA   RecognizeData[0];   //... array of RECOGNIZEDATA structures follows
  385. } RECOGNIZEDATATABLE;
  386.  
  387. typedef RECOGNIZEDATATABLE * LPRECOGNIZEDATATABLE;
  388.  
  389. //=============================================================================
  390. //  Property information structure.
  391. //=============================================================================
  392.  
  393. typedef struct _PROPERTYINFO
  394. {
  395.     HPROPERTY       hProperty;      //... Handle to the property.
  396.     DWORD           Version;        //... Version of property.
  397.     LPSTR           Label;          //... name of property
  398.     LPSTR           Comment;        //... description of property
  399.     BYTE            DataType;       //... data type of property
  400.     BYTE            DataQualifier;  //... data qualifier of property
  401.  
  402.     union
  403.     {
  404.         LPVOID          lpExtendedInfo; //... generic pointer.
  405.         LPRANGE         lpRange;        //... pointer to range
  406.         LPSET           lpSet;          //... pointer to set
  407.         DWORD           Bitmask;        //... bitmask to apply
  408.         DWORD           Value;          //... constant value.
  409.     };
  410.  
  411.     WORD            FormatStringSize;   //... max size to reserve for text description
  412.     LPVOID          InstanceData;       //... property-specific instance data.
  413. } PROPERTYINFO;
  414.  
  415. typedef PROPERTYINFO *LPPROPERTYINFO;
  416.  
  417. #define PROPERTYINFO_SIZE   sizeof(PROPERTYINFO)
  418.  
  419.  
  420. //=============================================================================
  421. //  Property instance Extended structure.
  422. //=============================================================================
  423.  
  424. typedef struct _PROPERTYINSTEX
  425. {
  426.     WORD        Length;         //... length of raw data in frame
  427.     WORD        LengthEx;       //... number of bytes following
  428.     ULPVOID     lpData;         //... pointer to raw data in frame
  429.  
  430.     union
  431.     {
  432.         BYTE            Byte[];     //... table of bytes follows
  433.         WORD            Word[];     //... table of words follows
  434.         DWORD           Dword[];    //... table of Dwords follows
  435.         LARGE_INTEGER   LargeInt[]; //... table of LARGEINT structures to follow
  436.         SYSTEMTIME      SysTime[];  //... table of SYSTEMTIME structures follows
  437.         TYPED_STRING    TypedString;//... a typed_string that may have extended data
  438.     };
  439. } PROPERTYINSTEX;
  440.  
  441. typedef PROPERTYINSTEX *LPPROPERTYINSTEX;
  442.  
  443. #define PROPERTYINSTEX_SIZE     sizeof(PROPERTYINSTEX)
  444.  
  445. typedef PROPERTYINSTEX UNALIGNED *ULPPROPERTYINSTEX;
  446.  
  447. //=============================================================================
  448. //  Property instance structure.
  449. //=============================================================================
  450.  
  451. typedef struct _PROPERTYINST
  452. {
  453.     LPPROPERTYINFO          lpPropertyInfo;     // pointer to property info
  454.     LPSTR                   szPropertyText;     // pointer to string description
  455.  
  456.     union
  457.     {
  458.         LPVOID              lpData;             // pointer to data
  459.         LPBYTE              lpByte;             // bytes
  460.         ULPWORD             lpWord;             // words
  461.         ULPDWORD            lpDword;            // dwords
  462.  
  463.         ULPLARGEINT         lpLargeInt;         // LargeInt
  464.         ULPSYSTEMTIME       lpSysTime;          // pointer to SYSTEMTIME structures
  465.         LPPROPERTYINSTEX    lpPropertyInstEx;   // pointer to propertyinstex (if DataLength = -1)
  466.     };
  467.  
  468.     WORD                    DataLength;         // length of data, or flag for propertyinstex struct
  469.     WORD                    Level   : 4  ;      // level information        ............1111
  470.     WORD                    HelpID  : 12 ;      // context ID for helpfile  111111111111....
  471.                      //    ---------------
  472.                      // total of 16 bits == 1 WORD == DWORD ALIGNED structure
  473.                             // Interpretation Flags:  Flags that define attach time information to the
  474.                             // interpretation of the property.  For example, in RPC, the client can be
  475.                             // Intel format and the server can be non-Intel format... thus the property
  476.                             // database cannot describe the property at database creation time.
  477.     DWORD                   IFlags;
  478. } PROPERTYINST;
  479.  
  480. typedef PROPERTYINST *LPPROPERTYINST;
  481.  
  482. #define PROPERTYINST_SIZE   sizeof(PROPERTYINST)
  483.  
  484.  
  485.  
  486. // Flags passed at AttachPropertyInstance and AttachPropertyInstanceEx time in the IFlags field:
  487. // flag for error condition ...............1
  488. #define IFLAG_ERROR     0x00000001
  489. // is the WORD or DWORD byte non-Intel format at attach time?
  490. #define IFLAG_SWAPPED   0x00000002
  491. // is the STRING UNICODE at attach time?
  492. #define IFLAG_UNICODE   0x00000004
  493.  
  494.  
  495. //=============================================================================
  496. //  Property instance table structure.
  497. //=============================================================================
  498.  
  499. typedef struct _PROPERTYINSTTABLE
  500. {
  501.     WORD                nPropertyInsts;     //... number of items
  502.     WORD                nPropertyInstIndex; //... index to first item
  503. } PROPERTYINSTTABLE;
  504.  
  505. typedef PROPERTYINSTTABLE *LPPROPERTYINSTTABLE;
  506.  
  507. #define PROPERTYINSTTABLE_SIZE  sizeof(PROPERTYINSTTABLE)
  508.  
  509. //=============================================================================
  510. //  Property table structure.
  511. //=============================================================================
  512.  
  513. typedef struct _PROPERTYTABLE
  514. {
  515.     LPVOID                  lpFormatBuffer;             //... Opaque.                       (PRIVATE)
  516.     DWORD                   FormatBufferLength;         //... Opaque.                       (PRIVATE)
  517.     DWORD                   nTotalPropertyInsts;        //... total number of propertyinstances in array
  518.     LPPROPERTYINST          lpFirstPropertyInst;        //... array of property instances
  519.     BYTE                    nPropertyInstTables;        //... total PropertyIndexTables following
  520.     PROPERTYINSTTABLE       PropertyInstTable[0];       //... array of propertyinstance index table structures
  521. } PROPERTYTABLE;
  522.  
  523. typedef PROPERTYTABLE *LPPROPERTYTABLE;
  524.  
  525. #define PROPERTYTABLE_SIZE  sizeof(PROPERTYTABLE)
  526.  
  527. //=============================================================================
  528. //  Protocol entry points.
  529. //=============================================================================
  530.  
  531. typedef VOID    (WINAPI *REGISTER)(HPROTOCOL);
  532.  
  533. typedef VOID    (WINAPI *DEREGISTER)(HPROTOCOL);
  534.  
  535. typedef LPBYTE  (WINAPI *RECOGNIZEFRAME)(HFRAME, LPBYTE, LPBYTE, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD);
  536.  
  537. typedef LPBYTE  (WINAPI *ATTACHPROPERTIES)(HFRAME, LPBYTE, LPBYTE, DWORD, DWORD, HPROTOCOL, DWORD, DWORD);
  538.  
  539. typedef DWORD   (WINAPI *FORMATPROPERTIES)(HFRAME, LPBYTE, LPBYTE, DWORD, LPPROPERTYINST);
  540.  
  541. //=============================================================================
  542. //  Protocol entry point structure.
  543. //=============================================================================
  544.  
  545. typedef struct _ENTRYPOINTS
  546. {
  547.     REGISTER            Register;               //... Protocol Register() entry point.
  548.     DEREGISTER          Deregister;             //... Protocol Deregister() entry point.
  549.     RECOGNIZEFRAME      RecognizeFrame;         //... Protocol RecognizeFrame() entry point.
  550.     ATTACHPROPERTIES    AttachProperties;       //... Protocol AttachProperties() entry point.
  551.     FORMATPROPERTIES    FormatProperties;       //... Protocol FormatProperties() entry point.
  552. } ENTRYPOINTS;
  553.  
  554. typedef ENTRYPOINTS *LPENTRYPOINTS;
  555.  
  556. #define ENTRYPOINTS_SIZE    sizeof(ENTRYPOINTS)
  557.  
  558. //=============================================================================
  559. //  Property database structure.
  560. //=============================================================================
  561.  
  562. typedef struct _PROPERTYDATABASE
  563. {
  564.     DWORD           nProperties;                 //... Number of properties in database.
  565.     LPPROPERTYINFO  PropertyInfo[0];             //... Array of property info pointers.
  566. } PROPERTYDATABASE;
  567.  
  568.  
  569. #define PROPERTYDATABASE_SIZE   sizeof(PROPERTYDATABASE)
  570.  
  571. typedef PROPERTYDATABASE *LPPROPERTYDATABASE;
  572.  
  573. //=============================================================================
  574. //  Protocol info structure (PUBLIC portion of HPROTOCOL).
  575. //=============================================================================
  576.  
  577. typedef struct _PROTOCOLINFO
  578. {
  579.     DWORD               ProtocolID;             //... Prootocol ID of owning protocol.
  580.     LPPROPERTYDATABASE  PropertyDatabase;       //... Property database.
  581.     BYTE                ProtocolName[16];       //... Protocol name.
  582.     BYTE                HelpFile[16];           //... Optional helpfile name.
  583.     BYTE                Comment[128];           //... Comment describing protocol.
  584. } PROTOCOLINFO;
  585.  
  586. typedef PROTOCOLINFO *LPPROTOCOLINFO;
  587.  
  588. #define PROTOCOLINFO_SIZE   sizeof(PROTOCOLINFO)
  589.  
  590. //=============================================================================
  591. //  Protocol Table.
  592. //=============================================================================
  593.  
  594. typedef struct _PROTOCOLTABLE
  595. {
  596.     DWORD       nProtocols;
  597.     HPROTOCOL   hProtocol[1];                       //... This must be the last member.
  598. } PROTOCOLTABLE;
  599.  
  600. typedef PROTOCOLTABLE *LPPROTOCOLTABLE;
  601.  
  602. #define PROTOCOLTABLE_SIZE  (sizeof(PROTOCOLTABLE) - sizeof(HPROTOCOL))
  603.  
  604. #define PROTOCOLTABLE_ACTUAL_SIZE(p) GetTableSize(PROTOCOLTABLE_SIZE, (p)->nProtocols, sizeof(HPROTOCOL))
  605.  
  606. //=============================================================================
  607. //  AddressInfo structure
  608. //=============================================================================
  609. #define SORT_BYADDRESS  0
  610. #define SORT_BYNAME     1
  611.  
  612. #define PERMANENT_NAME  0x00000100
  613.  
  614. typedef struct _ADDRESSINFO *LPADDRESSINFO;
  615. typedef struct _ADDRESSINFO
  616. {
  617.     ADDRESS        Address;
  618.     BYTE           Name[MAX_NAME_SIZE];
  619.     DWORD          Flags;
  620.     LPVOID         lpAddressInstData;
  621. } ADDRESSINFO;
  622.  
  623. #define ADDRESSINFO_SIZE    sizeof(ADDRESSINFO)
  624.  
  625. //=============================================================================
  626. //  AddressInfoTable
  627. //=============================================================================
  628.  
  629. typedef struct _ADDRESSINFOTABLE
  630. {
  631.     DWORD         nAddressInfos;
  632.     LPADDRESSINFO lpAddressInfo[0];
  633. } ADDRESSINFOTABLE;
  634.  
  635. typedef ADDRESSINFOTABLE *LPADDRESSINFOTABLE;
  636.  
  637. #define ADDRESSINFOTABLE_SIZE   sizeof(ADDRESSINFOTABLE)
  638.  
  639. //=============================================================================
  640. //  callback procedures.
  641. //=============================================================================
  642.  
  643. typedef DWORD (WINAPI *FILTERPROC)(HCAPTURE, HFRAME, LPVOID);
  644.  
  645. #pragma pack()
  646. #pragma option pop /*P_O_Pop*/
  647. #endif
  648.