/****************************** Module Header ******************************\ * * Module Name: SNADOS.H * * Description: Microsoft SNA Server MSDOS specific 3270 Emulator Interface * definitions. * * Copyright (c) 1994, Microsoft Corporation. All rights reserved. * \***************************************************************************/ #ifdef __cplusplus extern "C" { #endif /* Common definitions */ #define PASCAL pascal #define FAR far #define NEAR near #define VOID void #define APIENTRY far pascal #ifndef WINAPI #define WINAPI APIENTRY #endif #define CHAR char /* ch */ #define SHORT short /* s */ #define LONG long /* l */ #define INT int /* i */ typedef unsigned char UCHAR; /* uch */ typedef unsigned short USHORT; /* us */ typedef unsigned long ULONG; /* ul */ typedef unsigned int UINT; /* ui */ typedef unsigned char BYTE; /* b */ typedef unsigned short SHANDLE; /* define NULL pointer value */ /* Echo the format of the ifdefs that stdio.h uses */ #if (_MSC_VER >= 600) #define NULL ((void *)0) #else #if (defined(M_I86L) || defined(M_I86CM) || defined(M_I86LM) || defined(M_I86HM)) #define NULL 0L #else #define NULL 0 #endif #endif typedef SHANDLE HFILE; /* hf */ typedef HFILE far *PHFILE; typedef unsigned char far *PSZ; typedef unsigned char near *NPSZ; typedef char far *LPSTR; typedef unsigned char far *PCH; typedef unsigned char near *NPCH; typedef int (pascal far *PFN)(); typedef int (pascal near *NPFN)(); typedef PFN far *PPFN; typedef BYTE FAR *PBYTE; typedef BYTE near *NPBYTE; typedef CHAR FAR *PCHAR; typedef SHORT FAR *PSHORT; typedef LONG FAR *PLONG; typedef INT FAR *PINT; typedef UCHAR FAR *PUCHAR; typedef USHORT FAR *PUSHORT; typedef ULONG FAR *PULONG; typedef UINT FAR *PUINT; typedef VOID FAR *PVOID; typedef unsigned short BOOL; /* f */ typedef BOOL FAR *PBOOL; #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif typedef unsigned short SEL; /* sel */ typedef SEL FAR *PSEL; /*** Useful Helper Macros */ /* Create untyped far pointer from selector and offset */ #define MAKEP(sel, off) ((PVOID)MAKEULONG(off, sel)) /* Extract selector or offset from far pointer */ #define SELECTOROF(p) (((PUSHORT)&(p))[1]) #define OFFSETOF(p) (((PUSHORT)&(p))[0]) /* Cast any variable to an instance of the specified type. */ #define MAKETYPE(v, type) (*((type far *)&v)) /* Calculate the byte offset of a field in a structure of type type. */ #define FIELDOFFSET(type, field) ((SHORT)&(((type *)0)->field)) /* Combine l & h to form a 32 bit quantity. */ #define MAKEULONG(l, h) ((ULONG)(((USHORT)(l)) | ((ULONG)((USHORT)(h))) << 16)) #define MAKELONG(l, h) ((LONG)MAKEULONG(l, h)) /* Combine l & h to form a 16 bit quantity. */ #define MAKEUSHORT(l, h) (((USHORT)(l)) | ((USHORT)(h)) << 8) #define MAKESHORT(l, h) ((SHORT)MAKEUSHORT(l, h)) /* Extract high and low order parts of 16 and 32 bit quantity */ #define LOBYTE(w) LOUCHAR(w) #define HIBYTE(w) HIUCHAR(w) #define LOUCHAR(w) ((UCHAR)(USHORT)(w)) #define HIUCHAR(w) ((UCHAR)(((USHORT)(w) >> 8) & 0xff)) #define LOUSHORT(l) ((USHORT)(ULONG)(l)) #define HIUSHORT(l) ((USHORT)(((ULONG)(l) >> 16) & 0xffff)) #define SWAPUSHORT(x) (x=(((x<<8)&0xFF00)|((x>>8)&0x00FF))) /*** Common DOS types */ typedef USHORT HMODULE; /* hmod */ typedef HMODULE FAR *PHMODULE; typedef USHORT PID; /* pid */ typedef PID FAR *PPID; typedef USHORT TID; /* tid */ typedef TID FAR *PTID; typedef VOID FAR *HSEM; /* hsem */ typedef HSEM FAR *PHSEM; /**** DOS FMI Error codes */ #define ERROR_SEM_TIMEOUT 0xfffc /* Time out happened from the */ /* semaphore api functions. */ #define ERROR_SEM_OWNED 0xfffd /* Semaphore is already owned */ /**** DOS FMI Semaphore functions */ extern USHORT APIENTRY CMDSemClear(HSEM); extern USHORT APIENTRY CMDSemRequest(HSEM, USHORT); extern USHORT APIENTRY CMDSemSet(HSEM); extern USHORT APIENTRY CMDSemWait(HSEM, USHORT); /*** DOS FMI TSR functions */ extern USHORT APIENTRY CMDGoTSR(ULONG, UCHAR FAR *, UCHAR FAR *); extern USHORT APIENTRY CMDStartFG(void); extern USHORT APIENTRY CMDStopFG(USHORT); /*** DOS FMI Task switching functions */ extern USHORT APIENTRY RegisterSwitchProc(ULONG); /*** Other DOS FMI functions */ extern USHORT APIENTRY SNAGetVersion(VOID); #ifdef __cplusplus } #endif