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

模拟服务器

开发平台:

C/C++

  1. /* fmi.h */
  2. /*
  3.  * (C) Copyright Data Connection Limited 1989-1992.
  4.  * Copyright (c) Microsoft Corporation.  All rights reserved.
  5.  */
  6. /*****************************************************************************/
  7. /* Change History                                                            */
  8. /*                                                                           */
  9. /* 1041   12/07/99  MB  Keywords used for single sign-on.                    */
  10. /*****************************************************************************/
  11. #ifndef FMIH_INCLUDED
  12. #define FMIH_INCLUDED
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #ifdef WIN32_SUPPORT
  17.   #pragma pack(1)
  18. #endif
  19. /*****************************************************************************/
  20. /* The following type definitions are in os2def.h so are not needed in OS/2  */
  21. /*****************************************************************************/
  22. #if (defined(DOS_SUPPORT) || defined(MSWIN_SUPPORT))
  23. #define CHAR          char      /* ch  */
  24. typedef unsigned char UCHAR;    /* uch */
  25. typedef unsigned short USHORT;  /* us  */
  26. typedef unsigned long ULONG;    /* ul  */
  27. #endif
  28. /*****************************************************************************/
  29. /* Type definitions for message fields                                       */
  30. /*****************************************************************************/
  31. typedef signed short         INTEGER;
  32. /*****************************************************************************/
  33. /* Macro to convert integer fields other than STARTD and ENDD, SRCI          */
  34. /* and DESTI to In-line format                                               */
  35. /*****************************************************************************/
  36. #ifndef WIN32_SUPPORT
  37. #define DOFLIP(X) ((INTEGER)((((X) & 0xff) << 8) | (((X) >> 8) & 0xff)))
  38. #else
  39. #ifndef _rotl
  40.   unsigned int __cdecl _rotl(unsigned int, int);
  41. #endif
  42. #pragma intrinsic(_rotl)
  43. #define DOFLIP(X)   ((INTEGER)_rotl(((unsigned short)(X))*(unsigned long)0x00010001, 8))
  44. #endif
  45. #define DONTFLIP(X) (X)
  46. #ifdef NON_INTEL_BYTE_ORDER
  47.  #define PFLIPI(X)      DONTFLIP(X)
  48.  #define PANTIFLIPI(X)  DOFLIP(X)
  49. #else
  50.  #define PFLIPI(X)      DOFLIP(X)
  51.  #define PANTIFLIPI(X)  DONTFLIP(X)
  52. #endif
  53. /*****************************************************************************/
  54. /* Element offset and length definitions                                     */
  55. /*****************************************************************************/
  56. #define SBCBELT1 1
  57. #define SBCBELT3 13
  58. #define SNANBEDA 268     /* LENGTH OF BUFFER ELEMENT */
  59. /*****************************************************************************/
  60. /* MESSAGE TYPE DECLARATIONS - ELEMENT OPTIONS                               */
  61. /*****************************************************************************/
  62.      typedef
  63. #define RHASENSE     0
  64. #define DATAONLY     1
  65.      signed char ELTDATAT;
  66.      typedef CHAR     SNCHARRU[SNANBEDA];        /* LENGTH OF ELT */
  67. /*****************************************************************************/
  68. /* MAIN DEFINITION OF MESSAGE ELEMENT                                        */
  69. /*****************************************************************************/
  70. /**STRUCT+********************************************************************/
  71. /* Structure: BUFELT                                                         */
  72. /*                                                                           */
  73. /* Description: Main definition of SNAPS Buffer Element                      */
  74. /*****************************************************************************/
  75. #ifdef WIN32_SUPPORT
  76.  #define PTRBFELT struct bufelt *
  77. #else
  78.  #define PTRBFELT struct bufelt far *
  79. #endif
  80.      typedef struct bufelt{
  81.                      PTRBFELT elteptr;   /* Pointer to next element in buffer*/
  82.                      INTEGER  startd;    /* Offset (from 1) of start of data */
  83.                      INTEGER  endd;      /* Offset (from 1) of last data byte*/
  84.                      CHAR     trpad;
  85.                      /*ELTDATAT*/union {
  86.                        /*RHASENSE*/struct {unsigned char rhpad[8];
  87.                                      signed long BBUFF0V;
  88.                                      INTEGER  BBUFF0W;
  89.                                      INTEGER  BBUFF0X;}BBUFF0T;
  90.                        /*DATAONLY*/struct {SNCHARRU BBUFF0Z;
  91.                                                       }BBUFF0Y;
  92.                    }BBUFF0S;}
  93. #define rh       BBUFF0S.BBUFF0T.BBUFF0V /* The RH bytes themselves          */
  94. #define sense1   BBUFF0S.BBUFF0T.BBUFF0W /* Sense data 1 in negative response*/
  95. #define sense2   BBUFF0S.BBUFF0T.BBUFF0X /* Sense data 2 in negative response*/
  96. #define dataru   BBUFF0S.BBUFF0Y.BBUFF0Z /* The data bytes themselves        */
  97. #define lccpad   BBUFF0S.BBUFF0Y.BBUFF1A /* Pad                              */
  98.                    BUFELT;
  99. /*****************************************************************************/
  100. /* OPEN MESSAGE TYPE DECLARATIONS                                            */
  101. /*****************************************************************************/
  102.      typedef struct tpophdr{                          /* OPEN MESSAGE HEADER */
  103.                       CHAR     openqual;
  104. #define REQU     1
  105. #define RSPOK    2
  106. #define RSPERR   3
  107. #define CONFOK   4
  108. #define CONFERR  5
  109.                       CHAR     opentype;
  110. #define SSCPSEC  1
  111. #define LUSEC    2
  112. #define SBPUSEC  3
  113.                       CHAR     appltype;     /* INTERFACE ID - X'02' FOR FMI */
  114.                       CHAR     opluno;              /* INTERFACE USER NUMBER */
  115.                       INTEGER  opresid;             /* INTERFACE USER ID     */
  116.                       union {
  117.                         struct {INTEGER  B03;
  118.                                 INTEGER  B04;
  119.                                 CHAR     B05;
  120.                                 CHAR     B06;}B02;
  121.                         struct {INTEGER  B08;
  122.                                 INTEGER  B09;}B07;
  123.                     }B01;}
  124. #define icreditr B01.B02.B03
  125. #define icredits B01.B02.B04
  126. #define opninfo1 B01.B02.B05
  127. #define opnpad1  B01.B02.B06
  128. #define operr1   B01.B07.B08
  129. #define operr2   B01.B07.B09
  130.                     TPOPHDR;
  131. /*****************************************************************************/
  132. /* Open (SSCP) opnpad1 values                                                */
  133. /*****************************************************************************/
  134. #define OPEN_TEST       0               /* DON'T FORCE A CONNECTION ACTIVE   */
  135. #define OPEN_FORCE      1               /* FORCE A CONNECTION ACTIVE         */
  136. /*****************************************************************************/
  137. /* Constants for operr2 field in Open(SSCP) Error Responses                  */
  138. /*****************************************************************************/
  139. #define CSRENOSR 0                      /* NO SERVERS FOUND                  */
  140. #define CSRESERV 1                      /* SERVICE NOT PRESENT AT LOCALITY   */
  141. #define CSRECNFG 2                      /* CONFIGURATION MISMATCH            */
  142. #define CSRECBSH 3                      /* CONTROL BLOCK/RESOURCE SHORTAGE   */
  143. #define CSREFORM 4                      /* FORMAT/PROTOCOL ERROR             */
  144. /*****************************************************************************/
  145. /* LINK TYPE DEFINITIONS FOR OPEN (SSCP) RESPONSE IN DATARU[38]              */
  146. /*****************************************************************************/
  147. #define CESLINK          3              /* SDLC LINK                         */
  148. #define CESX25           4              /* X.25 LINK                         */
  149. #define CESDFT          10              /* DFT LINK                          */
  150. #define CESTR           11              /* TOKEN RING LINK                   */
  151. #define CESTCPIP        30              /* TCP/IP LINK                       */
  152. #define CESRELAY        31              /* FRAME RELAY LINK                  */
  153. #define CESCHANL        32              /* CHANNEL LINK                      */
  154. #define CESISDN         33              /* ISDN LINK                         */
  155. #define CESETHER        34              /* ETHERNET 802.2 LINK               */
  156. /*****************************************************************************/
  157. /* BIND Table Index Values for the Open PLU response (in element)            */
  158. /*****************************************************************************/
  159. #define BIND_TABLE_INDEX_PRT    1
  160. #define BIND_TABLE_INDEX_CRT    2
  161. /*****************************************************************************/
  162. /* CLOSE MESSAGE TYPE DECLARATIONS                                           */
  163. /*****************************************************************************/
  164.      typedef struct tpclhdr{                         /* CLOSE MESSAGE HEADER */
  165.                       CHAR     closqual;    /* Same values as openqual       */
  166.                       CHAR     clstype;     /* Same values as opentype       */
  167.                       CHAR     clsctl;      /* For Close(PLU) only           */
  168. #define CLNORMAL 1
  169. #define CLBIND   2
  170. #define CLCFAERR 3
  171. #define CLPUINAC 4
  172. #define CLLUINAC 5
  173. #define CLLNKERR 6
  174. #define CLBFSHRT 7
  175. #define CLRCVCHK 8
  176. #define CLSLUTRM 9
  177.                       CHAR     clspad1;
  178.                       INTEGER  clspad2;
  179.                       INTEGER  clserr1;
  180.                       INTEGER  clserr2;
  181.                     }TPCLHDR;
  182. /*****************************************************************************/
  183. /* STATUS-ACKNOWLEDGE MESSAGE TYPE DECLARATION                               */
  184. /*****************************************************************************/
  185.      typedef struct tpstahdr{                   /* STATUS ACK MESSAGE HEADER */
  186.                       CHAR     akstat;
  187. #define ACK      1
  188.                       CHAR     akqual;
  189. #define ACKPOS   2
  190. #define ACKNEG1  3
  191. #define ACKNEG2  4
  192.                       INTEGER  akmsgkey;
  193.                       union {
  194.                               INTEGER XXXXX01;
  195.                               struct {
  196.                                  CHAR     XXXXX02;
  197.                                  CHAR     XXXXX03;
  198.                                      } XXXXX04;
  199.                             } XXXXX05;
  200.                       INTEGER  aknumb1;
  201.                       INTEGER  aknumb2;
  202.                       INTEGER  akseqno;
  203. #define akmsgtim XXXXX05.XXXXX01
  204. #define akflags1 XXXXX05.XXXXX04.XXXXX02    /* Same values as fhflags1 below */
  205.                                             /* Reserved for ACKNEG2          */
  206. #define akflags2 XXXXX05.XXXXX04.XXXXX03    /* Same values as fhflags2 below */
  207.                                             /* Crit/Non-Crit fail for ACKNEG2*/
  208.                     }TPSTAHDR;
  209. /*****************************************************************************/
  210. /* STATUS-ERROR MESSAGE TYPE DECLARATION                                     */
  211. /*****************************************************************************/
  212.      typedef struct tpstehdr{                 /* STATUS ERROR MESSAGE HEADER */
  213.                       CHAR     errstat;
  214. #define STERROR  3
  215.                       CHAR     errpad1;
  216.                       INTEGER  errpad2;
  217.                       INTEGER  errpad3;
  218.                       INTEGER  errcode1;
  219.                       INTEGER  errcode2;
  220.                     }TPSTEHDR;
  221. /*****************************************************************************/
  222. /* STATUS-CONTROL MESSAGE TYPE DECLARATION                                   */
  223. /*****************************************************************************/
  224.      typedef struct tpstchdr{               /* STATUS CONTROL MESSAGE HEADER */
  225.                      CHAR     ctlstat;
  226. #define STCNTRL  2
  227.                      CHAR     ctlqual;
  228. #define CTLREQU  1
  229. /* #define ACKPOS   2 */
  230. /* #define ACKNEG1  3 */
  231. /* #define ACKNEG2  4 */
  232.                      CHAR     ctltype;
  233. #define CCLEAR   1
  234. #define CSDT     2
  235. #define CRQR     3
  236. #define CSTSN    4
  237. #define CCANCEL  16
  238. #define CLUSTAT  17
  239. #define CSIGNAL  18
  240. #define CRSHUTD  19
  241. #define CBID     20
  242. #define CCHASE   21
  243. #define CSHUTC   22
  244. #define CSHUTD   23
  245. #define CRTR     24
  246. #define CQC      32
  247. #define CQEC     33
  248. #define CRELQ    34
  249.                      CHAR     ctlack;       /* Same values as fhackrqd below */
  250.                      CHAR     ctlflag1;     /* Same values as fhflags1 below */
  251.                      CHAR     ctlflag2;     /* Same values as fhflags2 below */
  252.                      INTEGER  ctlnumb1;
  253.                      INTEGER  ctlnumb2;
  254.                      INTEGER  ctlmsgk;
  255.                    }TPSTCHDR;
  256. /*****************************************************************************/
  257. /* STATUS-RESOURCE MESSAGE TYPE DECLARATION                                  */
  258. /*****************************************************************************/
  259.      typedef struct tpstrhdr{              /* STATUS RESOURCE MESSAGE HEADER */
  260.                       CHAR     resstat;
  261. #define STRESRCE 4
  262.                       CHAR     respad;
  263.                       INTEGER  rescred;
  264.                     }TPSTRHDR;
  265. /*****************************************************************************/
  266. /* STATUS-SESSION MESSAGE TYPE DECLARATION                                   */
  267. /*****************************************************************************/
  268.      typedef struct tpstshdr{               /* STATUS SESSION MESSAGE HEADER */
  269.                       CHAR     sessstat;
  270. #define STSESSN  5
  271.                       CHAR     sesspad;
  272.                       INTEGER  sesscode;
  273. #define STNOSESS 1                               /* X'01' (NO SESSION)       */
  274. #define STLINERR 2                               /* X'02' (LINK ERROR)       */
  275. #define STPUACT  3                               /* X'03' (PU ACTIVE)        */
  276. #define STPUREAC 4                               /* X'04' (PU RE-ACTIVATED)  */
  277. #define STLUACT  5                               /* X'05' (LU ACTIVE)        */
  278. #define STLUREAC 6                               /* X'06' (LU RE-ACTIVATED)  */
  279. #define STBETB   7                               /* BETB STATUS-SESSION CODE */
  280.                       INTEGER  sessqual;
  281. /* #define STPUACT  3                               X'03' (PU ACTIVE)        */
  282. /* #define STPUREAC 4                               X'04' (PU RE-ACTIVATED)  */
  283. #define STPUINAC 16                              /* X'10' (PU INACTIVE)      */
  284. #define STLUINAC 17                              /* X'11' (LU INACTIVE)      */
  285.                     }TPSTSHDR;
  286. /*****************************************************************************/
  287. /* STATUS-RTM     MESSAGE TYPE DECLARATION                                   */
  288. /*****************************************************************************/
  289.      typedef struct tpstmhdr{               /* STATUS RTM     MESSAGE HEADER */
  290.                       CHAR     rtmstat;
  291. #define STRTM    6
  292.                       CHAR     strbndry;   /* set boundaries flag */
  293.                       CHAR     strcount;   /* set counters flag */
  294.                       CHAR     strtmdef;   /* rtm definition */
  295.                       CHAR     strtmact;   /* rtm active flag */
  296.                       CHAR     strtmdsp;   /* local display active flag */
  297.                     }TPSTMHDR;
  298. /*****************************************************************************/
  299. /* STATUS VARIANT TYPES                                                      */
  300. /*****************************************************************************/
  301.      typedef struct tpashdr{                    /* APPLSTATUS MESSAGE HEADER */
  302.                       union {
  303.                         struct {TPSTAHDR B0G;}B0F; /* Status-Ack variant     */
  304.                         struct {TPSTCHDR B0I;}B0H; /* Status-Control variant */
  305.                         struct {TPSTEHDR B0K;}B0J; /* Status-Error variant   */
  306.                         struct {TPSTRHDR B0M;}B0L; /* Status-Resource variant*/
  307.                         struct {TPSTSHDR B0O;}B0N; /* Status-Session variant */
  308.                         struct {TPSTMHDR X1E;}X1D; /* Status-RTM variant     */
  309.                     }B0E;}
  310. #define stackhdr B0E.B0F.B0G
  311. #define stctlhdr B0E.B0H.B0I
  312. #define sterrhdr B0E.B0J.B0K
  313. #define streshdr B0E.B0L.B0M
  314. #define stseshdr B0E.B0N.B0O
  315. #define strtmhdr B0E.X1D.X1E
  316.                     TPASHDR;
  317. /*****************************************************************************/
  318. /* FMI APPLDATA HERE                                                         */
  319. /*****************************************************************************/
  320.      typedef struct tpfmihdr{                     /* FMI DATA MESSAGE HEADER */
  321.                      CHAR     fhackrqd;
  322. #define NOACKREQ 0
  323. #define ACKREQ   1
  324.                      CHAR     fhpad1;
  325.                      INTEGER  fhmsgkey;
  326.                      CHAR     fhflags1;           /* BIT SIGNIFICANT */
  327. #define AF_FMH  0x80
  328. #define AF_BC   0x40
  329. #define AF_EC   0x20
  330. #define AF_COMM 0x10
  331. #define AF_BB   0x08
  332. #define AF_EB   0x04
  333. #define AF_CD   0x02
  334. #define AF_SD   0x01
  335.                      CHAR     fhflags2;           /* BIT SIGNIFICANT */
  336. #define AF_CODE 0x80
  337. #define AF_ENCR 0x40
  338. #define AF_ENPD 0x20
  339. #define AF_QRI  0x10
  340. #define AF_CEI  0x08
  341. #define AF_BBIU 0x04
  342. #define AF_EBIU 0x02
  343. #define AF_RBI  0x01
  344.                      INTEGER  fhpad2;
  345.                      INTEGER  fhpad3;
  346.                      INTEGER  fhseqno;
  347.                    }TPFMIHDR;
  348. /*****************************************************************************/
  349. /* MAIN DEFINITION OF MESSAGE HEADER                                         */
  350. /*****************************************************************************/
  351. #ifdef WIN32_SUPPORT
  352.  #define PTRBFHDR struct bufhdr *
  353. #else
  354.  #define PTRBFHDR struct bufhdr far *
  355. #endif
  356.      typedef struct bufhdr{
  357.                      PTRBFHDR nxtqptr;
  358.                      PTRBFELT hdreptr;
  359.                      CHAR     numelts;
  360.                      CHAR     msgtype;
  361. #define OPENMSG  1
  362. #define CLOSEMSG 2
  363. #define DATAFMI  32
  364. #define STATFMI  33
  365.                      CHAR     srcl;
  366.                      CHAR     srcp;
  367. #define S3PROD   18                               /* 3270 Partner number     */
  368.                      INTEGER  srci;
  369.                      CHAR     destl;
  370.                      CHAR     destp;
  371.                      INTEGER  desti;
  372.                      union {
  373.                        struct {TPOPHDR  B1C;}B1B;
  374.                        struct {TPCLHDR  B1E;}B1D;
  375.                        struct {TPFMIHDR B1K;}B1J;
  376.                        struct {TPASHDR  B1M;}B1L;
  377.                      }B0Y;}
  378. #define ophdr    B0Y.B1B.B1C
  379. #define clhdr    B0Y.B1D.B1E
  380. #define dfhdr    B0Y.B1J.B1K
  381. #define sfhdr    B0Y.B1L.B1M
  382.                      BUFHDR;
  383. /*****************************************************************************/
  384. /* Keywords used for single sign-on.                                    1041 */
  385. /*****************************************************************************/
  386. #define SSO_3270_USERNAME      "MS$SAMEU"
  387. #define SSO_3270_PASSWORD      "MS$SAMEP"
  388. /*****************************************************************************/
  389. /* RETURN CONSTANTS FOR SBPURCV                                              */
  390. /*****************************************************************************/
  391. #define CSUNORES 0 /* NO RESULT                                              */
  392. #define CSUMSGRT 1 /* MESSAGE RETURNED                                       */
  393. #define CSUPTHER 2 /* PATH ERROR                                             */
  394. #define CSUTERM  3 /* TERMINATE                                              */
  395. #define CSUBUFSH 4 /* BUFFER SHORTAGE                                        */
  396. /*****************************************************************************/
  397. /* PROCTYPE AND SERVTYPE PARAMETERS FOR SBPUINIT                             */
  398. /*****************************************************************************/
  399. #define CLIENT           2      /* client entry                              */
  400. #define CES3270          2      /* SNAP-3270                                 */
  401. /*****************************************************************************/
  402. /* DL-Base return Values                                                     */
  403. /*****************************************************************************/
  404. #ifndef NO_ERROR
  405.  #define NO_ERROR         0
  406. #endif
  407. #define CEDINNOMSG       0          /* status = no message or status         */
  408. #define CEDINMSG         1          /* status = got message                  */
  409. #define CEDINLLN         2          /* status = lost locality                */
  410. /* values for SBPUINIT only */
  411. #define DMBASE          550            /* Base level for Com Manager errors  */
  412. #define DMLTABF         (DMBASE + 5)   /* L-table full                       */
  413. #define DMMNWGI         (DMBASE + 12)  /* NetWkstaGetInfo call failed        */
  414. #define DMDSTFL         (DMBASE + 13)  /* Service table full                 */
  415. #define DMMPIPF         (DMBASE + 17)  /* Make pipe call failed              */
  416. #define DMCOMNM         (DMBASE + 32)  /* No name found for this service     */
  417. #define DMCOMDUP        (DMBASE + 46)  /* Duplicate COMNAME for service      */
  418. #define DMNOTLOG        (DMBASE + 48)  /* User not logged on                 */
  419. #define DMCFGOPN        (DMBASE + 66)  /* Failed to open the config file     */
  420. #define DMCFREAD        (DMBASE + 68)  /* Error reading config file          */
  421. #define DMNONAP         (DMBASE + 75)  /* NAP not up when starting service   */
  422. #define WINBASE          950           /* Base level for Windows-only errors */
  423. #define DMMAXAPP        (WINBASE+3)    /* Exceeded max # of concurrent apps  */
  424. /*****************************************************************************/
  425. /* Dmod/DL-Base entry points                                                 */
  426. /*****************************************************************************/
  427. #ifdef MSWIN_SUPPORT
  428.  #ifndef APIENTRY
  429.   #define APIENTRY WINAPI
  430.  #endif
  431. #endif
  432. #ifdef OS2_SUPPORT
  433. extern USHORT   APIENTRY  sbpuinit (HSEM FAR *, USHORT, USHORT, UCHAR FAR *);
  434. extern USHORT   APIENTRY  sbpurcv (PTRBFHDR FAR *, INTEGER FAR*);
  435. #endif
  436. #ifdef WIN32_SUPPORT
  437. extern USHORT WINAPI sbpuinit (HANDLE *, USHORT, USHORT, UCHAR *);
  438. extern USHORT WINAPI sbpurcv (PTRBFHDR *, INTEGER *);
  439. #endif
  440. #ifdef MSWIN_SUPPORT
  441. extern USHORT   WINAPI  sbpuinit (USHORT, USHORT, UCHAR FAR *);
  442. #endif
  443. #ifdef DOS_SUPPORT
  444. extern USHORT   APIENTRY  sbpuinit (HSEM FAR *, USHORT, USHORT);
  445. #endif
  446. #ifndef WIN32_SUPPORT
  447. extern USHORT   APIENTRY  sbpurcvx (BUFHDR FAR * FAR *, INTEGER, INTEGER);
  448. extern VOID     APIENTRY  sbpusend (PTRBFHDR);
  449. extern VOID     APIENTRY  sbputerm (VOID);
  450. #else
  451. extern USHORT WINAPI sbpurcvx (BUFHDR * *, INTEGER, INTEGER);
  452. extern VOID   WINAPI sbpusend (PTRBFHDR);
  453. extern VOID   WINAPI sbputerm (VOID);
  454. #endif
  455. #ifdef OS2_SUPPORT
  456. extern USHORT APIENTRY sepdrout(USHORT (APIENTRY *) (BUFHDR far *, USHORT, USHORT));
  457. #endif
  458. #ifdef WIN32_SUPPORT
  459. extern ULONG WINAPI sepdrout(ULONG (WINAPI *) (BUFHDR *, USHORT, USHORT));
  460. #endif
  461. #ifdef MSWIN_SUPPORT
  462. extern USHORT WINAPI sepwrout(USHORT (WINAPI *) (BUFHDR far *, USHORT, USHORT));
  463. #endif
  464. #ifdef DOS_SUPPORT
  465. extern USHORT APIENTRY sepdrout(USHORT (APIENTRY *) (BUFHDR far *, USHORT, USHORT));
  466. #endif
  467. /*****************************************************************************/
  468. /* Buffer pool access routines                                               */
  469. /*****************************************************************************/
  470. #ifndef WIN32_SUPPORT
  471. extern PTRBFHDR APIENTRY  sepdbubl (USHORT);
  472. extern VOID     APIENTRY  sepdburl (PTRBFHDR);
  473. extern VOID     APIENTRY  sbpibegt (PTRBFELT FAR *);
  474. extern VOID     APIENTRY  sbpiberl (PTRBFELT FAR *);
  475. extern VOID     APIENTRY  sepdchnk (USHORT FAR *, USHORT FAR *);
  476. #else
  477. extern PTRBFHDR WINAPI sepdbubl (USHORT);
  478. extern VOID     WINAPI sepdburl (PTRBFHDR);
  479. extern VOID     WINAPI sbpibegt (PTRBFELT *);
  480. extern VOID     WINAPI sbpiberl (PTRBFELT *);
  481. extern VOID     WINAPI sepdchnk (USHORT *, USHORT *);
  482. #endif
  483. /*****************************************************************************/
  484. /* Structures for the 3270 user record.                                      */
  485. /*****************************************************************************/
  486. #define CERT3270  0x0002           /* 3270 user record type                  */
  487. #define CECWKHAC  8                /* Length of Host Access Name             */
  488. #define CECWKUNM  20               /* Length of 3270 user name               */
  489. #define CECWKREM  25               /* Length of record remark                */
  490. #define CE3MASMX  10               /* Max number of 3270 sessions            */
  491. typedef struct tecwrksd
  492. {
  493.   UCHAR   cwshost[CECWKHAC + 1];   /* LU/Pool name accessed                  */
  494.   USHORT  cwsestyp;                /* Session type (M2, M3, M4, M5, printer) */
  495. #define CERTMOD2 0                 /* 24x80                                  */
  496. #define CERTMOD3 1                 /* 32x80                                  */
  497. #define CERTMOD4 2                 /* 43x80                                  */
  498. #define CERTMOD5 3                 /* 27x132                                 */
  499. #define CERTPRNT 4                 /* Host printer                           */
  500.   USHORT  cwsmodov;                /* Has the user got override permission?  */
  501.   USHORT  cwspad;                  /* 2 bytes of padding                     */
  502. } TECWRKSD;
  503. typedef struct tecwrkus
  504. {
  505.   USHORT   cwlen;                  /* Length of record                       */
  506.   USHORT   cwtype;                 /* Type of record                         */
  507.   UCHAR    cwname[CECWKUNM + 1];   /* User name                              */
  508.   UCHAR    cwremark[CECWKREM + 1]; /* Comment field                          */
  509.   UCHAR    cwstylef[9];            /* Initial style file name - no extnsn    */
  510.   USHORT   cwvewrtm;               /* Can user view RTM info ?               */
  511.   USHORT   cwalert;                /* Has user got ALERT permission ?        */
  512.   USHORT   cwchghan;               /* Can change LU/Pool name accessed ?     */
  513.   USHORT   cwmaxses;               /* Maximum number of active sessions 1-10 */
  514.   USHORT   cwnumrec;               /* Number of sessions for user            */
  515.   TECWRKSD cwsesdat[CE3MASMX];     /* Session information records            */
  516.   USHORT   cwmodisf;               /* Permission to modify initial style     */
  517.   USHORT   cwpad;                  /* 2 bytes of padding                     */
  518.   USHORT   cwnumrmp;               /* Number of LUs/Pools in remap list      */
  519.   TECWRKSD cwremap[1];             /* LU/Pool Remap list                     */
  520. } TECWRKUS;
  521. /*****************************************************************************/
  522. /* Structures for the diagnostics record.                                    */
  523. /*****************************************************************************/
  524. #define CERTDIAG  0x0001           /* Diagnostics record type                */
  525. #define CECNUMAL  20               /* Max number of ALERTs configurable      */
  526. #define CECALRNM  52               /* Length of ALERT description 52 (arr sz)*/
  527. #define CECALRNA  34               /* Actual length of ALERT desc is 34      */
  528. #define CECALRPR  32               /* Length of parameter description        */
  529. #define CECONAME  8                /* Length of connection name              */
  530. #define CESTRLEN  128              /* Length of a string + 1                 */
  531. #define CECCNLEN  15               /* Length of a computer name              */
  532. typedef struct tedalert
  533. {
  534.   UCHAR    dalrtnam[CECALRNM + 1]; /* Description of the ALERT number        */
  535.   UCHAR    daparam1[CECALRPR + 1]; /* Description of parameter 1             */
  536.   UCHAR    daparam2[CECALRPR + 1]; /* Description of parameter 2             */
  537.   UCHAR    daparam3[CECALRPR + 1]; /* Description of parameter 3             */
  538. } TEDALERT;
  539. typedef struct tediagns
  540. {
  541.   USHORT   dilen;                  /* Length of record                       */
  542.   USHORT   ditype;                 /* Type of record                         */
  543.   UCHAR    dinetmgt[CECONAME + 1]; /* Network Management Connection name     */
  544.   USHORT   disrtmco;               /* Send RTM data at counter overflow      */
  545.   USHORT   disrtmub;               /* Send RTM data at UNBIND                */
  546.   USHORT   diwruldr;               /* RTM timers run until:                  */
  547. #define CERTWRIT 0                 /*  0 - first data reaches screen         */
  548. #define CERTUNLK 1                 /*  1 - host unlocks keyboard             */
  549. #define CERTDIRE 2                 /*  2 - host lets user send               */
  550.   USHORT   dirtmth1;               /* RTM threshold #1                       */
  551.   USHORT   dirtmth2;               /* RTM threshold #2                       */
  552.   USHORT   dirtmth3;               /* RTM threshold #3                       */
  553.   USHORT   dirtmth4;               /* RTM threshold #4                       */
  554.   TEDALERT dialerts[CECNUMAL];     /* ALERT description records              */
  555.   UCHAR    diaudit[CESTRLEN];      /* Audit log filename                     */
  556.   UCHAR    dierror[CESTRLEN];      /* Error log filename                     */
  557.   USHORT   diaudlev;               /* Default audit level                    */
  558.                                    /*   0   -   level 6                      */
  559.                                    /*   1   -   level 8                      */
  560.                                    /*   2   -   level 10                     */
  561.   UCHAR    dipad[CECCNLEN + 1];    /* 16 bytes of padding                    */
  562. } TEDIAGNS;
  563. /*****************************************************************************/
  564. /* Routine to access config information                                      */
  565. /*****************************************************************************/
  566. #ifndef WIN32_SUPPORT
  567. USHORT APIENTRY sepdcrec(UCHAR FAR *, USHORT, USHORT FAR * );
  568. #else
  569. USHORT WINAPI sepdcrec(UCHAR *, USHORT, USHORT * );
  570. #endif
  571. /*****************************************************************************/
  572. /* Return codes from sepdcrec                                                */
  573. /*****************************************************************************/
  574. #define NOCSSRVR 1                   /* No config server available           */
  575. #define NODGNREC 2                   /* Diagnostics record not found         */
  576. #define NOUSRREC 3                   /* No user record found for this user   */
  577. #define BUF2SMAL 4                   /* Buffer too small                     */
  578. #define NONOS    5                   /* Network not started                  */
  579. #define NOTLOGON 6                   /* User not logged on to network        */
  580. #define READERR  7                   /* File read error                      */
  581. #define NONAP    8                   /* NAP not started                      */
  582. #define MAXAPP   9                   /* Max # of client apps reached         */
  583. #define ERROR_SERVER 14              /* Error on the server end of the RPC   */
  584. #define ERROR_LOCAL_FAILURE 15       /* Error on the local end of the RPC    */
  585. /*****************************************************************************/
  586. /* Structure of version information block                                    */
  587. /*****************************************************************************/
  588. typedef struct cs_info {
  589.   unsigned short    length;            /* length of this struct (bytes)      */
  590.                                        /* (supplied parameter)               */
  591.   unsigned char     major_ver;         /* CS major ver CS1.1->1, CS2.0->2    */
  592.   unsigned char     minor_ver;         /* CS minor ver CS1.1->10 (dec)       */
  593.   unsigned char     config_share[80];  /* name of share point of current     */
  594.                                        /* config file = default location for */
  595.                                        /* style file \boxshare (null      */
  596.                                        /* terminated)                        */
  597.   unsigned short    nos;               /* NOS that the LAN is running        */
  598. #define Workstation 0
  599. #define LANMan      1      /* Also LAN Server, unless we can differentiate   */
  600. #define NetWare     2
  601. } CS_INFO;
  602. /*****************************************************************************/
  603. /* Routine to get version information                                        */
  604. /*****************************************************************************/
  605. #ifndef WIN32_SUPPORT
  606. USHORT APIENTRY sepdgetinfo(struct cs_info far * );
  607. #else
  608. USHORT WINAPI sepdgetinfo(struct cs_info * );
  609. #endif
  610. /*****************************************************************************/
  611. /* Additional return code from sepdgetinfo.                                  */
  612. /*****************************************************************************/
  613. #define BADLNGTH 2
  614. /*****************************************************************************/
  615. /* Function definition for fmistrings dll entry point                        */
  616. /*****************************************************************************/
  617. int WINAPI GetFmiReturnCode (UINT,UINT,UINT,unsigned char FAR * );
  618. /*****************************************************************************/
  619. /* typedef for casting proc address return from GetProcAddress               */
  620. /*****************************************************************************/
  621. typedef int (FAR WINAPI * PGETFMISTR)(UINT, UINT, UINT, char FAR *);
  622. /*****************************************************************************/
  623. /* Macro for creating the first parameter for the GetFmiReturnCode call when */
  624. /* using the error code and qualifier off a FMI status message.              */
  625. /*****************************************************************************/
  626. #define FMISTAT_TO_INT(code, qual)  ((INTEGER) (((code >> 8) << 8) | (qual >> 8)))
  627. #ifdef WIN32_SUPPORT
  628.   #pragma pack()
  629. #endif
  630. #ifdef __cplusplus
  631. }
  632. #endif
  633. #endif
  634. /* End of file fmi.h */