home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / sna_dlc.h < prev    next >
Text File  |  1998-04-25  |  16KB  |  339 lines

  1. /* sna_dlc.h */
  2. /*
  3.  * (C) Copyright Data Connection Limited 1989-1992.
  4.  * (C) Copyright Microsoft Corporation 1991.
  5.  * All Rights Reserved.
  6.  */
  7.  
  8. #ifndef SNA_DLCH_INCLUDED
  9. #define SNA_DLCH_INCLUDED
  10.  
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. /*****************************************************************************/
  16. /* Type definitions for message fields                                       */
  17. /*****************************************************************************/
  18. typedef signed long   LONGINT;
  19. typedef signed short  INTEGER;
  20. typedef signed char   SENUMERATED;
  21. typedef signed short  LENUMERATED;
  22. typedef unsigned char SUBRNG0;
  23. typedef signed char   SUBRNG1;
  24. typedef signed short  SUBRNG2;
  25. typedef signed char   SET1;
  26. typedef signed short  SET2;
  27. typedef signed long   SET;
  28. typedef SET2          THFORMAT;
  29. #define VOID          void
  30.  
  31. /*****************************************************************************/
  32. /* Element offset and length definitions                                     */
  33. /*****************************************************************************/
  34.  
  35. #define SBCBELT1 1
  36. #define SBCBELT3 13
  37. #define SNANBEDA 268     /* LENGTH OF BUFFER ELEMENT */
  38.  
  39. /*****************************************************************************/
  40. /* POINTERS TO STRUCTURES IN SBTBUFPT                                        */
  41. /*****************************************************************************/
  42. #ifdef WIN32_SUPPORT
  43. #define PTRBFELT struct bufelt *
  44. #define PTRBFHDR struct bufhdr *
  45. #else
  46. #define PTRBFELT struct bufelt far *
  47. #define PTRBFHDR struct bufhdr far *
  48. #endif
  49.  
  50. /*****************************************************************************/
  51. /* SIZE OF BUFFER HEADER:                                                    */
  52. /*   - 10 BYTES FOR FIXED PART                                               */
  53. /*   - 16 BYTES FOR VARIANT PART                                             */
  54. /*   - 2  BYTES FOR MATTERHORN EXTRA                                         */
  55. /*****************************************************************************/
  56. #define SVBUFSIZ 26
  57.  
  58.  
  59. /*****************************************************************************/
  60. /* OPEN MESSAGE TYPE DECLARATIONS                                            */
  61. /*****************************************************************************/
  62.  
  63.      typedef struct tpophdr{                          /* OPEN MESSAGE HEADER */
  64.                       CHAR     openqual;
  65. #define REQU     1
  66. #define RSPOK    2
  67. #define RSPERR   3
  68. #define CONFOK   4
  69. #define CONFERR  5
  70.                       CHAR     opentype;
  71. #define LINK     16
  72. #define STAT     17
  73.                       CHAR     appltype;
  74.                       CHAR     opluno;              /* INTERFACE USER NUMBER */
  75.                       INTEGER  opresid;             /* INTERFACE USER ID     */
  76.                       union {
  77.                         struct {INTEGER  B03;
  78.                                 INTEGER  B04;
  79.                                 CHAR     B05;
  80.                                 CHAR     B06;}B02;
  81.                         struct {INTEGER  B08;
  82.                                 INTEGER  B09;}B07;
  83.                     }B01;}
  84. #define icreditr B01.B02.B03           /* Initial Credit for Receive       */
  85. #define icredits B01.B02.B04           /* Initial Credit for Send          */
  86. #define opninfo1 B01.B02.B05           /* Negotiable BIND indicator (FMI)  */
  87. #define opnpad1  B01.B02.B06           /* Open (SSCP) Force type           */
  88. #define operr1   B01.B07.B08
  89. #define ERINIFAIL    0x0001            /* Hardware initialisation failed   */
  90. #define ERLKNOTOPEN  0x0003            /* Link not open                    */
  91. #define ERSTATOPEN   0x0005            /* Station already open             */
  92. #define ERNOCB       0x0006            /* Station control blocks depleted  */
  93. #define ERINVINDX    0x0007            /* Invalid link index               */
  94. #define ERMAXSTAT    0x0008            /* No more stations/link allowed    */
  95. #define ERINVXID     0x0008            /* Invalid XID length               */
  96. #define ERDIFADDR    0x0009            /* Address different from RQ-OP-STN */
  97. #define ERLINKOPN    0x0009            /* Link already open                */
  98. #define ERBADADDR    0x000A            /* Invalid DLC address              */
  99. #define ERLCCERR     0x000A            /* LCC error; fatal hardware failure*/
  100. #define ERBADINDX    0x000B            /* Invalid link index               */
  101. #define ERBADOPN     0x000C            /* Open(LINK) has insufficient data */
  102. #define ERCONNTO     0x000D            /* Link connection timeout          */
  103. #define ERNORES      0x000E            /* No resources free                */
  104. #define EROPNPND     0x0011            /* Close(LINK) arrived, Open pending*/
  105. #define ERDUPREQ     0x0012            /* Duplicate request                */
  106. #define ERNOINC      0x0A11            /* Can't accept incoming call       */
  107. #define operr2   B01.B07.B09
  108.                     TPOPHDR;
  109.  
  110.  
  111. #define SNA          0
  112. #define APPL         1
  113. #define AMOD         2
  114. #define DLC          3
  115.  
  116.  
  117. /*****************************************************************************/
  118. /* CLOSE MESSAGE TYPE DECLARATIONS                                           */
  119. /*****************************************************************************/
  120.      typedef struct tpclhdr{                         /* CLOSE MESSAGE HEADER */
  121.                       CHAR     closqual;    /* Close message qualifier       */
  122.                       CHAR     clstype;     /* Close message connection type */
  123.                       CHAR     clsctl;      /* For Close(PLU) only           */
  124. #define CLNORMAL 1
  125. #define CLBIND   2
  126. #define CLCFAERR 3
  127. #define CLPUINAC 4
  128. #define CLLUINAC 5
  129. #define CLLNKERR 6
  130. #define CLBFSHRT 7
  131. #define CLRCVCHK 8
  132. #define CLSLUTRM 9
  133.                       CHAR     clspad1;
  134.                       INTEGER  clspad2;
  135.                       INTEGER  clserr1;
  136.                       INTEGER  clserr2;
  137.                     }TPCLHDR;
  138.  
  139.  
  140.  
  141. /*****************************************************************************/
  142. /* DLC MESSAGE TYPE DECLARATIONS                                             */
  143. /*****************************************************************************/
  144.  
  145.  
  146.  
  147.      typedef struct tpddhdr{                      /* DLC DATA MESSAGE HEADER */
  148.                      INTEGER  ddpad1;   /* Pad                              */
  149.                      INTEGER  ddpad2;   /* Pad                              */
  150.                      INTEGER  ddpad3;   /* Pad                              */
  151.                      THFORMAT ddth01;   /* TH Flags                         */
  152.                      CHAR     dddaf;    /* DAF in the TH                    */
  153.                      CHAR     ddoaf;    /* OAF in the TH                    */
  154.                      INTEGER  ddseqno;  /* Sequence Number in the TH        */
  155.                    }TPDDHDR;
  156.  
  157.  
  158.      typedef struct tpdshdr{                      /* DLC DATA MESSAGE HEADER */
  159.                      CHAR     dstype;    /* DLC-Status type                  */
  160. #define SENDXID  0x1a
  161. #define RESOURCE 0x04
  162. #define OUTAGE   0x18
  163. #define STNCTCTD 0x17
  164. #define RQOPNSTN 0x16
  165.                      CHAR     dsqual;    /* Status Qualifier                 */
  166.                      /*BOOLEAN*/union {
  167.                        /*TRUE*/struct {CHAR     B0N;
  168.                                     CHAR     B0O;
  169.                                     INTEGER  B0P;
  170.                                     INTEGER  B0Q;
  171.                                     CHAR     B0R;}B0M;
  172.                        /*FALSE*/struct {INTEGER  B0T;}B0S;
  173.                    }B0L;}
  174. #define dsuptype B0L.B0M.B0N             /* Status Qualifier                 */
  175. #define dsmdset  B0L.B0M.B0N             /* RECFMS Counter Type              */
  176. #define dsupcntr B0L.B0M.B0O             /* Req-Opn-Station Set-Mode flag    */
  177. #define dspad    B0L.B0M.B0P             /* RECFMS Counter Value             */
  178. #define dserror  B0L.B0M.B0Q             /* Pad                              */
  179. #define dsoutsq  B0L.B0M.B0R             /* Internal value for Counter       */
  180. #define dlccred  B0L.B0S.B0T             /* Outage Sub-qualifier             */
  181.                    TPDSHDR;              /* DLC-Status Credit Increment      */
  182.  
  183.  
  184.  
  185.  
  186. /*****************************************************************************/
  187. /* SNAP-LINK HMOD MESSAGE TYPE DECLARATIONS                                  */
  188. /*****************************************************************************/
  189.  
  190.      typedef struct tpdlhdr{                         /* HMOD  MESSAGE HEADER */
  191.                       CHAR     dlcnr;    /* N(R) Value                       */
  192.                       CHAR     dlcns;    /* N(S) Value                       */
  193.                       INTEGER  dlclkidx; /* Link Index                       */
  194.                       CHAR     dlcerst1; /* Error Status 1                   */
  195.                       CHAR     dlcerst2; /* Error Status 2                   */
  196.                     }TPDLHDR;
  197.  
  198.  
  199. /*****************************************************************************/
  200. /* MAIN DEFINITION OF MESSAGE HEADER                                         */
  201. /*****************************************************************************/
  202.      typedef struct bufhdr{
  203.                      PTRBFHDR nxtqptr;
  204.                      PTRBFELT hdreptr;
  205.                      CHAR     numelts;
  206.                      CHAR     msgtype;
  207. #define OPENMSG  1
  208. #define CLOSEMSG 2
  209. #define DLCSTAT  17
  210. #define DLCDATA  16
  211.                      CHAR     srcl;
  212.                      CHAR     srcp;
  213. #define SLPROD   22
  214.                      INTEGER  srci;
  215.                      CHAR     destl;
  216.                      CHAR     destp;
  217.                      INTEGER  desti;
  218.                      union {
  219.                        struct {TPOPHDR  B1C;}B1B;
  220.                        struct {TPCLHDR  B1E;}B1D;
  221.                        struct {TPDDHDR  B1G;}B1F;
  222.                        struct {TPDSHDR  B1I;}B1H;
  223.                        struct {TPDLHDR  B1K;}B1J;
  224.                      }B0Y;}
  225. #define ophdr    B0Y.B1B.B1C
  226. #define clhdr    B0Y.B1D.B1E
  227. #define ddhdr    B0Y.B1F.B1G
  228. #define dshdr    B0Y.B1H.B1I
  229. #define dlhdr    B0Y.B1J.B1K
  230.                      BUFHDR;
  231.  
  232.  
  233. /*****************************************************************************/
  234. /* MAIN DEFINITION OF MESSAGE ELEMENT                                        */
  235. /*****************************************************************************/
  236.  
  237. /**STRUCT+********************************************************************/
  238. /* Structure: BUFELT                                                         */
  239. /*                                                                           */
  240. /* Description: Main definition of SNAPS Buffer Element                      */
  241. /*****************************************************************************/
  242.      typedef struct bufelt{
  243.                      PTRBFELT elteptr;   /* Pointer to next element in buffer*/
  244.                      INTEGER  startd;    /* Offset (from 1) of start of data */
  245.                      INTEGER  endd;      /* Offset (from 1) of last data byte*/
  246.                      CHAR     trpad;
  247.                      CHAR     dataru[268]; /* The data bytes themselves      */
  248.                      } BUFELT;
  249. /**STRUCT-********************************************************************/
  250.  
  251. /*****************************************************************************/
  252. /* IF Win32 environment THEN                                                 */
  253. /*   IF intel format THEN                                                    */
  254. /*     define flipping macros                                                */
  255. /*     define anti-flipping macros to NOP                                    */
  256. /*****************************************************************************/
  257. #ifdef WIN32
  258. #ifndef NON_INTEL_BYTE_ORDER
  259. #define PFLIPI(X) (unsigned short)_rotl(((unsigned short)(X))*(unsigned long)0x00010001,8)
  260. #define PFLIPL(X) MAKEULONG(PFLIPI(HIUSHORT(X)),PFLIPI(LOUSHORT(X)))
  261. #define PANTIFLIPI(X) (X)
  262.  
  263. /*****************************************************************************/
  264. /* ELSE (non-intel)                                                          */
  265. /*   set flipping to nop for now                                             */
  266. /*   set anti-flipping on                                                    */
  267. /*****************************************************************************/
  268. #else
  269. #define PFLIPI(X)  (X)
  270. #define PFLIPL(X)  (X)
  271. #define PANTIFLIPI(X) (unsigned short)_rotl((unsigned short)(X),8)
  272. #endif
  273.  
  274. /*****************************************************************************/
  275. /* ELSE (not Win32, must be Intel environment)                               */
  276. /*   define flipping macros                                                  */
  277. /*****************************************************************************/
  278. #else
  279. #define PFLIPI(X) (unsigned short)_rotl((unsigned short)(X),8)
  280. #define PFLIPL(X) MAKEULONG(PFLIPI(HIUSHORT(X)),PFLIPI(LOUSHORT(X)))
  281. #define PANTIFLIPI(X) (X)
  282. #endif
  283.  
  284. /*****************************************************************************/
  285. /* Buffer pool access routines                                               */
  286. /*****************************************************************************/
  287.  
  288. #ifdef WIN32_SUPPORT
  289.  
  290.  
  291.   #ifdef OLD_IHV_PROTOS
  292.     extern PTRBFHDR WINAPI     sepdbubl (USHORT);
  293.     extern VOID     WINAPI     sepdburl (PTRBFHDR);
  294.     extern VOID     WINAPI     sbpibegt (PTRBFELT *);
  295.     extern VOID     WINAPI     sbpiberl (PTRBFELT *);
  296.   #else
  297.     extern PTRBFHDR WINAPI     SNAGetBuffer     (USHORT);
  298.     extern VOID     WINAPI     SNAReleaseBuffer (PTRBFHDR);
  299.     extern VOID     WINAPI     SNAGetElement    (PTRBFELT *);
  300.     extern VOID     WINAPI     SNAReleaseElement(PTRBFELT *);
  301.   #endif
  302.  
  303. #else
  304.   extern PTRBFHDR far  sepdbubl (USHORT);
  305.   extern VOID     far  sepdburl (PTRBFHDR);
  306.   extern VOID     far  sbpibegt (PTRBFELT far *);
  307.   extern VOID     far  sbpiberl (PTRBFELT far *);
  308. #endif
  309.  
  310. #ifdef WIN32_SUPPORT
  311. extern CHAR        WINAPI  snpugetc(PTRBFELT, INTEGER);
  312. extern VOID        WINAPI  snpuputc(PTRBFELT, INTEGER, CHAR);
  313. extern INTEGER     WINAPI  snpugeti(PTRBFELT, INTEGER);
  314. extern VOID        WINAPI  snpuputi(PTRBFELT, INTEGER, INTEGER);
  315. extern VOID        WINAPI  snpugetl(PTRBFELT, INTEGER, LONGINT *);
  316. extern VOID        WINAPI  snpuputl(PTRBFELT, INTEGER, LONGINT);
  317. #else
  318. extern CHAR     far  snpugetc(PTRBFELT, INTEGER);
  319. extern VOID     far  snpuputc(PTRBFELT, INTEGER, CHAR);
  320. extern INTEGER  far  snpugeti(PTRBFELT, INTEGER);
  321. extern VOID     far  snpuputi(PTRBFELT, INTEGER, INTEGER);
  322. extern VOID     far  snpugetl(PTRBFELT, INTEGER, LONGINT FAR *);
  323. extern VOID     far  snpuputl(PTRBFELT, INTEGER, LONGINT);
  324. #endif
  325.  
  326.  
  327. /*****************************************************************************/
  328. /* Include the remainder of SNA Services definitions                         */
  329. /*****************************************************************************/
  330. #include <sna_cnst.h>
  331.  
  332. #ifdef __cplusplus
  333. }
  334. #endif
  335.  
  336. #endif
  337. /* End of file cs_dlc.h */
  338.  
  339.