(*# call(reg_saved => (si, di, ds, st1, st2), reg_param => (), near_call => off, ds_eq_ss => off) *) (*# name(prefix => none) *) (*# module(implementation=>off, init_code => off) *) (*# data(near_ptr => off) *) DEFINITION MODULE FAPI; (* * * $Header: D:/logfiles/masters/fapi.jpv 1.0 17 Mar 1991 18:23:16 coleb $ * *) (*/NOMODINIT*) (**************************************************************************\ * * OS/2 Common Definitions * \***************************************************************************) IMPORT SYSTEM; TYPE SHANDLE = CARDINAL; TYPE LHANDLE = SYSTEM.ADDRESS; TYPE UCHAR = SYSTEM.BYTE; (*uch *) TYPE USHORT = CARDINAL; (*us *) TYPE ULONG = LONGINT; (*ul *) TYPE UINT = CARDINAL; (*ui *) TYPE BYTE = SYSTEM.BYTE; (*b *) (*define NULL pointer value *) (*Echo the format of the ifdefs that stdio.h uses *) CONST NULL = SYSTEM.ADDRESS(VAL(LONGINT, 0)); TYPE HFILE = SHANDLE; (*hf *) TYPE PHFILE = POINTER TO HFILE; TYPE PSZ = POINTER TO SYSTEM.BYTE; TYPE NPSZ = POINTER TO SYSTEM.BYTE; TYPE PCH = SYSTEM.ADDRESS; TYPE NPCH = POINTER TO SYSTEM.BYTE; TYPE PFN = PROCEDURE(); TYPE NPFN = PROCEDURE(); TYPE PPFN = POINTER TO PFN; TYPE PBYTE = POINTER TO BYTE; TYPE NPBYTE = POINTER TO BYTE; TYPE PCHAR = POINTER TO CHAR; TYPE PPCHAR = POINTER TO PCHAR; TYPE PSHORT = POINTER TO INTEGER; TYPE PLONG = POINTER TO LONGINT; TYPE PINT = POINTER TO INTEGER; TYPE PUCHAR = POINTER TO UCHAR; TYPE PUSHORT = POINTER TO USHORT; TYPE PULONG = POINTER TO ULONG; TYPE PUINT = POINTER TO UINT; TYPE PVOID = SYSTEM.ADDRESS; TYPE BOOL = BOOLEAN; (*f *) TYPE PBOOL = POINTER TO BOOL; TYPE SEL = CARDINAL; (*sel *) TYPE PSEL = POINTER TO SEL; (** Common Error definitions ****) TYPE ERRORID = ULONG; (*errid *) TYPE PERRORID = POINTER TO ERRORID; (*Severity codes *) CONST SEVERITY_NOERROR = 0000H; CONST SEVERITY_WARNING = 0004H; CONST SEVERITY_ERROR = 0008H; CONST SEVERITY_SEVERE = 000CH; CONST SEVERITY_UNRECOVERABLE = 0010H; (*Base component error values *) CONST WINERR_BASE = 1000H; (*Window Manager *) CONST GPIERR_BASE = 2000H; (*Graphics Presentation Interface *) CONST DEVERR_BASE = 3000H; (*Device Manager *) CONST SPLERR_BASE = 4000H; (*Spooler *) (** Common types used across components *) (** Common DOS types *) TYPE HMODULE = USHORT; (*hmod *) TYPE PHMODULE = POINTER TO HMODULE; TYPE PID = USHORT; (*pid *) TYPE PPID = POINTER TO PID; TYPE TID = USHORT; (*tid *) TYPE PTID = POINTER TO TID; TYPE HSEM = SYSTEM.ADDRESS; (*hsem *) TYPE PHSEM = POINTER TO HSEM; (** Common SUP types *) TYPE HAB = LHANDLE; (*hab *) TYPE PHAB = POINTER TO HAB; (** Common GPI/DEV types *) TYPE HPS = LHANDLE; (*hps *) TYPE PHPS = POINTER TO HPS; TYPE HDC = LHANDLE; (*hdc *) TYPE PHDC = POINTER TO HDC; TYPE HRGN = LHANDLE; (*hrgn *) TYPE PHRGN = POINTER TO HRGN; TYPE HBITMAP = LHANDLE; (*hbm *) TYPE PHBITMAP = POINTER TO HBITMAP; TYPE HMF = LHANDLE; (*hmf *) TYPE PHMF = POINTER TO HMF; TYPE COLOR = LONGINT; (*clr *) TYPE PCOLOR = POINTER TO COLOR; TYPE _POINTL = RECORD(*ptl *) x: LONGINT; y: LONGINT; END; TYPE POINTL = _POINTL; TYPE PPOINTL = POINTER TO POINTL; TYPE NPPOINTL = POINTER TO POINTL; TYPE _POINTS = RECORD(*pts *) x: INTEGER; y: INTEGER; END; TYPE POINTS = _POINTS; TYPE PPOINTS = POINTER TO POINTS; TYPE _RECTL = RECORD(*rcl *) xLeft: LONGINT; yBottom: LONGINT; xRight: LONGINT; yTop: LONGINT; END; TYPE RECTL = _RECTL; TYPE PRECTL = POINTER TO RECTL; TYPE NPRECTL = POINTER TO RECTL; TYPE STR8 = ARRAY [0 .. ((8) - 1)] OF CHAR; (*str8 *) TYPE PSTR8 = POINTER TO STR8; (** common DEV/SPL types *) (*structure for Device Driver data *) TYPE _DRIVDATA = RECORD(*driv *) cb: LONGINT; lVersion: LONGINT; szDeviceName: ARRAY [0 .. ((32) - 1)] OF CHAR; abGeneralData: ARRAY [0 .. ((1) - 1)] OF CHAR; END; TYPE DRIVDATA = _DRIVDATA; TYPE PDRIVDATA = POINTER TO DRIVDATA; (*array indices for array parameter for DevOpenDC, SplQmOpen or SplQpOpen *) CONST ADDRESS = 0; CONST DRIVER_NAME = 1; CONST DRIVER_DATA = 2; CONST DATA_TYPE = 3; CONST COMMENT = 4; CONST PROC_NAME = 5; CONST PROC_PARAMS = 6; CONST SPL_PARAMS = 7; CONST NETWORK_PARAMS = 8; (*structure definition as an alternative of the array parameter *) TYPE _DEVOPENSTRUC = RECORD(*dop *) pszLogAddress: PSZ; pszDriverName: PSZ; pdriv: PDRIVDATA; pszDataType: PSZ; pszComment: PSZ; pszQueueProcName: PSZ; pszQueueProcParams: PSZ; pszSpoolerParams: PSZ; pszNetworkParams: PSZ; END; TYPE DEVOPENSTRUC = _DEVOPENSTRUC; TYPE PDEVOPENSTRUC = POINTER TO DEVOPENSTRUC; (** common AVIO/GPI types *) (*values of fsSelection field of FATTRS structure *) CONST FATTR_SEL_ITALIC = 0001H; CONST FATTR_SEL_UNDERSCORE = 0002H; CONST FATTR_SEL_OUTLINE = 0008H; (*Hollow Outline Font *) CONST FATTR_SEL_STRIKEOUT = 0010H; CONST FATTR_SEL_BOLD = 0020H; (*values of fsType field of FATTRS structure *) CONST FATTR_TYPE_KERNING = 0004H; CONST FATTR_TYPE_MBCS = 0008H; CONST FATTR_TYPE_DBCS = 0010H; CONST FATTR_TYPE_ANTIALIASED = 0020H; (*values of fsFontUse field of FATTRS structure *) CONST FATTR_FONTUSE_NOMIX = 0002H; CONST FATTR_FONTUSE_OUTLINE = 0004H; CONST FATTR_FONTUSE_TRANSFORMABLE = 0008H; (*size for fields in the font structures *) CONST FACESIZE = 32; (*font struct for Vio/GpiCreateLogFont *) TYPE _FATTRS = RECORD(*fat *) usRecordLength: USHORT; fsSelection: USHORT; lMatch: LONGINT; szFacename: ARRAY [0 .. ((FACESIZE) - 1)] OF CHAR; idRegistry: USHORT; usCodePage: USHORT; lMaxBaselineExt: LONGINT; lAveCharWidth: LONGINT; fsType: USHORT; fsFontUse: USHORT; END; TYPE FATTRS = _FATTRS; TYPE PFATTRS = POINTER TO FATTRS; (*values of fsType field of FONTMETRICS structure *) CONST FM_TYPE_FIXED = 0001H; CONST FM_TYPE_LICENSED = 0002H; CONST FM_TYPE_KERNING = 0004H; CONST FM_TYPE_DBCS = 0010H; CONST FM_TYPE_MBCS = 0018H; CONST FM_TYPE_64K = 8000H; (*values of fsDefn field of FONTMETRICS structure *) CONST FM_DEFN_OUTLINE = 0001H; CONST FM_DEFN_GENERIC = 8000H; (*values of fsSelection field of FONTMETRICS structure *) CONST FM_SEL_ITALIC = 0001H; CONST FM_SEL_UNDERSCORE = 0002H; CONST FM_SEL_NEGATIVE = 0004H; CONST FM_SEL_OUTLINE = 0008H; (*Hollow Outline Font *) CONST FM_SEL_STRIKEOUT = 0010H; CONST FM_SEL_BOLD = 0020H; (*values of fsCapabilities field of FONTMETRICS structure *) CONST FM_CAP_NOMIX = 0001H; (*font metrics returned by GpiQueryFonts and others *) TYPE _FONTMETRICS = RECORD(*fm *) szFamilyname: ARRAY [0 .. ((FACESIZE) - 1)] OF CHAR; szFacename: ARRAY [0 .. ((FACESIZE) - 1)] OF CHAR; idRegistry: USHORT; usCodePage: USHORT; lEmHeight: LONGINT; lXHeight: LONGINT; lMaxAscender: LONGINT; lMaxDescender: LONGINT; lLowerCaseAscent: LONGINT; lLowerCaseDescent: LONGINT; lInternalLeading: LONGINT; lExternalLeading: LONGINT; lAveCharWidth: LONGINT; lMaxCharInc: LONGINT; lEmInc: LONGINT; lMaxBaselineExt: LONGINT; sCharSlope: INTEGER; sInlineDir: INTEGER; sCharRot: INTEGER; usWeightClass: USHORT; usWidthClass: USHORT; sXDeviceRes: INTEGER; sYDeviceRes: INTEGER; sFirstChar: INTEGER; sLastChar: INTEGER; sDefaultChar: INTEGER; sBreakChar: INTEGER; sNominalPointSize: INTEGER; sMinimumPointSize: INTEGER; sMaximumPointSize: INTEGER; fsType: USHORT; fsDefn: USHORT; fsSelection: USHORT; fsCapabilities: USHORT; lSubscriptXSize: LONGINT; lSubscriptYSize: LONGINT; lSubscriptXOffset: LONGINT; lSubscriptYOffset: LONGINT; lSuperscriptXSize: LONGINT; lSuperscriptYSize: LONGINT; lSuperscriptXOffset: LONGINT; lSuperscriptYOffset: LONGINT; lUnderscoreSize: LONGINT; lUnderscorePosition: LONGINT; lStrikeoutSize: LONGINT; lStrikeoutPosition: LONGINT; sKerningPairs: INTEGER; sFamilyClass: INTEGER; lMatch: LONGINT; END; TYPE FONTMETRICS = _FONTMETRICS; TYPE PFONTMETRICS = POINTER TO FONTMETRICS; (** Common WIN types *) TYPE HWND = LHANDLE; (*hwnd *) TYPE PHWND = POINTER TO HWND; TYPE _WRECT = RECORD(*wrc *) xLeft: INTEGER; dummy1: INTEGER; yBottom: INTEGER; dummy2: INTEGER; xRight: INTEGER; dummy3: INTEGER; yTop: INTEGER; dummy4: INTEGER; END; TYPE WRECT = _WRECT; TYPE PWRECT = POINTER TO WRECT; TYPE NPWRECT = POINTER TO WRECT; TYPE _WPOINT = RECORD(*wpt *) x: INTEGER; dummy1: INTEGER; y: INTEGER; dummy2: INTEGER; END; TYPE WPOINT = _WPOINT; TYPE PWPOINT = POINTER TO WPOINT; TYPE NPWPOINT = POINTER TO WPOINT; (** General services *) PROCEDURE DOSBEEP ( usFrequency: USHORT; usDuration: USHORT): USHORT; (** Process and Thread support *) PROCEDURE DOSEXIT ( fTerminate: USHORT; usExitCode: USHORT); (*DosExit fTerminate *) CONST EXIT_THREAD = 0; CONST EXIT_PROCESS = 1; TYPE _PIDINFO = RECORD(*pidi *) pid: PID; tid: TID; pidParent: PID; END; TYPE PIDINFO = _PIDINFO; TYPE PPIDINFO = POINTER TO PIDINFO; PROCEDURE DOSSLEEP ( ulTime: ULONG): USHORT; (*codeTerminate values (also passed to ExitList routines) *) CONST TC_EXIT = 0; CONST TC_HARDERROR = 1; CONST TC_TRAP = 2; CONST TC_KILLPROCESS = 3; TYPE _RESULTCODES = RECORD codeTerminate: USHORT; codeResult: USHORT; END; TYPE RESULTCODES = _RESULTCODES; TYPE PRESULTCODES = POINTER TO RESULTCODES; PROCEDURE DOSEXECPGM ( pchFailName: PCHAR; cbFailName: INTEGER; fExecFlags: USHORT; pszArgs: PSZ; pszEnv: PSZ; prescResults: PRESULTCODES; pszPgmName: PSZ): USHORT; (*DosExecPgm fExecFlags *) CONST EXEC_SYNC = 0; CONST EXEC_ASYNC = 1; CONST EXEC_ASYNCRESULT = 2; CONST EXEC_TRACE = 3; CONST EXEC_BACKGROUND = 4; PROCEDURE DOSGETPID ( ppidInfo: PPIDINFO): USHORT; (** InfoSeg support *) (*Global Information Segment *) TYPE _GINFOSEG = RECORD(*gis *) time: ULONG; msecs: ULONG; hour: UCHAR; minutes: UCHAR; seconds: UCHAR; hundredths: UCHAR; timezone: USHORT; cusecTimerInterval: USHORT; day: UCHAR; month: UCHAR; year: USHORT; weekday: UCHAR; uchMajorVersion: UCHAR; uchMinorVersion: UCHAR; chRevisionLetter: UCHAR; sgCurrent: UCHAR; sgMax: UCHAR; cHugeShift: UCHAR; fProtectModeOnly: UCHAR; pidForeground: USHORT; fDynamicSched: UCHAR; csecMaxWait: UCHAR; cmsecMinSlice: USHORT; cmsecMaxSlice: USHORT; bootdrive: USHORT; amecRAS: ARRAY [0 .. ((32) - 1)] OF UCHAR; csgWindowableVioMax: UCHAR; csgPMMax: UCHAR; END; TYPE GINFOSEG = _GINFOSEG; TYPE PGINFOSEG = POINTER TO GINFOSEG; (*Local Information Segment *) TYPE _LINFOSEG = RECORD(*lis *) pidCurrent: PID; pidParent: PID; prtyCurrent: USHORT; tidCurrent: TID; sgCurrent: USHORT; rfProcStatus: UCHAR; dummy1: UCHAR; fForeground: BOOL; typeProcess: UCHAR; dummy2: UCHAR; selEnvironment: SEL; offCmdLine: USHORT; cbDataSegment: USHORT; cbStack: USHORT; cbHeap: USHORT; hmod: HMODULE; selDS: SEL; END; TYPE LINFOSEG = _LINFOSEG; TYPE PLINFOSEG = POINTER TO LINFOSEG; (*Process Type codes (local information segment typeProcess field) *) CONST PT_FULLSCREEN = 0; (*Full screen application *) CONST PT_REALMODE = 1; (*Real mode process *) CONST PT_WINDOWABLEVIO = 2; (*VIO windowable application *) CONST PT_PM = 3; (*Presentation Manager application *) CONST PT_DETACHED = 4; (*Detached application *) (*Process Status Flag definitions (local info seg rfProcStatus field) *) CONST PS_EXITLIST = 1; (*Thread is in exitlist routine *) (* * CCHMAXPATH is the maximum fully qualified path name length including * the drive letter, colon, backslashes and terminating NULL. *) CONST CCHMAXPATH = 260; (* * CCHMAXPATHCOMP is the maximum individual path component name length * including a terminating NULL. *) CONST CCHMAXPATHCOMP = 256; (** File manager *) (*DosChgFilePtr() file position codes *) CONST FILE_BEGIN = 0000H; (*relative to beginning of file *) CONST FILE_CURRENT = 0001H; (*relative to current fptr position*) CONST FILE_END = 0002H; (*relative to end of file *) (*DosFindFirst/Next Directory handle types *) CONST HDIR_SYSTEM = 0001H; (*Use system handle (1) *) CONST HDIR_CREATE = 0FFFFH; (*Allocate a new, unused handle *) (*Append to existing file, don't replace*) (*DosOpen/DosQFHandState/DosQueryFileInfo et al file attributes; also*) (*known as Dos File Mode bits... *) CONST FILE_NORMAL = 0000H; CONST FILE_READONLY = 0001H; CONST FILE_HIDDEN = 0002H; CONST FILE_SYSTEM = 0004H; CONST FILE_DIRECTORY = 0010H; CONST FILE_ARCHIVED = 0020H; (*DosOpen() actions *) CONST FILE_EXISTED = 0001H; CONST FILE_CREATED = 0002H; CONST FILE_TRUNCATED = 0003H; (*DosOpen() open flags *) CONST FILE_OPEN = 0001H; CONST FILE_TRUNCATE = 0002H; CONST FILE_CREATE = 0010H; (*applies if file already exists *) CONST OPEN_ACTION_FAIL_IF_EXISTS = 0000H; (*---- ---- ---- 0000 *) CONST OPEN_ACTION_OPEN_IF_EXISTS = 0001H; (*---- ---- ---- 0001 *) CONST OPEN_ACTION_REPLACE_IF_EXISTS = 0002H; (*---- ---- ---- 0010 *) (*applies if file does not exist *) CONST OPEN_ACTION_FAIL_IF_NEW = 0000H; (*---- ---- 0000 ---- *) CONST OPEN_ACTION_CREATE_IF_NEW = 0010H; (*---- ---- 0001 ---- *) (*DosOpen/DosSetFHandState flags *) CONST OPEN_ACCESS_READONLY = 0000H; (*---- ---- ---- -000 *) CONST OPEN_ACCESS_WRITEONLY = 0001H; (*---- ---- ---- -001 *) CONST OPEN_ACCESS_READWRITE = 0002H; (*---- ---- ---- -010 *) CONST OPEN_SHARE_DENYREADWRITE = 0010H; (*---- ---- -001 ---- *) CONST OPEN_SHARE_DENYWRITE = 0020H; (*---- ---- -010 ---- *) CONST OPEN_SHARE_DENYREAD = 0030H; (*---- ---- -011 ---- *) CONST OPEN_SHARE_DENYNONE = 0040H; (*---- ---- -100 ---- *) CONST OPEN_FLAGS_NOINHERIT = 0080H; (*---- ---- 1--- ---- *) CONST OPEN_FLAGS_NO_LOCALITY = 0000H; (*---- -000 ---- ---- *) CONST OPEN_FLAGS_SEQUENTIAL = 0100H; (*---- -001 ---- ---- *) CONST OPEN_FLAGS_RANDOM = 0200H; (*---- -010 ---- ---- *) CONST OPEN_FLAGS_RANDOMSEQUENTIAL = 0300H; (*---- -011 ---- ---- *) CONST OPEN_FLAGS_NO_CACHE = 1000H; (*---1 ---- ---- ---- *) CONST OPEN_FLAGS_FAIL_ON_ERROR = 2000H; (*--1- ---- ---- ---- *) CONST OPEN_FLAGS_WRITE_THROUGH = 4000H; (*-1-- ---- ---- ---- *) CONST OPEN_FLAGS_DASD = 8000H; (*1--- ---- ---- ---- *) CONST SEARCH_PATH = 0000H; CONST SEARCH_CUR_DIRECTORY = 0001H; CONST SEARCH_ENVIRONMENT = 0002H; CONST SEARCH_IGNORENETERRS = 0004H; (* * DosFileIO *) (*File IO command words *) CONST FIO_LOCK = 0; (*Lock Files *) CONST FIO_UNLOCK = 1; (*Unlock Files *) CONST FIO_SEEK = 2; (*Seek (set file ptr) *) CONST FIO_READ = 3; (*File Read *) CONST FIO_WRITE = 4; (*File Write *) (*Lock Sharing Modes *) CONST FIO_NOSHARE = 0; (*None *) CONST FIO_SHAREREAD = 1; (*Read-Only *) TYPE _FIOLOCKCMD = RECORD(*FLC FileLockCmd prefix *) usCmd: USHORT;(*Cmd = FIO_LOCK *) cLockCnt: USHORT;(*Lock records that follow *) cTimeOut: ULONG;(*in Msec *) END; TYPE FIOLOCKCMD = _FIOLOCKCMD; TYPE PFIOLOCKCMD = POINTER TO FIOLOCKCMD; TYPE _FIOLOCKREC = RECORD(*FLR FileLockRecord *) fShare: USHORT;(*FIO_NOSHARE or FIO_SHAREREAD *) cbStart: ULONG;(*Starting offset for lock region *) cbLength: ULONG;(*Length of lock region *) END; TYPE FIOLOCKREC = _FIOLOCKREC; TYPE PFIOLOCKREC = POINTER TO FIOLOCKREC; TYPE _FIOUNLOCKCMD = RECORD(*FUC FileUnlockCmd prefix *) usCmd: USHORT;(*Cmd = FIO_UNLOCK *) cUnlockCnt: USHORT;(*Unlock records that follow *) END; TYPE FIOUNLOCKCMD = _FIOUNLOCKCMD; TYPE PFIOUNLOCKCMD = POINTER TO FIOUNLOCKCMD; TYPE _FIOUNLOCKREC = RECORD(*FUR FileUnlockRecord *) cbStart: ULONG;(*Starting offset for unlock region *) cbLength: ULONG;(*Length of unlock region *) END; TYPE FIOUNLOCKREC = _FIOUNLOCKREC; TYPE PFIOUNLOCKREC = POINTER TO FIOUNLOCKREC; TYPE _FIOSEEKCMD = RECORD(*FSC Seek command structure *) usCmd: USHORT;(*Cmd = FIO_SEEK *) fsMethod: USHORT;(*One of&gml FPM_BEGINNING, FPM_CURRENT, *) (*or FPM_END *) cbDistance: ULONG;(*Byte offset for seek *) cbNewPosition: ULONG;(*Bytes from start of file after seek *) END; TYPE FIOSEEKCMD = _FIOSEEKCMD; TYPE PFIOSEEKCMD = POINTER TO FIOSEEKCMD; TYPE _FIOREADWRITE = RECORD(*FRWC Read&Write command structure *) usCmd: USHORT;(*Cmd = FIO_READ or FIO_WRITE *) pbBuffer: PVOID;(*Pointer to data buffer *) cbBufferLen: USHORT;(*Bytes in buffer or max size *) cbActualLen: USHORT;(*Bytes actually read/written *) END; TYPE FIOREADWRITE = _FIOREADWRITE; TYPE PFIOREADWRITE = POINTER TO FIOREADWRITE; (** * EA Info Levels & Find First/Next * API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo *) (*File info levels : All listed API's *) CONST FIL_STANDARD = 1; (*Info level 1, standard file info *) CONST FIL_QUERYEASIZE = 2; (*Level 2, return Full EA size *) CONST FIL_QUERYEASFROMLIST = 3; (*Level 3, return requested EA's *) (*File info levels: Dos...PathInfo only *) CONST FIL_QUERYFULLNAME = 5; (*Level 5, return fully qualified *) (* name of file *) CONST FIL_NAMEISVALID = 6; (*Level 6, check validity of *) (*file/path name for this FSD *) (*DosFindNotifyFirst() *) CONST FNOTIL_STANDARD = 1; (*Find-Notify Info level 1&gml Return *) (*standard directory change info *) (*DosQueryFSAttach() *) (*Information level types (defines method of query) *) CONST FSAIL_QUERYNAME = 1; (*Return data for a Drive or Device *) CONST FSAIL_DEVNUMBER = 2; (*Return data for Ordinal Device # *) CONST FSAIL_DRVNUMBER = 3; (*Return data for Ordinal Drive # *) (*Item types (from data structure item "iType") *) CONST FSAT_CHARDEV = 1; (*Resident character device *) CONST FSAT_PSEUDODEV = 2; (*Pusedu-character device *) CONST FSAT_LOCALDRV = 3; (*Local drive *) CONST FSAT_REMOTEDRV = 4; (*Remote drive attached to FSD *) (*Data structure for QFSAttach *) TYPE _FSQBUFFER = RECORD(*fsqbf *) iType: USHORT;(*Item type *) cbName: USHORT;(*Length of item name, sans NULL *) szName: ARRAY [0 .. ((1) - 1)] OF UCHAR;(*ASCIIZ item name *) cbFSDName: USHORT;(*Length of FSD name, sans NULL *) szFSDName: ARRAY [0 .. ((1) - 1)] OF UCHAR;(*ASCIIZ FSD name *) cbFSAData: USHORT;(*Length of FSD Attach data returned *) rgFSAData: ARRAY [0 .. ((1) - 1)] OF UCHAR;(*FSD Attach data from FSD *) END; TYPE FSQBUFFER = _FSQBUFFER; TYPE PFSQBUFFER = POINTER TO FSQBUFFER; (* * File System Drive Information&gml DosQFSInfo DosSetFSInfo *) (*FS Drive Info Levels *) CONST FSIL_ALLOC = 1; (*Drive allocation info (Query only) *) CONST FSIL_VOLSER = 2; (*Drive Volume/Serial information *) (*HANDTYPE values *) CONST HANDTYPE_FILE = 0000H; CONST HANDTYPE_DEVICE = 0001H; CONST HANDTYPE_PIPE = 0002H; CONST HANDTYPE_NETWORK = 8000H; (*DosQHandType() *) (*Handle classes (low 8 bits of Handle Type) *) CONST FHT_DISKFILE = 0000H; (*Disk file handle *) CONST FHT_CHRDEV = 0001H; (*Character device handle *) CONST FHT_PIPE = 0002H; (*Pipe handle *) (*Handle bits (high 8 bits of Handle Type) *) CONST FHB_DSKREMOTE = 8000H; (*Remote disk *) CONST FHB_CHRDEVREMOTE = 8001H; (*Remote character device *) CONST FHB_PIPEREMOTE = 8002H; (*Remote pipe *) (*File time and date types *) TYPE FTIME = CARDINAL; TYPE FDATE = CARDINAL; TYPE PFDATE = POINTER TO FDATE; TYPE _FILEFINDBUF = RECORD(*findbuf *) fdateCreation: FDATE; ftimeCreation: FTIME; fdateLastAccess: FDATE; ftimeLastAccess: FTIME; fdateLastWrite: FDATE; ftimeLastWrite: FTIME; cbFile: ULONG; cbFileAlloc: ULONG; attrFile: USHORT; cchName: UCHAR; achName: ARRAY [0 .. ((CCHMAXPATHCOMP) - 1)] OF CHAR; END; TYPE FILEFINDBUF = _FILEFINDBUF; TYPE PFILEFINDBUF = POINTER TO FILEFINDBUF; TYPE _FILEFINDBUF2 = RECORD(*findbuf2 *) fdateCreation: FDATE; ftimeCreation: FTIME; fdateLastAccess: FDATE; ftimeLastAccess: FTIME; fdateLastWrite: FDATE; ftimeLastWrite: FTIME; cbFile: ULONG; cbFileAlloc: ULONG; attrFile: USHORT; cbList: ULONG; cchName: UCHAR; achName: ARRAY [0 .. ((CCHMAXPATHCOMP) - 1)] OF CHAR; END; TYPE FILEFINDBUF2 = _FILEFINDBUF2; TYPE PFILEFINDBUF2 = POINTER TO FILEFINDBUF2; (*extended attribute structures *) TYPE _GEA = RECORD(*gea *) cbName: BYTE;(*name length not including NULL *) szName: ARRAY [0 .. ((1) - 1)] OF CHAR;(*attribute name *) END; TYPE GEA = _GEA; TYPE PGEA = POINTER TO GEA; TYPE _GEALIST = RECORD(*geal *) cbList: ULONG;(*total bytes of structure inc full list *) list: ARRAY [0 .. ((1) - 1)] OF GEA;(*variable length GEA structures *) END; TYPE GEALIST = _GEALIST; TYPE PGEALIST = POINTER TO GEALIST; TYPE _FEA = RECORD(*fea *) fEA: BYTE;(*flags *) cbName: BYTE;(*name length not including NULL *) cbValue: USHORT;(*value length *) END; TYPE FEA = _FEA; TYPE PFEA = POINTER TO FEA; (*flags for _FEA.fEA *) CONST FEA_NEEDEA = 80H; (*need EA bit *) TYPE _FEALIST = RECORD(*feal *) cbList: ULONG;(*total bytes of structure inc full list *) list: ARRAY [0 .. ((1) - 1)] OF FEA;(*variable length FEA structures *) END; TYPE FEALIST = _FEALIST; TYPE PFEALIST = POINTER TO FEALIST; TYPE _EAOP = RECORD(*eaop *) fpGEAList: PGEALIST;(*general EA list *) fpFEAList: PFEALIST;(*full EA list *) oError: ULONG; END; TYPE EAOP = _EAOP; TYPE PEAOP = POINTER TO EAOP; (* * Equates for EA types * * Values 0xFFFE thru 0x8000 are reserved. * Values 0x0000 thru 0x7fff are user definable. * Value 0xFFFC is not used *) CONST EAT_BINARY = 0FFFEH; (*length preceeded binary *) CONST EAT_ASCII = 0FFFDH; (*length preceeded ASCII *) CONST EAT_BITMAP = 0FFFBH; (*length preceeded bitmap *) CONST EAT_METAFILE = 0FFFAH; (*length preceeded metafile *) CONST EAT_ICON = 0FFF9H; (*length preceeded icon *) CONST EAT_EA = 0FFEEH; (*length preceeded ASCII extended attribute *) (*name of associated data (#include)*) CONST EAT_MVMT = 0FFDFH; (*multi-valued, multi-typed field *) CONST EAT_MVST = 0FFDEH; (*multi-valued, single-typed field *) CONST EAT_ASN1 = 0FFDDH; (*ASN.1 field *) PROCEDURE DOSOPEN ( pszFname: PSZ; phfOpen: PHFILE; pusAction: PUSHORT; ulFSize: ULONG; usAttr: USHORT; fsOpenFlags: USHORT; fsOpenMode: USHORT; ulReserved: ULONG): USHORT; PROCEDURE DOSCLOSE ( hf: HFILE): USHORT; PROCEDURE DOSREAD ( hf: HFILE; pBuf: PVOID; cbBuf: USHORT; pcbBytesRead: PUSHORT): USHORT; PROCEDURE DOSWRITE ( hf: HFILE; bBuf: PVOID; cbBuf: USHORT; pcbBytesWritten: PUSHORT): USHORT; (*File time and date types *) TYPE _FILESTATUS = RECORD(*fsts *) fdateCreation: FDATE; ftimeCreation: FTIME; fdateLastAccess: FDATE; ftimeLastAccess: FTIME; fdateLastWrite: FDATE; ftimeLastWrite: FTIME; cbFile: ULONG; cbFileAlloc: ULONG; attrFile: USHORT; END; TYPE FILESTATUS = _FILESTATUS; TYPE PFILESTATUS = POINTER TO FILESTATUS; TYPE _FILESTATUS2 = RECORD(*fsts2 *) fdateCreation: FDATE; ftimeCreation: FTIME; fdateLastAccess: FDATE; ftimeLastAccess: FTIME; fdateLastWrite: FDATE; ftimeLastWrite: FTIME; cbFile: ULONG; cbFileAlloc: ULONG; attrFile: USHORT; cbList: ULONG; END; TYPE FILESTATUS2 = _FILESTATUS2; TYPE PFILESTATUS2 = POINTER TO FILESTATUS2; TYPE _FSALLOCATE = RECORD(*fsalloc *) ulReserved: ULONG; cSectorUnit: ULONG; cUnit: ULONG; cUnitAvail: ULONG; cbSector: USHORT; END; TYPE FSALLOCATE = _FSALLOCATE; TYPE PFSALLOCATE = POINTER TO FSALLOCATE; TYPE _VOLUMELABEL = RECORD(*vol *) cch: BYTE; szVolLabel: ARRAY [0 .. ((12) - 1)] OF CHAR; END; TYPE VOLUMELABEL = _VOLUMELABEL; TYPE PVOLUMELABEL = POINTER TO VOLUMELABEL; TYPE _FSINFO = RECORD(*fsinf *) ulVSN: ULONG; vol: VOLUMELABEL; END; TYPE FSINFO = _FSINFO; TYPE PFSINFO = POINTER TO FSINFO; TYPE _FILELOCK = RECORD(*flock *) lOffset: LONGINT; lRange: LONGINT; END; TYPE FILELOCK = _FILELOCK; TYPE PFILELOCK = POINTER TO FILELOCK; TYPE HDIR = SHANDLE; (*hdir *) TYPE PHDIR = POINTER TO HDIR; PROCEDURE DOSDELETE ( pszFName: PSZ; ulReserverd: ULONG): USHORT; PROCEDURE DOSDUPHANDLE ( hfOld: HFILE; phfNew: PHFILE): USHORT; PROCEDURE DOSQFHANDSTATE ( hf: HFILE; pfsOpenMode: PUSHORT): USHORT; PROCEDURE DOSSETFHANDSTATE ( hf: HFILE; fsState: USHORT): USHORT; PROCEDURE DOSQHANDTYPE ( hf: HFILE; pfsType: PUSHORT; pusDevAttr: PUSHORT): USHORT; PROCEDURE DOSFINDFIRST ( pszFSpec: PSZ; phdir: PHDIR; usAttr: USHORT; pffb: PFILEFINDBUF; cbBuf: USHORT; pcSearch: PUSHORT; ulReserved: ULONG): USHORT; PROCEDURE DOSFINDNEXT ( hdir: HDIR; pffb: PFILEFINDBUF; cbBuf: USHORT; pcSearch: PUSHORT): USHORT; PROCEDURE DOSFINDCLOSE ( hdir: HDIR): USHORT; PROCEDURE DOSNEWSIZE ( hf: HFILE; ulNewSize: ULONG): USHORT; PROCEDURE DOSBUFRESET ( hf: HFILE): USHORT; PROCEDURE DOSCHGFILEPTR ( hf: HFILE; lOffset: LONGINT; fsMethod: USHORT; pulNewOffset: PULONG): USHORT; PROCEDURE DOSFILELOCKS ( hf: HFILE; pUnlock: PLONG; pLock: PLONG): USHORT; PROCEDURE DOSMOVE ( pszOld: PSZ; pszNew: PSZ; ulReserved: ULONG): USHORT; PROCEDURE DOSMKDIR ( pszDirName: PSZ; usReserved: ULONG): USHORT; PROCEDURE DOSRMDIR ( pszDir: PSZ; ulReserved: ULONG): USHORT; PROCEDURE DOSSELECTDISK ( usDrvNum: USHORT): USHORT; PROCEDURE DOSQCURDISK ( pusDrvNum: PUSHORT; pulLogDrvMap: PULONG): USHORT; PROCEDURE DOSCHDIR ( pszDir: PSZ; ulReserved: ULONG): USHORT; PROCEDURE DOSQCURDIR ( usDrvNum: USHORT; pszPathBuf: PBYTE; pcbPathBuf: PUSHORT): USHORT; PROCEDURE DOSQFSINFO ( usDrvNum: USHORT; usInfoLevel: USHORT; pbInfo: PBYTE; cbInfo: USHORT): USHORT; PROCEDURE DOSSETFSINFO ( usDrvNum: USHORT; usInfoLevel: USHORT; pBuf: PBYTE; cbBuf: USHORT): USHORT; PROCEDURE DOSQVERIFY ( pfVerifyOn: PBOOL): USHORT; PROCEDURE DOSSETVERIFY ( fVerify: USHORT): USHORT; PROCEDURE DOSQFILEINFO ( hf: HFILE; usInfoLevel: USHORT; pInfoBuf: PVOID; cbInfoBuf: USHORT): USHORT; PROCEDURE DOSSETFILEINFO ( hf: HFILE; usInfoLevel: USHORT; pInfoBuf: PBYTE; cbInfoBuf: USHORT): USHORT; PROCEDURE DOSQFILEMODE ( pszFName: PSZ; pusAttr: PUSHORT; ulReserved: ULONG): USHORT; PROCEDURE DOSSETFILEMODE ( pszFName: PSZ; usAttr: USHORT; ulReserved: ULONG): USHORT; (*constants for DosEnumAttribute() *) CONST ENUMEA_REFTYPE_FHANDLE = 0; CONST ENUMEA_REFTYPE_PATH = 1; CONST ENUMEA_LEVEL_NO_VALUE = VAL(LONGINT, 1); PROCEDURE DOSENUMATTRIBUTE (): USHORT; (*ENUMEA_LEVEL_NO_VALUE info returned from DosEnumAttribute *) TYPE _DENA1 = RECORD(*dena *) reserved: UCHAR;(*0 *) cbName: UCHAR;(*length of name exculding NULL *) cbValue: USHORT;(*length of value *) szName: ARRAY [0 .. ((1) - 1)] OF UCHAR;(*variable length asciiz name *) END; TYPE DENA1 = _DENA1; TYPE PDENA1 = POINTER TO DENA1; (** Memory management *) PROCEDURE DOSALLOCSEG ( cbSize: USHORT; pSel: PSEL; fsAlloc: USHORT): USHORT; PROCEDURE DOSREALLOCSEG ( cbNewSize: USHORT; sel: SEL): USHORT; PROCEDURE DOSFREESEG ( sel: SEL): USHORT; PROCEDURE DOSSIZESEG ( sel: SEL; pcbSize: PULONG): USHORT; (*Segment attribute flags (used with DosAllocSeg) *) CONST SEG_NONSHARED = 0000H; CONST SEG_GIVEABLE = 0001H; CONST SEG_GETTABLE = 0002H; CONST SEG_DISCARDABLE = 0004H; CONST SEG_SIZEABLE = 0008H; PROCEDURE DOSALLOCHUGE ( cSegs: USHORT; cbPartialSeg: USHORT; psel: PSEL; cMaxSegs: USHORT; fsAlloc: USHORT): USHORT; PROCEDURE DOSREALLOCHUGE ( cSegs: USHORT; cbPartialSeg: USHORT; sel: SEL): USHORT; PROCEDURE DOSGETHUGESHIFT ( pusShiftCount: PUSHORT): USHORT; PROCEDURE DOSCREATECSALIAS ( selDS: SEL; pselCS: PSEL): USHORT; PROCEDURE DOSSUBALLOC ( sel: SEL; pusOffset: PUSHORT; cb: USHORT): USHORT; PROCEDURE DOSSUBFREE ( sel: SEL; offBlock: USHORT; cb: USHORT): USHORT; PROCEDURE DOSSUBSET ( sel: SEL; fFlags: USHORT; cbNew: USHORT): USHORT; (** Time support *) TYPE _DATETIME = RECORD(*date *) hours: UCHAR; minutes: UCHAR; seconds: UCHAR; hundredths: UCHAR; day: UCHAR; month: UCHAR; year: USHORT; timezone: INTEGER; weekday: UCHAR; END; TYPE DATETIME = _DATETIME; TYPE PDATETIME = POINTER TO DATETIME; PROCEDURE DOSGETDATETIME ( pdatetime: PDATETIME): USHORT; PROCEDURE DOSSETDATETIME ( pdatetime: PDATETIME): USHORT; (** Resource support *) (*Predefined resource types *) CONST RT_POINTER = 1; (*mouse pointer shape *) CONST RT_BITMAP = 2; (*bitmap *) CONST RT_MENU = 3; (*menu template *) CONST RT_DIALOG = 4; (*dialog template *) CONST RT_STRING = 5; (*string tables *) CONST RT_FONTDIR = 6; (*font directory *) CONST RT_FONT = 7; (*font *) CONST RT_ACCELTABLE = 8; (*accelerator tables *) CONST RT_RCDATA = 9; (*binary data *) CONST RT_MESSAGE = 10; (*error mesage tables *) CONST RT_DLGINCLUDE = 11; (*dialog include file name *) CONST RT_VKEYTBL = 12; (*key to vkey tables *) CONST RT_KEYTBL = 13; (*key to UGL tables *) CONST RT_CHARTBL = 14; CONST RT_DISPLAYINFO = 15; (*screen display information *) CONST RT_FKASHORT = 16; (*function key area short form *) CONST RT_FKALONG = 17; (*function key area long form *) CONST RT_HELPTABLE = 18; CONST RT_HELPSUBTABLE = 19; CONST RT_FDDIR = 20; CONST RT_FD = 21; CONST RT_MAX = 22; (*1st unused Resource Type *) (** NLS Support *) TYPE _COUNTRYCODE = RECORD(*ctryc *) country: USHORT; codepage: USHORT; END; TYPE COUNTRYCODE = _COUNTRYCODE; TYPE PCOUNTRYCODE = POINTER TO COUNTRYCODE; (*fsDateFmt *) CONST DATEFMT_MM_DD_YY = 0000H; CONST DATEFMT_DD_MM_YY = 0001H; CONST DATEFMT_YY_MM_DD = 0002H; (*fsCurrencyFmt *) CONST CURRENCY_FOLLOW = 0001H; CONST CURRENCY_SPACE = 0002H; CONST CURRENCY_DECIMAL = 0004H; TYPE _COUNTRYINFO = RECORD(*ctryi *) country: USHORT; codepage: USHORT; fsDateFmt: USHORT; szCurrency: ARRAY [0 .. ((5) - 1)] OF CHAR; szThousandsSeparator: ARRAY [0 .. ((2) - 1)] OF CHAR; szDecimal: ARRAY [0 .. ((2) - 1)] OF CHAR; szDateSeparator: ARRAY [0 .. ((2) - 1)] OF CHAR; szTimeSeparator: ARRAY [0 .. ((2) - 1)] OF CHAR; fsCurrencyFmt: UCHAR; cDecimalPlace: UCHAR; fsTimeFmt: UCHAR; abReserved1: ARRAY [0 .. ((2) - 1)] OF USHORT; szDataSeparator: ARRAY [0 .. ((2) - 1)] OF CHAR; abReserved2: ARRAY [0 .. ((5) - 1)] OF USHORT; END; TYPE COUNTRYINFO = _COUNTRYINFO; TYPE PCOUNTRYINFO = POINTER TO COUNTRYINFO; PROCEDURE DOSGETCTRYINFO ( cbBuf: USHORT; pctryc: PCOUNTRYCODE; pctryi: PCOUNTRYINFO; pcbCtryInfo: PUSHORT): USHORT; PROCEDURE DOSGETDBCSEV ( cbBuf: USHORT; pctryc: PCOUNTRYCODE; pchBuf: PCHAR): USHORT; PROCEDURE DOSCASEMAP ( usLen: USHORT; pctryc: PCOUNTRYCODE; pchStr: PCHAR): USHORT; PROCEDURE DOSGETCOLLATE ( cbBuf: USHORT; pctryc: PCOUNTRYCODE; pchBuf: PCHAR; pcbTable: PUSHORT): USHORT; PROCEDURE DOSGETCP ( cbBuf: USHORT; pBuf: PUSHORT; pcbCodePgLst: PUSHORT): USHORT; PROCEDURE DOSSETCP ( usCodePage: USHORT; usReserved: USHORT): USHORT; (** Signal support *) (*Signal Numbers for DosSetSigHandler *) CONST SIG_CTRLC = 1; (*Control C *) (* (UNDEFINED) 2 reserved for future use *) CONST SIG_KILLPROCESS = 3; (*Program Termination *) CONST SIG_CTRLBREAK = 4; (*Control Break *) CONST SIG_PFLG_A = 5; (*Process Flag A *) CONST SIG_PFLG_B = 6; (*Process Flag B *) CONST SIG_PFLG_C = 7; (*Process Flag C *) CONST SIG_CSIGNALS = 8; (*number of signals plus one *) (*Signal actions *) CONST SIGA_KILL = 0; CONST SIGA_IGNORE = 1; CONST SIGA_ACCEPT = 2; CONST SIGA_ERROR = 3; CONST SIGA_ACKNOWLEDGE = 4; (*DosHoldSignal constants *) CONST HLDSIG_ENABLE = 0; CONST HLDSIG_DISABLE = 1; TYPE PFNSIGHANDLER = PROCEDURE(); PPFNSIGHANDLER = POINTER TO PFNSIGHANDLER; PROCEDURE DOSSETSIGHANDLER ( pfnSigHandler: PFNSIGHANDLER; ppfnPrev: PPFNSIGHANDLER; pfAction: PUSHORT; fAction: USHORT; usSigNum: USHORT): USHORT; PROCEDURE DOSHOLDSIGNAL ( fDisable: USHORT): USHORT; (*DosQSysInfo index *) CONST Q_MAX_PATH_LENGTH = 0; (*index for query max path length *) (*DosError() error-handling types *) CONST HARDERROR_ENABLE = 0001H; CONST HARDERROR_DISABLE = 0000H; CONST EXCEPTION_ENABLE = 0000H; CONST EXCEPTION_DISABLE = 0002H; (*DosSetVec vectors *) CONST VECTOR_DIVIDE_BY_ZERO = 0000H; CONST VECTOR_OVERFLOW = 0004H; CONST VECTOR_OUTOFBOUNDS = 0005H; CONST VECTOR_INVALIDOPCODE = 0006H; CONST VECTOR_NO_EXTENSION = 0007H; CONST VECTOR_EXTENSION_ERROR = 0010H; (*DosGetMachineMode() machine modes *) CONST MODE_REAL = 0000H; CONST MODE_PROTECTED = 0001H; PROCEDURE DOSERROR ( fEnable: USHORT): USHORT; PROCEDURE DOSSETVEC ( usVecNum: USHORT; pfnFun: PFN; ppfnPrev: PPFN): USHORT; PROCEDURE DOSERRCLASS ( usErrCode: USHORT; pusClass: PUSHORT; pfsAction: PUSHORT; pusLocus: PUSHORT): USHORT; PROCEDURE DOSINSMESSAGE ( ppchVTable: PPCHAR; usVCount: USHORT; pszMsg: PSZ; cbMsg: USHORT; pchBuf: PCHAR; cbBuf: USHORT; pcbMsg: PUSHORT): USHORT; PROCEDURE DOSPUTMESSAGE ( hf: HFILE; cbMsg: USHORT; pchMsg: PCHAR): USHORT; PROCEDURE DOSGETENV ( pselEnv: PUSHORT; pOffsetCmd: PUSHORT): USHORT; PROCEDURE DOSGETVERSION ( pVer: PUSHORT); PROCEDURE DOSGETMACHINEMODE ( pMachMode: PBYTE): USHORT; (** Session manager support *) TYPE HKBD = SHANDLE; TYPE PHKBD = POINTER TO HKBD; CONST KR_KBDCHARIN = 00000001H; CONST KR_KBDPEEK = 00000002H; CONST KR_KBDFLUSHBUFFER = 00000004H; CONST KR_KBDGETSTATUS = 00000008H; CONST KR_KBDSETSTATUS = 00000010H; CONST KR_KBDSTRINGIN = 00000020H; CONST KR_KBDOPEN = 00000040H; CONST KR_KBDCLOSE = 00000080H; CONST KR_KBDGETFOCUS = 00000100H; CONST KR_KBDFREEFOCUS = 00000200H; CONST KR_KBDGETCP = 00000400H; CONST KR_KBDSETCP = 00000800H; CONST KR_KBDXLATE = 00001000H; CONST KR_KBDSETCUSTXT = 00002000H; CONST IO_WAIT = 0; CONST IO_NOWAIT = 1; (*KBDKEYINFO structure, for KbdCharIn and KbdPeek *) TYPE _KBDKEYINFO = RECORD(*kbci *) chChar: UCHAR; chScan: UCHAR; fbStatus: UCHAR; bNlsShift: UCHAR; fsState: USHORT; time: ULONG; END; TYPE KBDKEYINFO = _KBDKEYINFO; TYPE PKBDKEYINFO = POINTER TO KBDKEYINFO; PROCEDURE KBDCHARIN ( pkbci: PKBDKEYINFO; fWait: USHORT; hkbd: HKBD): USHORT; PROCEDURE KBDPEEK ( pkbci: PKBDKEYINFO; hkbd: HKBD): USHORT; (*structure for KbdStringIn() *) TYPE _STRINGINBUF = RECORD(*kbsi *) cb: USHORT; cchIn: USHORT; END; TYPE STRINGINBUF = _STRINGINBUF; TYPE PSTRINGINBUF = POINTER TO STRINGINBUF; PROCEDURE KBDSTRINGIN ( pch: PCH; pchIn: PSTRINGINBUF; fsWait: USHORT; hkbd: HKBD): USHORT; PROCEDURE KBDFLUSHBUFFER ( hkbd: HKBD): USHORT; (*KBDINFO.fsMask *) CONST KEYBOARD_ECHO_ON = 0001H; CONST KEYBOARD_ECHO_OFF = 0002H; CONST KEYBOARD_BINARY_MODE = 0004H; CONST KEYBOARD_ASCII_MODE = 0008H; CONST KEYBOARD_MODIFY_STATE = 0010H; CONST KEYBOARD_MODIFY_INTERIM = 0020H; CONST KEYBOARD_MODIFY_TURNAROUND = 0040H; CONST KEYBOARD_2B_TURNAROUND = 0080H; CONST KEYBOARD_SHIFT_REPORT = 0100H; (*KBDINFO.fsState/KBDKEYINFO.fsState/KBDTRANS.fsState *) CONST RIGHTSHIFT = 0001H; CONST LEFTSHIFT = 0002H; CONST CONTROL = 0004H; CONST ALT = 0008H; CONST SCROLLLOCK_ON = 0010H; CONST NUMLOCK_ON = 0020H; CONST CAPSLOCK_ON = 0040H; CONST INSERT_ON = 0080H; CONST LEFTCONTROL = 0100H; CONST LEFTALT = 0200H; CONST RIGHTCONTROL = 0400H; CONST RIGHTALT = 0800H; CONST SCROLLLOCK = 1000H; CONST NUMLOCK = 2000H; CONST CAPSLOCK = 4000H; CONST SYSREQ = 8000H; (*KBDINFO structure, for KbdSet/GetStatus *) TYPE _KBDINFO = RECORD(*kbst *) cb: USHORT; fsMask: USHORT; chTurnAround: USHORT; fsInterim: USHORT; fsState: USHORT; END; TYPE KBDINFO = _KBDINFO; TYPE PKBDINFO = POINTER TO KBDINFO; PROCEDURE KBDSETSTATUS ( pkbdinfo: PKBDINFO; hkbd: HKBD): USHORT; PROCEDURE KBDGETSTATUS ( pkbdinfo: PKBDINFO; hdbd: HKBD): USHORT; (*KBDTRANS.fbStatus *) CONST SHIFT_KEY_IN = 01H; CONST CONVERSION_REQUEST = 20H; CONST FINAL_CHAR_IN = 40H; CONST INTERIM_CHAR_IN = 80H; CONST KEYBOARD_AT_COMPATABLE = 0001H; CONST KEYBOARD_ENHANCED_101 = 0AB41H; CONST KEYBOARD_ENHANCED_102 = 0AB41H; CONST KEYBOARD_ENHANCED_122 = 0AB85H; CONST KEYBOARD_SPACESAVER = 0AB54H; TYPE HVIO = SHANDLE; TYPE PHVIO = POINTER TO HVIO; (*first parameter registration constants *) CONST VR_VIOGETCURPOS = 00000001H; CONST VR_VIOGETCURTYPE = 00000002H; CONST VR_VIOGETMODE = 00000004H; CONST VR_VIOGETBUF = 00000008H; CONST VR_VIOGETPHYSBUF = 00000010H; CONST VR_VIOSETCURPOS = 00000020H; CONST VR_VIOSETCURTYPE = 00000040H; CONST VR_VIOSETMODE = 00000080H; CONST VR_VIOSHOWBUF = 00000100H; CONST VR_VIOREADCHARSTR = 00000200H; CONST VR_VIOREADCELLSTR = 00000400H; CONST VR_VIOWRTNCHAR = 00000800H; CONST VR_VIOWRTNATTR = 00001000H; CONST VR_VIOWRTNCELL = 00002000H; CONST VR_VIOWRTTTY = 00004000H; CONST VR_VIOWRTCHARSTR = 00008000H; CONST VR_VIOWRTCHARSTRATT = 00010000H; CONST VR_VIOWRTCELLSTR = 00020000H; CONST VR_VIOSCROLLUP = 00040000H; CONST VR_VIOSCROLLDN = 00080000H; CONST VR_VIOSCROLLLF = 00100000H; CONST VR_VIOSCROLLRT = 00200000H; CONST VR_VIOSETANSI = 00400000H; CONST VR_VIOGETANSI = 00800000H; CONST VR_VIOPRTSC = 01000000H; CONST VR_VIOSCRLOCK = 02000000H; CONST VR_VIOSCRUNLOCK = 04000000H; CONST VR_VIOSAVREDRAWWAIT = 08000000H; CONST VR_VIOSAVREDRAWUNDO = 10000000H; CONST VR_VIOPOPUP = 20000000H; CONST VR_VIOENDPOPUP = 40000000H; CONST VR_VIOPRTSCTOGGLE = 80000000H; (*second parameter registration constants *) CONST VR_VIOMODEWAIT = 00000001H; CONST VR_VIOMODEUNDO = 00000002H; CONST VR_VIOGETFONT = 00000004H; CONST VR_VIOGETCONFIG = 00000008H; CONST VR_VIOSETCP = 00000010H; CONST VR_VIOGETCP = 00000020H; CONST VR_VIOSETFONT = 00000040H; CONST VR_VIOGETSTATE = 00000080H; CONST VR_VIOSETSTATE = 00000100H; PROCEDURE VIOGETCURPOS ( pusRow: PUSHORT; pusColumn: PUSHORT; hvio: HVIO): USHORT; PROCEDURE VIOSETCURPOS ( usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; (*structure for VioSet/GetCurType() *) TYPE _VIOCURSORINFO = RECORD(*vioci *) yStart: USHORT; cEnd: USHORT; cx: USHORT; attr: USHORT; END; TYPE VIOCURSORINFO = _VIOCURSORINFO; TYPE PVIOCURSORINFO = POINTER TO VIOCURSORINFO; PROCEDURE VIOGETCURTYPE ( pvioCursorInfo: PVIOCURSORINFO; hvio: HVIO): USHORT; PROCEDURE VIOSETCURTYPE ( pvioCursorInfo: PVIOCURSORINFO; hvio: HVIO): USHORT; (*VIOMODEINFO.color constants *) CONST COLORS_2 = 0001H; CONST COLORS_4 = 0002H; CONST COLORS_16 = 0004H; (*structure for VioSet/GetMode() *) TYPE _VIOMODEINFO = RECORD(*viomi *) cb: USHORT; fbType: UCHAR; color: UCHAR; col: USHORT; row: USHORT; hres: USHORT; vres: USHORT; fmt_ID: UCHAR; attrib: UCHAR; buf_addr: ULONG; buf_length: ULONG; full_length: ULONG; partial_length: ULONG; ext_data_addr: PCH; END; TYPE VIOMODEINFO = _VIOMODEINFO; TYPE PVIOMODEINFO = POINTER TO VIOMODEINFO; CONST VGMT_OTHER = 01H; CONST VGMT_GRAPHICS = 02H; CONST VGMT_DISABLEBURST = 04H; PROCEDURE VIOGETMODE ( pvioModeInfo: PVIOMODEINFO; hvio: HVIO): USHORT; PROCEDURE VIOSETMODE ( pvioModeInfo: PVIOMODEINFO; hvio: HVIO): USHORT; (*structure for VioGetPhysBuf() *) TYPE _VIOPHYSBUF = RECORD(*viopb *) pBuf: PBYTE; cb: ULONG; asel: ARRAY [0 .. ((1) - 1)] OF SEL; END; TYPE VIOPHYSBUF = _VIOPHYSBUF; TYPE PVIOPHYSBUF = POINTER TO VIOPHYSBUF; PROCEDURE VIOGETPHYSBUF ( pvioPhysBuf: PVIOPHYSBUF; usReserved: USHORT): USHORT; PROCEDURE VIOREADCELLSTR ( pchCellStr: PCH; pcb: PUSHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOREADCHARSTR ( pchCellStr: PCH; pcb: PUSHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOWRTCELLSTR ( pchCellStr: PCH; cb: USHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOWRTCHARSTR ( pchStr: PCH; cb: USHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOSCROLLDN ( usTopRow: USHORT; usLeftCol: USHORT; usBotRow: USHORT; usRightCol: USHORT; cbLines: USHORT; pCell: PBYTE; hvio: HVIO): USHORT; PROCEDURE VIOSCROLLUP ( usTopRow: USHORT; usLeftCol: USHORT; usBotRow: USHORT; usRightCol: USHORT; cbLines: USHORT; pCell: PBYTE; hvio: HVIO): USHORT; PROCEDURE VIOSCROLLLF ( usTopRow: USHORT; usLeftCol: USHORT; usBotRow: USHORT; usRightCol: USHORT; cbCol: USHORT; pCell: PBYTE; hvio: HVIO): USHORT; PROCEDURE VIOSCROLLRT ( usTopRow: USHORT; usLeftCol: USHORT; usBotRow: USHORT; usRightCol: USHORT; cbCol: USHORT; pCell: PBYTE; hvio: HVIO): USHORT; PROCEDURE VIOWRTNATTR ( pAttr: PBYTE; cb: USHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOWRTNCELL ( pCell: PBYTE; cb: USHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOWRTNCHAR ( pchChar: PCH; cb: USHORT; usRow: USHORT; usColumn: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOWRTTTY ( pch: PCH; cb: USHORT; hvio: HVIO): USHORT; PROCEDURE VIOWRTCHARSTRATT ( pch: PCH; cb: USHORT; usRow: USHORT; usColumn: USHORT; pAttr: PBYTE; hvio: HVIO): USHORT; CONST ANSI_ON = 1; CONST ANSI_OFF = 0; CONST VSRWI_SAVEANDREDRAW = 0; CONST VSRWI_REDRAW = 1; CONST VSRWN_SAVE = 0; CONST VSRWN_REDRAW = 1; CONST UNDOI_GETOWNER = 0; CONST UNDOI_RELEASEOWNER = 1; CONST UNDOK_ERRORCODE = 0; CONST UNDOK_TERMINATE = 1; CONST VMWR_POPUP = 0; CONST VMWN_POPUP = 0; CONST LOCKIO_NOWAIT = 0; CONST LOCKIO_WAIT = 1; CONST LOCK_SUCCESS = 0; CONST LOCK_FAIL = 1; PROCEDURE VIOSCRLOCK ( fWait: USHORT; pfNotLocked: PUCHAR; hvio: HVIO): USHORT; PROCEDURE VIOSCRUNLOCK ( hvio: HVIO): USHORT; CONST VP_NOWAIT = 0000H; CONST VP_WAIT = 0001H; CONST VP_OPAQUE = 0000H; CONST VP_TRANSPARENT = 0002H; (*structure for VioGetConfig() *) (*VIOCONFIGINFO.adapter constants *) CONST DISPLAY_MONOCHROME = 0000H; CONST DISPLAY_CGA = 0001H; CONST DISPLAY_EGA = 0002H; CONST DISPLAY_VGA = 0003H; CONST DISPLAY_8514A = 0007H; (*VIOCONFIGINFO.display constants *) CONST MONITOR_MONOCHROME = 0000H; CONST MONITOR_COLOR = 0001H; CONST MONITOR_ENHANCED = 0002H; CONST MONITOR_8503 = 0003H; CONST MONITOR_851X_COLOR = 0004H; CONST MONITOR_8514 = 0009H; TYPE _VIOCONFIGINFO = RECORD(*vioin *) cb: USHORT; adapter: USHORT; display: USHORT; cbMemory: ULONG; Configuration: USHORT; VDHVersion: USHORT; Flags: USHORT; HWBufferSize: ULONG; FullSaveSize: ULONG; PartSaveSize: ULONG; EMAdaptersOFF: USHORT; EMDisplaysOFF: USHORT; END; TYPE VIOCONFIGINFO = _VIOCONFIGINFO; TYPE PVIOCONFIGINFO = POINTER TO VIOCONFIGINFO; PROCEDURE VIOGETCONFIG ( usConfigId: USHORT; pvioin: PVIOCONFIGINFO; hvio: HVIO): USHORT; (*structure for VioGet/SetFont() *) TYPE _VIOFONTINFO = RECORD(*viofi *) cb: USHORT; type: USHORT; cxCell: USHORT; cyCell: USHORT; pbData: PVOID; cbData: USHORT; END; TYPE VIOFONTINFO = _VIOFONTINFO; TYPE PVIOFONTINFO = POINTER TO VIOFONTINFO; CONST VGFI_GETCURFONT = 0; CONST VGFI_GETROMFONT = 1; PROCEDURE VIOGETFONT ( pviofi: PVIOFONTINFO; hvio: HVIO): USHORT; PROCEDURE VIOSETFONT ( pviofi: PVIOFONTINFO; hvio: HVIO): USHORT; TYPE _VIOPALSTATE = RECORD(*viopal *) cb: USHORT; type: USHORT; iFirst: USHORT; acolor: ARRAY [0 .. ((1) - 1)] OF USHORT; END; TYPE VIOPALSTATE = _VIOPALSTATE; TYPE PVIOPALSTATE = POINTER TO VIOPALSTATE; TYPE _VIOOVERSCAN = RECORD(*vioos *) cb: USHORT; type: USHORT; color: USHORT; END; TYPE VIOOVERSCAN = _VIOOVERSCAN; TYPE PVIOOVERSCAN = POINTER TO VIOOVERSCAN; TYPE _VIOINTENSITY = RECORD(*vioint *) cb: USHORT; type: USHORT; fs: USHORT; END; TYPE VIOINTENSITY = _VIOINTENSITY; TYPE PVIOINTENSITY = POINTER TO VIOINTENSITY; TYPE _VIOCOLORREG = RECORD(*viocreg *) cb: USHORT; type: USHORT; firstcolorreg: USHORT; numcolorregs: USHORT; colorregaddr: PCH; END; TYPE VIOCOLORREG = _VIOCOLORREG; TYPE PVIOCOLORREG = POINTER TO VIOCOLORREG; TYPE _VIOSETULINELOC = RECORD(*viouline *) cb: USHORT; type: USHORT; scanline: USHORT; END; TYPE VIOSETULINELOC = _VIOSETULINELOC; TYPE PVIOSETULINELOC = POINTER TO VIOSETULINELOC; TYPE _VIOSETTARGET = RECORD(*viosett *) cb: USHORT; type: USHORT; defaultalgorithm: USHORT; END; TYPE VIOSETTARGET = _VIOSETTARGET; TYPE PVIOSETTARGET = POINTER TO VIOSETTARGET; PROCEDURE VIOGETSTATE ( pState: PVOID; hvio: HVIO): USHORT; PROCEDURE VIOSETSTATE ( pState: PVOID; hvio: HVIO): USHORT; (** Device support *) (*************************************************************************\ * * OS/2 Structures and constants for use with DosDevIOCtl * \**************************************************************************) (*Input and Output Control Categories *) CONST IOCTL_ASYNC = 0001H; CONST IOCTL_SCR_AND_PTRDRAW = 0003H; CONST IOCTL_KEYBOARD = 0004H; CONST IOCTL_PRINTER = 0005H; CONST IOCTL_LIGHTPEN = 0006H; CONST IOCTL_POINTINGDEVICE = 0007H; CONST IOCTL_DISK = 0008H; CONST IOCTL_PHYSICALDISK = 0009H; CONST IOCTL_MONITOR = 000AH; CONST IOCTL_GENERAL = 000BH; (*Serial-Device Control *) CONST ASYNC_SETBAUDRATE = 0041H; CONST ASYNC_SETLINECTRL = 0042H; CONST ASYNC_TRANSMITIMM = 0044H; CONST ASYNC_SETBREAKOFF = 0045H; CONST ASYNC_SETMODEMCTRL = 0046H; CONST ASYNC_SETBREAKON = 004BH; CONST ASYNC_STOPTRANSMIT = 0047H; CONST ASYNC_STARTTRANSMIT = 0048H; CONST ASYNC_SETDCBINFO = 0053H; CONST ASYNC_GETBAUDRATE = 0061H; CONST ASYNC_GETLINECTRL = 0062H; CONST ASYNC_GETCOMMSTATUS = 0064H; CONST ASYNC_GETLINESTATUS = 0065H; CONST ASYNC_GETMODEMOUTPUT = 0066H; CONST ASYNC_GETMODEMINPUT = 0067H; CONST ASYNC_GETINQUECOUNT = 0068H; CONST ASYNC_GETOUTQUECOUNT = 0069H; CONST ASYNC_GETCOMMERROR = 006DH; CONST ASYNC_GETCOMMEVENT = 0072H; CONST ASYNC_GETDCBINFO = 0073H; (*Screen/Pointer-Draw Control *) CONST SCR_ALLOCLDT = 0070H; CONST SCR_DEALLOCLDT = 0071H; CONST PTR_GETPTRDRAWADDRESS = 0072H; CONST SCR_ALLOCLDTOFF = 0075H; (*Keyboard Control *) CONST KBD_SETTRANSTABLE = 0050H; CONST KBD_SETINPUTMODE = 0051H; CONST KBD_SETINTERIMFLAG = 0052H; CONST KBD_SETSHIFTSTATE = 0053H; CONST KBD_SETTYPAMATICRATE = 0054H; CONST KBD_SETFGNDSCREENGRP = 0055H; CONST KBD_SETSESMGRHOTKEY = 0056H; CONST KBD_SETFOCUS = 0057H; CONST KBD_SETKCB = 0058H; CONST KBD_SETNLS = 005CH; CONST KBD_CREATE = 005DH; CONST KBD_DESTROY = 005EH; CONST KBD_GETINPUTMODE = 0071H; CONST KBD_GETINTERIMFLAG = 0072H; CONST KBD_GETSHIFTSTATE = 0073H; CONST KBD_READCHAR = 0074H; CONST KBD_PEEKCHAR = 0075H; CONST KBD_GETSESMGRHOTKEY = 0076H; CONST KBD_GETKEYBDTYPE = 0077H; CONST KBD_GETCODEPAGEID = 0078H; CONST KBD_XLATESCAN = 0079H; (*Printer Control *) CONST PRT_SETFRAMECTL = 0042H; CONST PRT_SETINFINITERETRY = 0044H; CONST PRT_INITPRINTER = 0046H; CONST PRT_ACTIVATEFONT = 0048H; CONST PRT_GETFRAMECTL = 0062H; CONST PRT_GETINFINITERETRY = 0064H; CONST PRT_GETPRINTERSTATUS = 0066H; CONST PRT_QUERYACTIVEFONT = 0069H; CONST PRT_VERIFYFONT = 006AH; (*Disk/Diskette Control *) CONST DSK_LOCKDRIVE = 0000H; CONST DSK_UNLOCKDRIVE = 0001H; CONST DSK_REDETERMINEMEDIA = 0002H; CONST DSK_SETLOGICALMAP = 0003H; CONST DSK_BLOCKREMOVABLE = 0020H; CONST DSK_GETLOGICALMAP = 0021H; CONST DSK_SETDEVICEPARAMS = 0043H; CONST DSK_WRITETRACK = 0044H; CONST DSK_FORMATVERIFY = 0045H; CONST DSK_GETDEVICEPARAMS = 0063H; CONST DSK_READTRACK = 0064H; CONST DSK_VERIFYTRACK = 0065H; (*Physical-Disk Control *) CONST PDSK_LOCKPHYSDRIVE = 0000H; CONST PDSK_UNLOCKPHYSDRIVE = 0001H; CONST PDSK_WRITEPHYSTRACK = 0044H; CONST PDSK_GETPHYSDEVICEPARAMS = 0063H; CONST PDSK_READPHYSTRACK = 0064H; CONST PDSK_VERIFYPHYSTRACK = 0065H; (*Character-Monitor Control *) CONST MON_REGISTERMONITOR = 0040H; (*General Device Control *) CONST DEV_FLUSHINPUT = 0001H; CONST DEV_FLUSHOUTPUT = 0002H; CONST DEV_QUERYMONSUPPORT = 0060H; (*ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF, ASYNC_SETBREAKON, * ASYNC_SETMODEMCTRL *) CONST RX_QUE_OVERRUN = 0001H; CONST RX_HARDWARE_OVERRUN = 0002H; CONST PARITY_ERROR = 0004H; CONST FRAMING_ERROR = 0008H; (*ASYNC_GETCOMMEVENT *) CONST CHAR_RECEIVED = 0001H; CONST LAST_CHAR_SENT = 0004H; CONST CTS_CHANGED = 0008H; CONST DSR_CHANGED = 0010H; CONST DCD_CHANGED = 0020H; CONST BREAK_DETECTED = 0040H; CONST ERROR_OCCURRED = 0080H; CONST RI_DETECTED = 0100H; (*ASYNC_GETCOMMSTATUS *) CONST TX_WAITING_FOR_CTS = 0001H; CONST TX_WAITING_FOR_DSR = 0002H; CONST TX_WAITING_FOR_DCD = 0004H; CONST TX_WAITING_FOR_XON = 0008H; CONST TX_WAITING_TO_SEND_XON = 0010H; CONST TX_WAITING_WHILE_BREAK_ON = 0020H; CONST TX_WAITING_TO_SEND_IMM = 0040H; CONST RX_WAITING_FOR_DSR = 0080H; (*ASYNC_GETLINESTATUS *) CONST WRITE_REQUEST_QUEUED = 0001H; CONST DATA_IN_TX_QUE = 0002H; CONST HARDWARE_TRANSMITTING = 0004H; CONST CHAR_READY_TO_SEND_IMM = 0008H; CONST WAITING_TO_SEND_XON = 0010H; CONST WAITING_TO_SEND_XOFF = 0020H; (*ASYNC_GETMODEMINPUT *) CONST CTS_ON = 10H; CONST DSR_ON = 20H; CONST RI_ON = 40H; CONST DCD_ON = 80H; (*DSK_SETDEVICEPARAMS *) CONST BUILD_BPB_FROM_MEDIUM = 00H; CONST REPLACE_BPB_FOR_DEVICE = 01H; CONST REPLACE_BPB_FOR_MEDIUM = 02H; (*KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE*) CONST ASCII_MODE = 00H; CONST BINARY_MODE = 80H; (*KBD_GETINTERIMFLAG *) CONST INTERIM_CHAR = 80H; (*KBD_GETSESMGRHOTKEY *) CONST HOTKEY_MAX_COUNT = 0000H; CONST HOTKEY_CURRENT_COUNT = 0001H; (*KBD_PEEKCHAR *) CONST KBD_DATA_RECEIVED = 0001H; CONST KBD_DATA_BINARY = 8000H; (*KBD_READCHAR *) CONST KBD_READ_WAIT = 0000H; CONST KBD_READ_NOWAIT = 8000H; (*KBD_SETINPUTMODE *) CONST SHIFT_REPORT_MODE = 01H; (*PRT_GETPRINTERSTATUS *) CONST PRINTER_TIMEOUT = 0001H; CONST PRINTER_IO_ERROR = 0008H; CONST PRINTER_SELECTED = 0010H; CONST PRINTER_OUT_OF_PAPER = 0020H; CONST PRINTER_ACKNOWLEDGED = 0040H; CONST PRINTER_NOT_BUSY = 0080H; (*fbCtlHndShake *) CONST MODE_DTR_CONTROL = 01H; CONST MODE_DTR_HANDSHAKE = 02H; CONST MODE_CTS_HANDSHAKE = 08H; CONST MODE_DSR_HANDSHAKE = 10H; CONST MODE_DCD_HANDSHAKE = 20H; CONST MODE_DSR_SENSITIVITY = 40H; (*fbFlowReplace *) CONST MODE_AUTO_TRANSMIT = 01H; CONST MODE_AUTO_RECEIVE = 02H; CONST MODE_ERROR_CHAR = 04H; CONST MODE_NULL_STRIPPING = 08H; CONST MODE_BREAK_CHAR = 10H; CONST MODE_RTS_CONTROL = 40H; CONST MODE_RTS_HANDSHAKE = 80H; CONST MODE_TRANSMIT_TOGGLE = 0C0H; (*fbTimeout *) CONST MODE_NO_WRITE_TIMEOUT = 01H; CONST MODE_READ_TIMEOUT = 02H; CONST MODE_WAIT_READ_TIMEOUT = 04H; CONST MODE_NOWAIT_READ_TIMEOUT = 06H; TYPE _DCBINFO = RECORD(*dcbinf *) usWriteTimeout: USHORT; usReadTimeout: USHORT; fbCtlHndShake: BYTE; fbFlowReplace: BYTE; fbTimeout: BYTE; bErrorReplacementChar: BYTE; bBreakReplacementChar: BYTE; bXONChar: BYTE; bXOFFChar: BYTE; END; TYPE DCBINFO = _DCBINFO; TYPE PDCBINFO = POINTER TO DCBINFO; CONST DEVTYPE_48TPI = 0000H; CONST DEVTYPE_96TPI = 0001H; CONST DEVTYPE_35 = 0002H; CONST DEVTYPE_8SD = 0003H; CONST DEVTYPE_8DD = 0004H; CONST DEVTYPE_FIXED = 0005H; CONST DEVTYPE_TAPE = 0006H; CONST DEVTYPE_UNKNOWN = 0007H; TYPE _BIOSPARAMETERBLOCK = RECORD(*bspblk *) usBytesPerSector: USHORT; bSectorsPerCluster: BYTE; usReservedSectors: USHORT; cFATs: BYTE; cRootEntries: USHORT; cSectors: USHORT; bMedia: BYTE; usSectorsPerFAT: USHORT; usSectorsPerTrack: USHORT; cHeads: USHORT; cHiddenSectors: ULONG; cLargeSectors: ULONG; abReserved: ARRAY [0 .. ((6) - 1)] OF BYTE; cCylinders: USHORT; bDeviceType: BYTE; fsDeviceAttr: USHORT; END; TYPE BIOSPARAMETERBLOCK = _BIOSPARAMETERBLOCK; TYPE PBIOSPARAMETERBLOCK = POINTER TO BIOSPARAMETERBLOCK; TYPE _SCREENGROUP = RECORD(*scrgrp *) idScreenGrp: USHORT; fTerminate: USHORT; END; TYPE SCREENGROUP = _SCREENGROUP; TYPE PSCREENGROUP = POINTER TO SCREENGROUP; TYPE _FRAME = RECORD(*frm *) bCharsPerLine: BYTE; bLinesPerInch: BYTE; END; TYPE FRAME = _FRAME; TYPE PFRAME = POINTER TO FRAME; TYPE _KBDTYPE = RECORD(*kbdtyp *) usType: USHORT; reserved1: USHORT; reserved2: USHORT; END; TYPE KBDTYPE = _KBDTYPE; TYPE PKBDTYPE = POINTER TO KBDTYPE; TYPE _LINECONTROL = RECORD(*lnctl *) bDataBits: BYTE; bParity: BYTE; bStopBits: BYTE; fTransBreak: BYTE; END; TYPE LINECONTROL = _LINECONTROL; TYPE PLINECONTROL = POINTER TO LINECONTROL; (*MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT *) CONST DTR_ON = 01H; CONST RTS_ON = 02H; (*MODEMSTATUS.fbModemOff *) CONST DTR_OFF = 0FEH; CONST RTS_OFF = 0FDH; TYPE _MODEMSTATUS = RECORD(*mdmst *) fbModemOn: BYTE; fbModemOff: BYTE; END; TYPE MODEMSTATUS = _MODEMSTATUS; TYPE PMODEMSTATUS = POINTER TO MODEMSTATUS; TYPE _RXQUEUE = RECORD(*rxq *) cch: USHORT; cb: USHORT; END; TYPE RXQUEUE = _RXQUEUE; TYPE PRXQUEUE = POINTER TO RXQUEUE; TYPE _DEVICEPARAMETERBLOCK = RECORD(*dvpblck *) reserved1: USHORT; cCylinders: USHORT; cHeads: USHORT; cSectorsPerTrack: USHORT; reserved2: USHORT; reserved3: USHORT; reserved4: USHORT; reserved5: USHORT; END; TYPE DEVICEPARAMETERBLOCK = _DEVICEPARAMETERBLOCK; TYPE PDEVICEPARAMETERBLOCK = POINTER TO DEVICEPARAMETERBLOCK; TYPE _PTRDRAWFUNCTION = RECORD(*ptrdfnc *) usReturnCode: USHORT; pfnDraw: PFN; pchDataSeg: PCH; END; TYPE PTRDRAWFUNCTION = _PTRDRAWFUNCTION; TYPE PPTRDRAWFUNCTION = POINTER TO PTRDRAWFUNCTION; TYPE _PTRDRAWADDRESS = RECORD(*ptrdaddr *) reserved: USHORT; ptrdfnc: PTRDRAWFUNCTION; END; TYPE PTRDRAWADDRESS = _PTRDRAWADDRESS; TYPE PPTRDRAWADDRESS = POINTER TO PTRDRAWADDRESS; TYPE _SHIFTSTATE = RECORD(*shftst *) fsState: USHORT; fNLS: BYTE; END; TYPE SHIFTSTATE = _SHIFTSTATE; TYPE PSHIFTSTATE = POINTER TO SHIFTSTATE; TYPE _HOTKEY = RECORD(*htky *) fsHotKey: USHORT; uchScancodeMake: UCHAR; uchScancodeBreak: UCHAR; idHotKey: USHORT; END; TYPE HOTKEY = _HOTKEY; TYPE PHOTKEY = POINTER TO HOTKEY; TYPE _MONITORPOSITION = RECORD(*mnpos *) fPosition: USHORT; index: USHORT; pbInBuf: ULONG; offOutBuf: USHORT; END; TYPE MONITORPOSITION = _MONITORPOSITION; TYPE PMONITORPOSITION = POINTER TO MONITORPOSITION; TYPE _RATEDELAY = RECORD(*rtdly *) usDelay: USHORT; usRate: USHORT; END; TYPE RATEDELAY = _RATEDELAY; TYPE PRATEDELAY = POINTER TO RATEDELAY; TYPE _CODEPAGEINFO = RECORD(*cpi *) pbTransTable: PBYTE; idCodePage: USHORT; idTable: USHORT; END; TYPE CODEPAGEINFO = _CODEPAGEINFO; TYPE PCODEPAGEINFO = SYSTEM.ADDRESS; TYPE _CPID = RECORD(*cpid *) idCodePage: USHORT; Reserved: USHORT; END; TYPE CPID = _CPID; TYPE PCPID = SYSTEM.ADDRESS; TYPE _LDTADDRINFO = RECORD(*ldtaddr *) pulPhysAddr: PULONG; cb: USHORT; END; TYPE LDTADDRINFO = _LDTADDRINFO; TYPE PLDTADDRINFO = SYSTEM.ADDRESS; TYPE _PTRDRAWDATA = RECORD(*ptrdd *) cb: USHORT; usConfig: USHORT; usFlag: USHORT; END; TYPE PTRDRAWDATA = _PTRDRAWDATA; TYPE PPTRDRAWDATA = SYSTEM.ADDRESS; (*DosPhysicalDisk() physical disk information *) CONST INFO_COUNT_PARTITIONABLE_DISKS = 0001H; CONST INFO_GETIOCTLHANDLE = 0002H; CONST INFO_FREEIOCTLHANDLE = 0003H; (*DosDevConfig information requests *) CONST DEVINFO_PRINTER = 0000H; CONST DEVINFO_RS232 = 0001H; CONST DEVINFO_FLOPPY = 0002H; CONST DEVINFO_COPROCESSOR = 0003H; CONST DEVINFO_SUBMODEL = 0004H; CONST DEVINFO_MODEL = 0005H; CONST DEVINFO_ADAPTER = 0006H; PROCEDURE DOSDEVCONFIG ( pDevInfo: PVOID; usItem: USHORT; usReserved: USHORT): USHORT; PROCEDURE DOSDEVIOCTL ( pData: PVOID; pParms: PVOID; usFun: USHORT; usCategory: USHORT; hDev: HFILE): USHORT; CONST NO_ERROR = 0; CONST ERROR_INVALID_FUNCTION = 1; CONST ERROR_FILE_NOT_FOUND = 2; CONST ERROR_PATH_NOT_FOUND = 3; CONST ERROR_TOO_MANY_OPEN_FILES = 4; CONST ERROR_ACCESS_DENIED = 5; CONST ERROR_INVALID_HANDLE = 6; CONST ERROR_ARENA_TRASHED = 7; CONST ERROR_NOT_ENOUGH_MEMORY = 8; CONST ERROR_INVALID_BLOCK = 9; CONST ERROR_BAD_ENVIRONMENT = 10; CONST ERROR_BAD_FORMAT = 11; CONST ERROR_INVALID_ACCESS = 12; CONST ERROR_INVALID_DATA = 13; (*14 is reserved *) CONST ERROR_INVALID_DRIVE = 15; CONST ERROR_CURRENT_DIRECTORY = 16; CONST ERROR_NOT_SAME_DEVICE = 17; CONST ERROR_NO_MORE_FILES = 18; CONST ERROR_WRITE_PROTECT = 19; CONST ERROR_BAD_UNIT = 20; CONST ERROR_NOT_READY = 21; CONST ERROR_BAD_COMMAND = 22; CONST ERROR_CRC = 23; CONST ERROR_BAD_LENGTH = 24; CONST ERROR_SEEK = 25; CONST ERROR_NOT_DOS_DISK = 26; CONST ERROR_SECTOR_NOT_FOUND = 27; CONST ERROR_OUT_OF_PAPER = 28; CONST ERROR_WRITE_FAULT = 29; CONST ERROR_READ_FAULT = 30; CONST ERROR_GEN_FAILURE = 31; CONST ERROR_SHARING_VIOLATION = 32; CONST ERROR_LOCK_VIOLATION = 33; CONST ERROR_WRONG_DISK = 34; CONST ERROR_FCB_UNAVAILABLE = 35; CONST ERROR_SHARING_BUFFER_EXCEEDED = 36; CONST ERROR_NOT_SUPPORTED = 50; CONST ERROR_REM_NOT_LIST = 51; (*Remote computer not listening *) CONST ERROR_DUP_NAME = 52; (*Duplicate name on network *) CONST ERROR_BAD_NETPATH = 53; (*Network path not found *) CONST ERROR_NETWORK_BUSY = 54; (*Network busy *) CONST ERROR_DEV_NOT_EXIST = 55; (*Network device no longer exists *) CONST ERROR_TOO_MANY_CMDS = 56; (*Net BIOS command limit exceeded *) CONST ERROR_ADAP_HDW_ERR = 57; (*Network adapter hardware error *) CONST ERROR_BAD_NET_RESP = 58; (*Incorrect response from network *) CONST ERROR_UNEXP_NET_ERR = 59; (*Unexpected network error *) CONST ERROR_BAD_REM_ADAP = 60; (*Incompatible remote adapter *) CONST ERROR_PRINTQ_FULL = 61; (*Print queue full *) CONST ERROR_NO_SPOOL_SPACE = 62; (*Not enough space for print file *) CONST ERROR_PRINT_CANCELLED = 63; (*Print file was cancelled *) CONST ERROR_NETNAME_DELETED = 64; (*Network name was deleted *) CONST ERROR_NETWORK_ACCESS_DENIED = 65; (*Access denied *) CONST ERROR_BAD_DEV_TYPE = 66; (*Network device type incorrect *) CONST ERROR_BAD_NET_NAME = 67; (*Network name not found *) CONST ERROR_TOO_MANY_NAMES = 68; (*Network name limit exceeded *) CONST ERROR_TOO_MANY_SESS = 69; (*Net BIOS session limit exceeded *) CONST ERROR_SHARING_PAUSED = 70; (*Sharing temporarily paused *) CONST ERROR_REQ_NOT_ACCEP = 71; (*Network request not accepted *) CONST ERROR_REDIR_PAUSED = 72; (*Print|disk redirection is paused*) CONST ERROR_FILE_EXISTS = 80; CONST ERROR_DUP_FCB = 81; CONST ERROR_CANNOT_MAKE = 82; CONST ERROR_FAIL_I24 = 83; CONST ERROR_OUT_OF_STRUCTURES = 84; CONST ERROR_ALREADY_ASSIGNED = 85; CONST ERROR_INVALID_PASSWORD = 86; CONST ERROR_INVALID_PARAMETER = 87; CONST ERROR_NET_WRITE_FAULT = 88; CONST ERROR_NO_PROC_SLOTS = 89; (*no process slots available *) CONST ERROR_NOT_FROZEN = 90; CONST ERR_TSTOVFL = 91; (*timer service table overflow *) CONST ERR_TSTDUP = 92; (*timer service table duplicate *) CONST ERROR_NO_ITEMS = 93; (*no items to operate upon *) CONST ERROR_INTERRUPT = 95; (*interrupted system call *) CONST ERROR_DEVICE_IN_USE = 99; (*Device in use by another thread *) CONST ERROR_TOO_MANY_SEMAPHORES = 100; CONST ERROR_EXCL_SEM_ALREADY_OWNED = 101; CONST ERROR_SEM_IS_SET = 102; CONST ERROR_TOO_MANY_SEM_REQUESTS = 103; CONST ERROR_INVALID_AT_INTERRUPT_TIME = 104; CONST ERROR_SEM_OWNER_DIED = 105; (*waitsem found owner died *) CONST ERROR_SEM_USER_LIMIT = 106; (*too many procs have this sem *) CONST ERROR_DISK_CHANGE = 107; CONST ERROR_DRIVE_LOCKED = 108; (*drive locked by another process*) CONST ERROR_BROKEN_PIPE = 109; (*write on pipe with no reader *) CONST ERROR_OPEN_FAILED = 110; (*open/created failed due to *) (*explicit fail command *) CONST ERROR_BUFFER_OVERFLOW = 111; (*buffer passed to system call *) (*is too small to hold return *) (*data. *) CONST ERROR_DISK_FULL = 112; (*not enough space on the disk *) (*(DOSNEWSIZE/w_NewSize) *) CONST ERROR_NO_MORE_SEARCH_HANDLES = 113; (*can't allocate another search *) (*structure and handle. *) (*(DOSFINDFIRST/w_FindFirst) *) CONST ERROR_INVALID_TARGET_HANDLE = 114; (*Target handle in DOSDUPHANDLE *) (*is invalid *) CONST ERROR_PROTECTION_VIOLATION = 115; (*Bad user virtual address *) CONST ERROR_VIOKBD_REQUEST = 116; CONST ERROR_INVALID_CATEGORY = 117; (*Category for DEVIOCTL in not *) (*defined *) CONST ERROR_INVALID_VERIFY_SWITCH = 118; (*invalid value passed for *) (*verify flag *) CONST ERROR_BAD_DRIVER_LEVEL = 119; (*DosDevIOCTL looks for a level *) (*four driver. If the driver *) (*is not level four we return *) (*this code *) CONST ERROR_CALL_NOT_IMPLEMENTED = 120; (*returned from stub api calls. *) (*This call will disappear when *) (*all the api's are implemented. *) CONST ERROR_SEM_TIMEOUT = 121; (*Time out happened from the *) (*semaphore api functions. *) CONST ERROR_INSUFFICIENT_BUFFER = 122; (*Some calls require the *) (*application to pass in a buffer *) (*filled with data. This error is *) (*returned if the data buffer is too *) (*small. For example: DosSetFileInfo *) (*requires 4 bytes of data. If a *) (*two byte buffer is passed in then *) (* this error is returned. *) (* error_buffer_overflow is used when *) (* the output buffer is not big enough.*) CONST ERROR_INVALID_NAME = 123; (*illegal character or malformed *) (*file system name *) CONST ERROR_INVALID_LEVEL = 124; (*unimplemented level for info *) (*retrieval or setting *) CONST ERROR_NO_VOLUME_LABEL = 125; (*no volume label found with *) (*DosQFSInfo command *) CONST ERROR_MOD_NOT_FOUND = 126; (*w_getprocaddr,w_getmodhandle *) CONST ERROR_PROC_NOT_FOUND = 127; (*w_getprocaddr *) CONST ERROR_WAIT_NO_CHILDREN = 128; (*CWait finds to children *) CONST ERROR_CHILD_NOT_COMPLETE = 129; (*CWait children not dead yet *) CONST ERROR_DIRECT_ACCESS_HANDLE = 130; (*handle operation is invalid *) (*for direct disk access *) (*handles *) CONST ERROR_NEGATIVE_SEEK = 131; (*application tried to seek *) (*with negitive offset *) CONST ERROR_SEEK_ON_DEVICE = 132; (*application tried to seek *) (*on device or pipe *) CONST ERROR_IS_JOIN_TARGET = 133; CONST ERROR_IS_JOINED = 134; CONST ERROR_IS_SUBSTED = 135; CONST ERROR_NOT_JOINED = 136; CONST ERROR_NOT_SUBSTED = 137; CONST ERROR_JOIN_TO_JOIN = 138; CONST ERROR_SUBST_TO_SUBST = 139; CONST ERROR_JOIN_TO_SUBST = 140; CONST ERROR_SUBST_TO_JOIN = 141; CONST ERROR_BUSY_DRIVE = 142; CONST ERROR_SAME_DRIVE = 143; CONST ERROR_DIR_NOT_ROOT = 144; CONST ERROR_DIR_NOT_EMPTY = 145; CONST ERROR_IS_SUBST_PATH = 146; CONST ERROR_IS_JOIN_PATH = 147; CONST ERROR_PATH_BUSY = 148; CONST ERROR_IS_SUBST_TARGET = 149; CONST ERROR_SYSTEM_TRACE = 150; (*system trace error *) CONST ERROR_INVALID_EVENT_COUNT = 151; (*DosMuxSemWait errors *) CONST ERROR_TOO_MANY_MUXWAITERS = 152; CONST ERROR_INVALID_LIST_FORMAT = 153; CONST ERROR_LABEL_TOO_LONG = 154; CONST ERROR_TOO_MANY_TCBS = 155; CONST ERROR_SIGNAL_REFUSED = 156; CONST ERROR_DISCARDED = 157; CONST ERROR_NOT_LOCKED = 158; CONST ERROR_BAD_THREADID_ADDR = 159; CONST ERROR_BAD_ARGUMENTS = 160; CONST ERROR_BAD_PATHNAME = 161; CONST ERROR_SIGNAL_PENDING = 162; CONST ERROR_UNCERTAIN_MEDIA = 163; CONST ERROR_MAX_THRDS_REACHED = 164; CONST ERROR_MONITORS_NOT_SUPPORTED = 165; CONST ERROR_UNC_DRIVER_NOT_INSTALLED = 166; (* The following error codes refer to demand loading segments *) CONST ERROR_LOCK_FAILED = 167; CONST ERROR_SWAPIO_FAILED = 168; CONST ERROR_SWAPIN_FAILED = 169; CONST ERROR_BUSY = 170; CONST ERROR_INVALID_SEGMENT_NUMBER = 180; CONST ERROR_INVALID_CALLGATE = 181; CONST ERROR_INVALID_ORDINAL = 182; CONST ERROR_ALREADY_EXISTS = 183; CONST ERROR_NO_CHILD_PROCESS = 184; CONST ERROR_CHILD_ALIVE_NOWAIT = 185; CONST ERROR_INVALID_FLAG_NUMBER = 186; CONST ERROR_SEM_NOT_FOUND = 187; (*following error codes make loader error messages distinct *) CONST ERROR_INVALID_STARTING_CODESEG = 188; CONST ERROR_INVALID_STACKSEG = 189; CONST ERROR_INVALID_MODULETYPE = 190; CONST ERROR_INVALID_EXE_SIGNATURE = 191; CONST ERROR_EXE_MARKED_INVALID = 192; CONST ERROR_BAD_EXE_FORMAT = 193; CONST ERROR_ITERATED_DATA_EXCEEDS_64K = 194; CONST ERROR_INVALID_MINALLOCSIZE = 195; CONST ERROR_DYNLINK_FROM_INVALID_RING = 196; CONST ERROR_IOPL_NOT_ENABLED = 197; CONST ERROR_INVALID_SEGDPL = 198; CONST ERROR_AUTODATASEG_EXCEEDS_64k = 199; CONST ERROR_RING2SEG_MUST_BE_MOVABLE = 200; CONST ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201; CONST ERROR_INFLOOP_IN_RELOC_CHAIN = 202; CONST ERROR_ENVVAR_NOT_FOUND = 203; CONST ERROR_NOT_CURRENT_CTRY = 204; CONST ERROR_NO_SIGNAL_SENT = 205; CONST ERROR_FILENAME_EXCED_RANGE = 206; (*if filename > 8.3 *) CONST ERROR_RING2_STACK_IN_USE = 207; (*for FAPI *) CONST ERROR_META_EXPANSION_TOO_LONG = 208; (*if "*a" > 8.3 *) CONST ERROR_INVALID_SIGNAL_NUMBER = 209; CONST ERROR_THREAD_1_INACTIVE = 210; CONST ERROR_INFO_NOT_AVAIL = 211; CONST ERROR_LOCKED = 212; CONST ERROR_BAD_DYNALINK = 213; CONST ERROR_TOO_MANY_MODULES = 214; CONST ERROR_NESTING_NOT_ALLOWED = 215; CONST ERROR_CANNOT_SHRINK = 216; (*attempt to shrink ring 2 stack *) CONST ERROR_ZOMBIE_PROCESS = 217; CONST ERROR_STACK_IN_HIGH_MEMORY = 218; CONST ERROR_INVALID_EXITROUTINE_RING = 219; CONST ERROR_GETBUF_FAILED = 220; CONST ERROR_FLUSHBUF_FAILED = 221; CONST ERROR_TRANSFER_TOO_LONG = 222; CONST ERROR_NO_CHILDREN = 228; CONST ERROR_INVALID_SCREEN_GROUP = 229; (* * Error codes 230 - 249 are reserved *) CONST ERROR_BAD_PIPE = 230; (*Non-existant pipe or bad operation *) CONST ERROR_PIPE_BUSY = 231; (*Pipe is busy *) CONST ERROR_NO_DATA = 232; (*No data on non-blocking read *) CONST ERROR_PIPE_NOT_CONNECTED = 233; (*Pipe was disconnected by server*) CONST ERROR_MORE_DATA = 234; (*More data is available *) CONST ERROR_VC_DISCONNECTED = 240; CONST ERROR_CIRCULARITY_REQUESTED = 250; (*When renaming a dir which *) (*would cause a circularity *) CONST ERROR_DIRECTORY_IN_CDS = 251; (*When renaming a dir *) (*which is "in use" *) CONST ERROR_INVALID_FSD_NAME = 252; (*when trying to access *) (*nonexistent FSD *) CONST ERROR_INVALID_PATH = 253; (*bad pseudo device *) CONST ERROR_INVALID_EA_NAME = 254; (*Illegal chars in name *) CONST ERROR_EA_LIST_INCONSISTENT = 255; (*Size or some field bad *) CONST ERROR_EA_LIST_TOO_LONG = 256; (*FEAlist > 64K-1 bytes *) CONST ERROR_NO_META_MATCH = 257; (*string doesn't match expression*) CONST ERROR_FINDNOTIFY_TIMEOUT = 258; (*FindNotify request timeout *) CONST ERROR_NO_MORE_ITEMS = 259; (*QFSAttach ordinal query *) CONST ERROR_SEARCH_STRUC_REUSED = 260; (*3xbox findfirst/next search structure reused *) CONST ERROR_CHAR_NOT_FOUND = 261; (*can not find character *) CONST ERROR_TOO_MUCH_STACK = 262; (*Stack request exceeds sys limit*) CONST ERROR_INVALID_ATTR = 263; (*invalid FS_ATTRIBUTE *) CONST ERROR_INVALID_STARTING_RING = 264; CONST ERROR_INVALID_DLL_INIT_RING = 265; CONST ERROR_CANNOT_COPY = 266; (*doscopy *) CONST ERROR_DIRECTORY = 267; (*doscopy *) CONST ERROR_OPLOCKED_FILE = 268; CONST ERROR_OPLOCK_THREAD_EXISTS = 269; (*error codes for DosFindNotify *) CONST ERROR_VOLUME_CHANGED = 270; CONST ERROR_FINDNOTIFY_HANDLE_IN_USE = 271; CONST ERROR_FINDNOTIFY_HANDLE_CLOSED = 272; CONST ERROR_NOTIFY_OBJECT_REMOVED = 273; (*Error to indicate that ShutDown already done *) CONST ERROR_ALREADY_SHUTDOWN = 274; (*error code for DOSFINDFIRST2/NEXT *) CONST ERROR_EAS_DIDNT_FIT = 275; (*error codes for EA file format change *) CONST ERROR_EA_FILE_CORRUPT = 276; CONST ERROR_EA_TABLE_FULL = 277; CONST ERROR_INVALID_EA_HANDLE = 278; CONST ERROR_NO_CLUSTER = 279; CONST ERROR_CREATE_EA_FILE = 280; CONST ERROR_CANNOT_OPEN_EA_FILE = 281; CONST ERROR_INVALID_PROCID = 303; CONST ERROR_INVALID_PDELTA = 304; CONST ERROR_NOT_DESCENDANT = 305; CONST ERROR_NOT_SESSION_MANAGER = 306; CONST ERROR_INVALID_PCLASS = 307; CONST ERROR_INVALID_SCOPE = 308; CONST ERROR_INVALID_THREADID = 309; CONST ERROR_DOSSUB_SHRINK = 310; CONST ERROR_DOSSUB_NOMEM = 311; CONST ERROR_DOSSUB_OVERLAP = 312; CONST ERROR_DOSSUB_BADSIZE = 313; CONST ERROR_DOSSUB_BADFLAG = 314; CONST ERROR_DOSSUB_BADSELECTOR = 315; CONST ERROR_MR_MSG_TOO_LONG = 316; CONST ERROR_MR_MID_NOT_FOUND = 317; CONST ERROR_MR_UN_ACC_MSGF = 318; CONST ERROR_MR_INV_MSGF_FORMAT = 319; CONST ERROR_MR_INV_IVCOUNT = 320; CONST ERROR_MR_UN_PERFORM = 321; CONST ERROR_TS_WAKEUP = 322; CONST ERROR_TS_SEMHANDLE = 323; CONST ERROR_TS_NOTIMER = 324; CONST ERROR_TS_HANDLE = 326; CONST ERROR_TS_DATETIME = 327; CONST ERROR_SYS_INTERNAL = 328; CONST ERROR_QUE_CURRENT_NAME = 329; CONST ERROR_QUE_PROC_NOT_OWNED = 330; CONST ERROR_QUE_PROC_OWNED = 331; CONST ERROR_QUE_DUPLICATE = 332; CONST ERROR_QUE_ELEMENT_NOT_EXIST = 333; CONST ERROR_QUE_NO_MEMORY = 334; CONST ERROR_QUE_INVALID_NAME = 335; CONST ERROR_QUE_INVALID_PRIORITY = 336; CONST ERROR_QUE_INVALID_HANDLE = 337; CONST ERROR_QUE_LINK_NOT_FOUND = 338; CONST ERROR_QUE_MEMORY_ERROR = 339; CONST ERROR_QUE_PREV_AT_END = 340; CONST ERROR_QUE_PROC_NO_ACCESS = 341; CONST ERROR_QUE_EMPTY = 342; CONST ERROR_QUE_NAME_NOT_EXIST = 343; CONST ERROR_QUE_NOT_INITIALIZED = 344; CONST ERROR_QUE_UNABLE_TO_ACCESS = 345; CONST ERROR_QUE_UNABLE_TO_ADD = 346; CONST ERROR_QUE_UNABLE_TO_INIT = 347; CONST ERROR_VIO_INVALID_MASK = 349; CONST ERROR_VIO_PTR = 350; CONST ERROR_VIO_APTR = 351; CONST ERROR_VIO_RPTR = 352; CONST ERROR_VIO_CPTR = 353; CONST ERROR_VIO_LPTR = 354; CONST ERROR_VIO_MODE = 355; CONST ERROR_VIO_WIDTH = 356; CONST ERROR_VIO_ATTR = 357; CONST ERROR_VIO_ROW = 358; CONST ERROR_VIO_COL = 359; CONST ERROR_VIO_TOPROW = 360; CONST ERROR_VIO_BOTROW = 361; CONST ERROR_VIO_RIGHTCOL = 362; CONST ERROR_VIO_LEFTCOL = 363; CONST ERROR_SCS_CALL = 364; CONST ERROR_SCS_VALUE = 365; CONST ERROR_VIO_WAIT_FLAG = 366; CONST ERROR_VIO_UNLOCK = 367; CONST ERROR_SGS_NOT_SESSION_MGR = 368; CONST ERROR_SMG_INVALID_SGID = 369; CONST ERROR_SMG_INVALID_SESSION_ID = 369; CONST ERROR_SMG_NOSG = 370; CONST ERROR_SMG_NO_SESSIONS = 370; CONST ERROR_SMG_GRP_NOT_FOUND = 371; CONST ERROR_SMG_SESSION_NOT_FOUND = 371; CONST ERROR_SMG_SET_TITLE = 372; CONST ERROR_KBD_PARAMETER = 373; CONST ERROR_KBD_NO_DEVICE = 374; CONST ERROR_KBD_INVALID_IOWAIT = 375; CONST ERROR_KBD_INVALID_LENGTH = 376; CONST ERROR_KBD_INVALID_ECHO_MASK = 377; CONST ERROR_KBD_INVALID_INPUT_MASK = 378; CONST ERROR_MON_INVALID_PARMS = 379; CONST ERROR_MON_INVALID_DEVNAME = 380; CONST ERROR_MON_INVALID_HANDLE = 381; CONST ERROR_MON_BUFFER_TOO_SMALL = 382; CONST ERROR_MON_BUFFER_EMPTY = 383; CONST ERROR_MON_DATA_TOO_LARGE = 384; CONST ERROR_MOUSE_NO_DEVICE = 385; CONST ERROR_MOUSE_INV_HANDLE = 386; CONST ERROR_MOUSE_INV_PARMS = 387; CONST ERROR_MOUSE_CANT_RESET = 388; CONST ERROR_MOUSE_DISPLAY_PARMS = 389; CONST ERROR_MOUSE_INV_MODULE = 390; CONST ERROR_MOUSE_INV_ENTRY_PT = 391; CONST ERROR_MOUSE_INV_MASK = 392; CONST NO_ERROR_MOUSE_NO_DATA = 393; CONST NO_ERROR_MOUSE_PTR_DRAWN = 394; CONST ERROR_INVALID_FREQUENCY = 395; CONST ERROR_NLS_NO_COUNTRY_FILE = 396; CONST ERROR_NLS_OPEN_FAILED = 397; CONST ERROR_NLS_NO_CTRY_CODE = 398; CONST ERROR_NO_COUNTRY_OR_CODEPAGE = 398; CONST ERROR_NLS_TABLE_TRUNCATED = 399; CONST ERROR_NLS_BAD_TYPE = 400; CONST ERROR_NLS_TYPE_NOT_FOUND = 401; CONST ERROR_VIO_SMG_ONLY = 402; CONST ERROR_VIO_INVALID_ASCIIZ = 403; CONST ERROR_VIO_DEREGISTER = 404; CONST ERROR_VIO_NO_POPUP = 405; CONST ERROR_VIO_EXISTING_POPUP = 406; CONST ERROR_KBD_SMG_ONLY = 407; CONST ERROR_KBD_INVALID_ASCIIZ = 408; CONST ERROR_KBD_INVALID_MASK = 409; CONST ERROR_KBD_REGISTER = 410; CONST ERROR_KBD_DEREGISTER = 411; CONST ERROR_MOUSE_SMG_ONLY = 412; CONST ERROR_MOUSE_INVALID_ASCIIZ = 413; CONST ERROR_MOUSE_INVALID_MASK = 414; CONST ERROR_MOUSE_REGISTER = 415; CONST ERROR_MOUSE_DEREGISTER = 416; CONST ERROR_SMG_BAD_ACTION = 417; CONST ERROR_SMG_INVALID_CALL = 418; CONST ERROR_SCS_SG_NOTFOUND = 419; CONST ERROR_SCS_NOT_SHELL = 420; CONST ERROR_VIO_INVALID_PARMS = 421; CONST ERROR_VIO_FUNCTION_OWNED = 422; CONST ERROR_VIO_RETURN = 423; CONST ERROR_SCS_INVALID_FUNCTION = 424; CONST ERROR_SCS_NOT_SESSION_MGR = 425; CONST ERROR_VIO_REGISTER = 426; CONST ERROR_VIO_NO_MODE_THREAD = 427; CONST ERROR_VIO_NO_SAVE_RESTORE_THD = 428; CONST ERROR_VIO_IN_BG = 429; CONST ERROR_VIO_ILLEGAL_DURING_POPUP = 430; CONST ERROR_SMG_NOT_BASESHELL = 431; CONST ERROR_SMG_BAD_STATUSREQ = 432; CONST ERROR_QUE_INVALID_WAIT = 433; CONST ERROR_VIO_LOCK = 434; CONST ERROR_MOUSE_INVALID_IOWAIT = 435; CONST ERROR_VIO_INVALID_HANDLE = 436; CONST ERROR_VIO_ILLEGAL_DURING_LOCK = 437; CONST ERROR_VIO_INVALID_LENGTH = 438; CONST ERROR_KBD_INVALID_HANDLE = 439; CONST ERROR_KBD_NO_MORE_HANDLE = 440; CONST ERROR_KBD_CANNOT_CREATE_KCB = 441; CONST ERROR_KBD_CODEPAGE_LOAD_INCOMPL = 442; CONST ERROR_KBD_INVALID_CODEPAGE_ID = 443; CONST ERROR_KBD_NO_CODEPAGE_SUPPORT = 444; CONST ERROR_KBD_FOCUS_REQUIRED = 445; CONST ERROR_KBD_FOCUS_ALREADY_ACTIVE = 446; CONST ERROR_KBD_KEYBOARD_BUSY = 447; CONST ERROR_KBD_INVALID_CODEPAGE = 448; CONST ERROR_KBD_UNABLE_TO_FOCUS = 449; CONST ERROR_SMG_SESSION_NON_SELECT = 450; CONST ERROR_SMG_SESSION_NOT_FOREGRND = 451; CONST ERROR_SMG_SESSION_NOT_PARENT = 452; CONST ERROR_SMG_INVALID_START_MODE = 453; CONST ERROR_SMG_INVALID_RELATED_OPT = 454; CONST ERROR_SMG_INVALID_BOND_OPTION = 455; CONST ERROR_SMG_INVALID_SELECT_OPT = 456; CONST ERROR_SMG_START_IN_BACKGROUND = 457; CONST ERROR_SMG_INVALID_STOP_OPTION = 458; CONST ERROR_SMG_BAD_RESERVE = 459; CONST ERROR_SMG_PROCESS_NOT_PARENT = 460; CONST ERROR_SMG_INVALID_DATA_LENGTH = 461; CONST ERROR_SMG_NOT_BOUND = 462; CONST ERROR_SMG_RETRY_SUB_ALLOC = 463; CONST ERROR_KBD_DETACHED = 464; CONST ERROR_VIO_DETACHED = 465; CONST ERROR_MOU_DETACHED = 466; CONST ERROR_VIO_FONT = 467; CONST ERROR_VIO_USER_FONT = 468; CONST ERROR_VIO_BAD_CP = 469; CONST ERROR_VIO_NO_CP = 470; CONST ERROR_VIO_NA_CP = 471; CONST ERROR_INVALID_CODE_PAGE = 472; CONST ERROR_CPLIST_TOO_SMALL = 473; CONST ERROR_CP_NOT_MOVED = 474; CONST ERROR_MODE_SWITCH_INIT = 475; CONST ERROR_CODE_PAGE_NOT_FOUND = 476; CONST ERROR_UNEXPECTED_SLOT_RETURNED = 477; CONST ERROR_SMG_INVALID_TRACE_OPTION = 478; CONST ERROR_VIO_INTERNAL_RESOURCE = 479; CONST ERROR_VIO_SHELL_INIT = 480; CONST ERROR_SMG_NO_HARD_ERRORS = 481; CONST ERROR_CP_SWITCH_INCOMPLETE = 482; CONST ERROR_VIO_TRANSPARENT_POPUP = 483; CONST ERROR_CRITSEC_OVERFLOW = 484; CONST ERROR_CRITSEC_UNDERFLOW = 485; CONST ERROR_VIO_BAD_RESERVE = 486; CONST ERROR_INVALID_ADDRESS = 487; CONST ERROR_ZERO_SELECTORS_REQUESTED = 488; CONST ERROR_NOT_ENOUGH_SELECTORS_AVA = 489; CONST ERROR_INVALID_SELECTOR = 490; CONST ERROR_SMG_INVALID_PROGRAM_TYPE = 491; CONST ERROR_SMG_INVALID_PGM_CONTROL = 492; CONST ERROR_SMG_INVALID_INHERIT_OPT = 493; CONST ERROR_VIO_EXTENDED_SG = 494; CONST ERROR_VIO_NOT_PRES_MGR_SG = 495; CONST ERROR_VIO_SHIELD_OWNED = 496; CONST ERROR_VIO_NO_MORE_HANDLES = 497; CONST ERROR_VIO_SEE_ERROR_LOG = 498; CONST ERROR_VIO_ASSOCIATED_DC = 499; CONST ERROR_KBD_NO_CONSOLE = 500; CONST ERROR_MOUSE_NO_CONSOLE = 501; CONST ERROR_MOUSE_INVALID_HANDLE = 502; CONST ERROR_SMG_INVALID_DEBUG_PARMS = 503; CONST ERROR_KBD_EXTENDED_SG = 504; CONST ERROR_MOU_EXTENDED_SG = 505; CONST ERROR_SMG_INVALID_ICON_FILE = 506; CONST ERROR_USER_DEFINED_BASE = 0FF00H; CONST ERROR_I24_WRITE_PROTECT = 0; CONST ERROR_I24_BAD_UNIT = 1; CONST ERROR_I24_NOT_READY = 2; CONST ERROR_I24_BAD_COMMAND = 3; CONST ERROR_I24_CRC = 4; CONST ERROR_I24_BAD_LENGTH = 5; CONST ERROR_I24_SEEK = 6; CONST ERROR_I24_NOT_DOS_DISK = 7; CONST ERROR_I24_SECTOR_NOT_FOUND = 8; CONST ERROR_I24_OUT_OF_PAPER = 9; CONST ERROR_I24_WRITE_FAULT = 10; CONST ERROR_I24_READ_FAULT = 11; CONST ERROR_I24_GEN_FAILURE = 12; CONST ERROR_I24_DISK_CHANGE = 13; CONST ERROR_I24_WRONG_DISK = 15; CONST ERROR_I24_UNCERTAIN_MEDIA = 16; CONST ERROR_I24_CHAR_CALL_INTERRUPTED = 17; CONST ERROR_I24_NO_MONITOR_SUPPORT = 18; CONST ERROR_I24_INVALID_PARAMETER = 19; CONST ERROR_I24_DEVICE_IN_USE = 20; CONST ALLOWED_FAIL = 0001H; CONST ALLOWED_ABORT = 0002H; CONST ALLOWED_RETRY = 0004H; CONST ALLOWED_IGNORE = 0008H; CONST ALLOWED_ACKNOWLEDGE = 0010H; CONST ALLOWED_DISPATCH = 8000H; CONST I24_OPERATION = 01H; CONST I24_AREA = 06H; CONST I24_CLASS = 80H; (*Values for error CLASS *) CONST ERRCLASS_OUTRES = 1; (*Out of Resource *) CONST ERRCLASS_TEMPSIT = 2; (*Temporary Situation *) CONST ERRCLASS_AUTH = 3; (*Permission problem *) CONST ERRCLASS_INTRN = 4; (*Internal System Error *) CONST ERRCLASS_HRDFAIL = 5; (*Hardware Failure *) CONST ERRCLASS_SYSFAIL = 6; (*System Failure *) CONST ERRCLASS_APPERR = 7; (*Application Error *) CONST ERRCLASS_NOTFND = 8; (*Not Found *) CONST ERRCLASS_BADFMT = 9; (*Bad Format *) CONST ERRCLASS_LOCKED = 10; (*Locked *) CONST ERRCLASS_MEDIA = 11; (*Media Failure *) CONST ERRCLASS_ALREADY = 12; (*Collision with Existing Item *) CONST ERRCLASS_UNK = 13; (*Unknown/other *) CONST ERRCLASS_CANT = 14; CONST ERRCLASS_TIME = 15; (*Values for error ACTION *) CONST ERRACT_RETRY = 1; (*Retry *) CONST ERRACT_DLYRET = 2; (*Delay Retry, retry after pause *) CONST ERRACT_USER = 3; (*Ask user to regive information *) CONST ERRACT_ABORT = 4; (*abort with clean up *) CONST ERRACT_PANIC = 5; (*abort immediately *) CONST ERRACT_IGNORE = 6; (*ignore *) CONST ERRACT_INTRET = 7; (*Retry after User Intervention *) (*Values for error LOCUS *) CONST ERRLOC_UNK = 1; (*No appropriate value *) CONST ERRLOC_DISK = 2; (*Random Access Mass Storage *) CONST ERRLOC_NET = 3; (*Network *) CONST ERRLOC_SERDEV = 4; (*Serial Device *) CONST ERRLOC_MEM = 5; (*Memory *) (*Abnormal termination codes *) CONST TC_NORMAL = 0; CONST TC_HARDERR = 1; CONST TC_GP_TRAP = 2; CONST TC_SIGNAL = 3; CONST ERROR_SWAPPER_NOT_ACTIVE = 32768; CONST ERROR_INVALID_SWAPID = 32769; CONST ERROR_IOERR_SWAP_FILE = 32770; CONST ERROR_SWAP_TABLE_FULL = 32771; CONST ERROR_SWAP_FILE_FULL = 32772; CONST ERROR_CANT_INIT_SWAPPER = 32773; CONST ERROR_SWAPPER_ALREADY_INIT = 32774; CONST ERROR_PMM_INSUFFICIENT_MEMORY = 32775; CONST ERROR_PMM_INVALID_FLAGS = 32776; CONST ERROR_PMM_INVALID_ADDRESS = 32777; CONST ERROR_PMM_LOCK_FAILED = 32778; CONST ERROR_PMM_UNLOCK_FAILED = 32779; CONST ERROR_PMM_MOVE_INCOMPLETE = 32780; CONST ERROR_UCOM_DRIVE_RENAMED = 32781; CONST ERROR_UCOM_FILENAME_TRUNCATED = 32782; CONST ERROR_UCOM_BUFFER_LENGTH = 32783; CONST ERROR_MON_CHAIN_HANDLE = 32784; CONST ERROR_MON_NOT_REGISTERED = 32785; CONST ERROR_SMG_ALREADY_TOP = 32786; CONST ERROR_PMM_ARENA_MODIFIED = 32787; CONST ERROR_SMG_PRINTER_OPEN = 32788; CONST ERROR_PMM_SET_FLAGS_FAILED = 32789; CONST ERROR_INVALID_DOS_DD = 32790; CONST ERROR_CPSIO_CODE_PAGE_INVALID = 65026; CONST ERROR_CPSIO_NO_SPOOLER = 65027; CONST ERROR_CPSIO_FONT_ID_INVALID = 65028; CONST ERROR_CPSIO_INTERNAL_ERROR = 65033; CONST ERROR_CPSIO_INVALID_PTR_NAME = 65034; CONST ERROR_CPSIO_NOT_ACTIVE = 65037; CONST ERROR_CPSIO_PID_FULL = 65039; CONST ERROR_CPSIO_PID_NOT_FOUND = 65040; CONST ERROR_CPSIO_READ_CTL_SEQ = 65043; CONST ERROR_CPSIO_READ_FNT_DEF = 65045; CONST ERROR_CPSIO_WRITE_ERROR = 65047; CONST ERROR_CPSIO_WRITE_FULL_ERROR = 65048; CONST ERROR_CPSIO_WRITE_HANDLE_BAD = 65049; CONST ERROR_CPSIO_SWIT_LOAD = 65074; CONST ERROR_CPSIO_INV_COMMAND = 65077; CONST ERROR_CPSIO_NO_FONT_SWIT = 65078; (* * _api_init must be called to initialize the DOS implementations * of the family api routines. *) PROCEDURE _api_init (); END FAPI.