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

模拟服务器

开发平台:

C/C++

  1. /****************************** Module Header ******************************
  2. *
  3. * Module Name: SNADOS.H
  4. *
  5. * Description: Microsoft SNA Server MSDOS specific 3270 Emulator Interface
  6. *              definitions.
  7. *
  8. * Copyright (c) Microsoft Corporation.  All rights reserved.
  9. *
  10. ***************************************************************************/
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. /* Common definitions */
  15. #define PASCAL pascal
  16. #define FAR far
  17. #define NEAR near
  18. #define VOID void
  19. #define APIENTRY far pascal
  20. #ifndef WINAPI
  21. #define WINAPI APIENTRY
  22. #endif
  23. #define CHAR char /* ch  */
  24. #define SHORT short /* s   */
  25. #define LONG long /* l   */
  26. #define INT int /* i   */
  27. typedef unsigned char UCHAR; /* uch */
  28. typedef unsigned short USHORT; /* us  */
  29. typedef unsigned long ULONG; /* ul  */
  30. typedef unsigned int  UINT; /* ui  */
  31. typedef unsigned char BYTE; /* b   */
  32. typedef unsigned short SHANDLE;
  33. /* define NULL pointer value */
  34. /* Echo the format of the ifdefs that stdio.h uses */
  35. #if (_MSC_VER >= 600)
  36. #define NULL ((void *)0)
  37. #else
  38. #if (defined(M_I86L) || defined(M_I86CM) || defined(M_I86LM) || defined(M_I86HM))
  39. #define  NULL  0L
  40. #else
  41. #define  NULL  0
  42. #endif
  43. #endif
  44. typedef SHANDLE HFILE; /* hf */
  45. typedef HFILE far *PHFILE;
  46. typedef unsigned char far  *PSZ;
  47. typedef unsigned char near *NPSZ;
  48. typedef char far *LPSTR;
  49. typedef unsigned char far  *PCH;
  50. typedef unsigned char near *NPCH;
  51. typedef int   (pascal far  *PFN)();
  52. typedef int   (pascal near *NPFN)();
  53. typedef PFN far *PPFN;
  54. typedef BYTE   FAR  *PBYTE;
  55. typedef BYTE   near *NPBYTE;
  56. typedef CHAR   FAR *PCHAR;
  57. typedef SHORT  FAR *PSHORT;
  58. typedef LONG   FAR *PLONG;
  59. typedef INT    FAR *PINT;
  60. typedef UCHAR  FAR *PUCHAR;
  61. typedef USHORT FAR *PUSHORT;
  62. typedef ULONG  FAR *PULONG;
  63. typedef UINT   FAR *PUINT;
  64. typedef VOID   FAR *PVOID;
  65. typedef unsigned short BOOL; /* f   */
  66. typedef BOOL FAR *PBOOL;
  67. #ifndef TRUE
  68. #define TRUE    1
  69. #endif
  70. #ifndef FALSE
  71. #define FALSE   0
  72. #endif
  73. typedef unsigned short SEL; /* sel */
  74. typedef SEL FAR *PSEL;
  75. /*** Useful Helper Macros */
  76. /* Create untyped far pointer from selector and offset */
  77. #define MAKEP(sel, off)  ((PVOID)MAKEULONG(off, sel))
  78. /* Extract selector or offset from far pointer */
  79. #define SELECTOROF(p) (((PUSHORT)&(p))[1])
  80. #define OFFSETOF(p) (((PUSHORT)&(p))[0])
  81. /* Cast any variable to an instance of the specified type. */
  82. #define MAKETYPE(v, type) (*((type far *)&v))
  83. /* Calculate the byte offset of a field in a structure of type type. */
  84. #define FIELDOFFSET(type, field)    ((SHORT)&(((type *)0)->field))
  85. /* Combine l & h to form a 32 bit quantity. */
  86. #define MAKEULONG(l, h) ((ULONG)(((USHORT)(l)) | ((ULONG)((USHORT)(h))) << 16))
  87. #define MAKELONG(l, h) ((LONG)MAKEULONG(l, h))
  88. /* Combine l & h to form a 16 bit quantity. */
  89. #define MAKEUSHORT(l, h) (((USHORT)(l)) | ((USHORT)(h)) << 8)
  90. #define MAKESHORT(l, h)  ((SHORT)MAKEUSHORT(l, h))
  91. /* Extract high and low order parts of 16 and 32 bit quantity */
  92. #define LOBYTE(w) LOUCHAR(w)
  93. #define HIBYTE(w) HIUCHAR(w)
  94. #define LOUCHAR(w) ((UCHAR)(USHORT)(w))
  95. #define HIUCHAR(w) ((UCHAR)(((USHORT)(w) >> 8) & 0xff))
  96. #define LOUSHORT(l) ((USHORT)(ULONG)(l))
  97. #define HIUSHORT(l) ((USHORT)(((ULONG)(l) >> 16) & 0xffff))
  98. #define SWAPUSHORT(x) (x=(((x<<8)&0xFF00)|((x>>8)&0x00FF)))
  99. /*** Common DOS types */
  100. typedef USHORT   HMODULE; /* hmod */
  101. typedef HMODULE FAR *PHMODULE;
  102. typedef USHORT   PID; /* pid */
  103. typedef PID FAR *PPID;
  104. typedef USHORT   TID; /* tid */
  105. typedef TID FAR *PTID;
  106. typedef VOID FAR *HSEM;  /* hsem */
  107. typedef HSEM FAR *PHSEM;
  108. /**** DOS FMI Error codes */
  109. #define ERROR_SEM_TIMEOUT  0xfffc /* Time out happened from the     */
  110.                                   /* semaphore api functions.       */
  111. #define ERROR_SEM_OWNED    0xfffd /* Semaphore is already owned     */
  112. /**** DOS FMI Semaphore functions */
  113. extern USHORT  APIENTRY CMDSemClear(HSEM);
  114. extern USHORT  APIENTRY CMDSemRequest(HSEM, USHORT);
  115. extern USHORT  APIENTRY CMDSemSet(HSEM);
  116. extern USHORT  APIENTRY CMDSemWait(HSEM, USHORT);
  117. /*** DOS FMI TSR functions */
  118. extern USHORT  APIENTRY CMDGoTSR(ULONG, UCHAR FAR *, UCHAR FAR *);
  119. extern USHORT  APIENTRY CMDStartFG(void);
  120. extern USHORT  APIENTRY CMDStopFG(USHORT);
  121. /*** DOS FMI Task switching functions */
  122. extern USHORT  APIENTRY RegisterSwitchProc(ULONG);
  123. /*** Other DOS FMI functions */
  124. extern USHORT APIENTRY SNAGetVersion(VOID);
  125. #ifdef __cplusplus
  126. }
  127. #endif