summaryrefslogtreecommitdiffstats
path: root/private/os2/inc/os2v12.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/os2/inc/os2v12.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/os2/inc/os2v12.h')
-rw-r--r--private/os2/inc/os2v12.h1106
1 files changed, 1106 insertions, 0 deletions
diff --git a/private/os2/inc/os2v12.h b/private/os2/inc/os2v12.h
new file mode 100644
index 000000000..aad8956fd
--- /dev/null
+++ b/private/os2/inc/os2v12.h
@@ -0,0 +1,1106 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ os2v12.h
+
+Abstract:
+
+ Include file for OS/2 Subsystem Client 16 bit API support.
+
+Author:
+
+ Patrick Questembert 16-Feb-92
+
+Revision History:
+
+--*/
+
+#pragma pack(2) /* To cancel alignement done by 32-bit compiler since we
+ have in this include file only OS/2 1.x typedefs */
+
+#define INCL_DOSINCLUDED
+
+#ifndef INCL_BASEINCLUDED
+#if !(defined(INCL_32) || defined(INCL_16))
+#ifdef M_I386
+ #define INCL_32
+#else /* not M_I386 */
+ #define INCL_16
+#endif /* M_I386 */
+#endif /* INCL_32 || INCL_16 */
+
+#if !defined(INCL_16)
+#pragma message ("16-bit Base API included when using 32-bit compiler")
+#endif /* INCL_32 */
+#endif /* INCL_BASEINCLUDED */
+
+#ifdef INCL_DOS
+
+#define INCL_DOSPROCESS
+#define INCL_DOSINFOSEG
+#define INCL_DOSFILEMGR
+#define INCL_DOSMEMMGR
+#define INCL_DOSSEMAPHORES
+#define INCL_DOSDATETIME
+#define INCL_DOSMODULEMGR
+#define INCL_DOSRESOURCES
+#define INCL_DOSNLS
+#define INCL_DOSSIGNALS
+#define INCL_DOSMISC
+#define INCL_DOSMONITORS
+#define INCL_DOSQUEUES
+#define INCL_DOSSESMGR
+#define INCL_DOSDEVICES
+#define INCL_DOSNMPIPES
+#define INCL_DOSPROFILE
+#define INCL_DOSMVDM
+
+#endif /* INCL_DOS */
+
+#ifdef INCL_ERRORS
+#define INCL_DOSERRORS
+#endif /* INCL_ERRORS */
+
+#if (defined(INCL_DOSPROCESS) || !defined(INCL_NOCOMMON))
+
+
+/* DosExit codes */
+#define EXIT_THREAD 0
+#define EXIT_PROCESS 1
+
+#endif /* common INCL_DOSPROCESS definitions */
+
+#ifdef INCL_DOSPROCESS
+
+typedef struct _PIDINFO { /* pidi */
+ USHORT pid;
+ USHORT tid;
+ USHORT pidParent;
+} PIDINFO;
+typedef PIDINFO FAR *PPIDINFO;
+
+
+/* Action code values */
+#define DCWA_PROCESS 0
+#define DCWA_PROCESSTREE 1
+
+/* Wait option values */
+#define DCWW_WAIT 0
+#define DCWW_NOWAIT 1
+
+/* codeTerminate values (also passed to ExitList routines) */
+#define TC_EXIT 0
+#define TC_HARDERROR 1
+#define TC_TRAP 2
+#define TC_KILLPROCESS 3
+
+
+/* DosExitList functions */
+#define EXLST_ADD 1
+#define EXLST_REMOVE 2
+#define EXLST_EXIT 3
+
+
+/* DosExecPgm functions */
+#define EXEC_SYNC 0
+#define EXEC_ASYNC 1
+#define EXEC_ASYNCRESULT 2
+#define EXEC_TRACE 3
+#define EXEC_BACKGROUND 4
+#define EXEC_LOAD 5
+
+
+
+/* Priority scopes */
+#define PRTYS_PROCESS 0
+#define PRTYS_PROCESSTREE 1
+#define PRTYS_THREAD 2
+
+/* Priority classes */
+#define PRTYC_NOCHANGE 0
+#define PRTYC_IDLETIME 1
+#define PRTYC_REGULAR 2
+#define PRTYC_TIMECRITICAL 3
+#define PRTYC_FOREGROUNDSERVER 4
+
+/* Priority deltas */
+#define PRTYD_MINIMUM -31
+#define PRTYD_MAXIMUM 31
+
+
+#define DKP_PROCESSTREE 0
+#define DKP_PROCESS 1
+
+#endif /* INCL_DOSPROCESS */
+
+
+/*** InfoSeg support */
+
+#ifdef INCL_DOSINFOSEG
+
+/* Global Information Segment */
+
+typedef struct _GINFOSEG { /* gis */
+ ULONG time;
+ ULONG msecs;
+ UCHAR hour;
+ UCHAR minutes;
+ UCHAR seconds;
+ UCHAR hundredths;
+ USHORT timezone;
+ USHORT cusecTimerInterval;
+ UCHAR day;
+ UCHAR month;
+ USHORT year;
+ UCHAR weekday;
+ UCHAR uchMajorVersion;
+ UCHAR uchMinorVersion;
+ UCHAR chRevisionLetter;
+ UCHAR sgCurrent;
+ UCHAR sgMax;
+ UCHAR cHugeShift;
+ UCHAR fProtectModeOnly;
+ USHORT pidForeground;
+ UCHAR fDynamicSched;
+ UCHAR csecMaxWait;
+ USHORT cmsecMinSlice;
+ USHORT cmsecMaxSlice;
+ USHORT bootdrive;
+ UCHAR amecRAS[32];
+ UCHAR csgWindowableVioMax;
+ UCHAR csgPMMax;
+} GINFOSEG;
+typedef GINFOSEG FAR *PGINFOSEG;
+
+/* Local Information Segment */
+
+typedef struct _LINFOSEG { /* lis */
+ USHORT pidCurrent;
+ USHORT pidParent;
+ USHORT prtyCurrent;
+ USHORT tidCurrent;
+ USHORT sgCurrent;
+ UCHAR rfProcStatus;
+ UCHAR dummy1;
+ USHORT fForeground;
+ UCHAR typeProcess;
+ UCHAR dummy2;
+ SEL selEnvironment;
+ USHORT offCmdLine;
+ USHORT cbDataSegment;
+ USHORT cbStack;
+ USHORT cbHeap;
+ USHORT hmod;
+ SEL selDS;
+} LINFOSEG;
+typedef LINFOSEG FAR *PLINFOSEG;
+
+/* Process Type codes (local information segment typeProcess field) */
+
+#define PT_FULLSCREEN 0 /* Full screen application */
+#define PT_REALMODE 1 /* Real mode process */
+#define PT_WINDOWABLEVIO 2 /* VIO windowable application */
+#define PT_PM 3 /* Presentation Manager application */
+#define PT_DETACHED 4 /* Detached application */
+
+/* Process Status Flag definitions (local info seg rfProcStatus field) */
+
+#define PS_EXITLIST 1 /* Thread is in exitlist routine */
+
+
+/* Helper macros used to convert selector to PINFOSEG or LINFOSEG */
+
+#define MAKEPGINFOSEG(sel) ((PGINFOSEG)MAKEP(sel, 0))
+#define MAKEPLINFOSEG(sel) ((PLINFOSEG)MAKEP(sel, 0))
+
+#endif /* INCL_DOSINFOSEG */
+
+/*
+ * CCHMAXPATH is the maximum fully qualified path name length including
+ * the drive letter, colon, backslashes and terminating NULL.
+ */
+#define CCHMAXPATH 260
+
+/*
+ * CCHMAXPATHCOMP is the maximum individual path component name length
+ * including a terminating NULL.
+ */
+#define CCHMAXPATHCOMP 256
+
+#if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
+
+/*** File manager */
+
+/* DosSetFilePtr() file position codes */
+
+#define FILE_BEGIN 0x0000 /* relative to beginning of file */
+#define FILE_CURRENT 0x0001 /* relative to current fptr position*/
+#define FILE_END 0x0002 /* relative to end of file */
+
+/* DosFindFirst/Next Directory handle types */
+
+#define HDIR_SYSTEM 1 /* Use system handle (1) */
+
+/* DosCopy control bits - may be or'ed together */
+#define DCPY_EXISTING 0x00001 /* Copy even if target exists */
+#define DCPY_APPEND 0x00002 /* Append to existing file, don't replace*/
+#define DCPY_FAILEAS 0x00004 /* Fail if EAs not supported on target*/
+
+/* Dosopen/DosQFHandState/DosQueryFileInfo et al file attributes; also */
+/* known as Dos File Mode bits... */
+#define FILE_NORMAL 0x0000
+#define FILE_READONLY 0x0001
+#define FILE_HIDDEN 0x0002
+#define FILE_SYSTEM 0x0004
+#define FILE_DIRECTORY 0x0010
+#define FILE_ARCHIVED 0x0020
+
+/* DosOpen() actions */
+#define FILE_EXISTED 0x0001
+#define FILE_CREATED 0x0002
+#define FILE_TRUNCATED 0x0003
+
+/* DosOpen() open flags */
+//#define FILE_OPEN 0x0001
+#define FILE_TRUNCATE 0x0002
+//#define FILE_CREATE 0x0010
+
+/* applies if file already exists */
+
+#define OPEN_ACTION_FAIL_IF_EXISTS 0x0000 /* ---- ---- ---- 0000 */
+#define OPEN_ACTION_OPEN_IF_EXISTS 0x0001 /* ---- ---- ---- 0001 */
+#define OPEN_ACTION_REPLACE_IF_EXISTS 0x0002 /* ---- ---- ---- 0010 */
+
+/* applies if file does not exist */
+
+#define OPEN_ACTION_FAIL_IF_NEW 0x0000 /* ---- ---- 0000 ---- */
+#define OPEN_ACTION_CREATE_IF_NEW 0x0010 /* ---- ---- 0001 ---- */
+
+/* DosOpen/DosSetFHandState flags */
+
+//#define OPEN_ACCESS_READONLY 0x0000 /* ---- ---- ---- -000 */
+//#define OPEN_ACCESS_WRITEONLY 0x0001 /* ---- ---- ---- -001 */
+//#define OPEN_ACCESS_READWRITE 0x0002 /* ---- ---- ---- -010 */
+//#define OPEN_SHARE_DENYREADWRITE 0x0010 /* ---- ---- -001 ---- */
+//#define OPEN_SHARE_DENYWRITE 0x0020 /* ---- ---- -010 ---- */
+//#define OPEN_SHARE_DENYREAD 0x0030 /* ---- ---- -011 ---- */
+//#define OPEN_SHARE_DENYNONE 0x0040 /* ---- ---- -100 ---- */
+//#define OPEN_FLAGS_NOINHERIT 0x0080 /* ---- ---- 1--- ---- */
+//#define OPEN_FLAGS_NO_LOCALITY 0x0000 /* ---- -000 ---- ---- */
+//#define OPEN_FLAGS_SEQUENTIAL 0x0100 /* ---- -001 ---- ---- */
+//#define OPEN_FLAGS_RANDOM 0x0200 /* ---- -010 ---- ---- */
+//#define OPEN_FLAGS_RANDOMSEQUENTIAL 0x0300 /* ---- -011 ---- ---- */
+//#define OPEN_FLAGS_NO_CACHE 0x1000 /* ---1 ---- ---- ---- */
+//#define OPEN_FLAGS_FAIL_ON_ERROR 0x2000 /* --1- ---- ---- ---- */
+//#define OPEN_FLAGS_WRITE_THROUGH 0x4000 /* -1-- ---- ---- ---- */
+//#define OPEN_FLAGS_DASD 0x8000 /* 1--- ---- ---- ---- */
+#define OPEN_FLAGS_NONSPOOLED 0x00040000
+
+#define MUST_HAVE_READONLY ( (FILE_READONLY << 8) | FILE_READONLY )
+#define MUST_HAVE_HIDDEN ( (FILE_HIDDEN << 8) | FILE_HIDDEN )
+#define MUST_HAVE_SYSTEM ( (FILE_SYSTEM << 8) | FILE_SYSTEM )
+#define MUST_HAVE_DIRECTORY ( (FILE_DIRECTORY << 8) | FILE_DIRECTORY )
+#define MUST_HAVE_ARCHIVED ( (FILE_ARCHIVED << 8) | FILE_ARCHIVED )
+
+/* DosSearchPath() constants */
+
+#define SEARCH_PATH 0x0000
+#define SEARCH_CUR_DIRECTORY 0x0001
+#define SEARCH_ENVIRONMENT 0x0002
+#define SEARCH_IGNORENETERRS 0x0004
+
+/*
+ * DosFileIO
+ */
+/* File IO command words */
+#define FIO_LOCK 0 /* Lock Files */
+#define FIO_UNLOCK 1 /* Unlock Files */
+#define FIO_SEEK 2 /* Seek (set file ptr) */
+#define FIO_READ 3 /* File Read */
+#define FIO_WRITE 4 /* File Write */
+
+/* Lock Sharing Modes */
+#define FIO_NOSHARE 0 /* None */
+#define FIO_SHAREREAD 1 /* Read-Only */
+
+typedef struct _FIOLOCKCMD16 { /* FLC FileLockCmd prefix */
+ USHORT usCmd; /* Cmd = FIO_LOCK */
+ USHORT cLockCnt; /* Lock records that follow */
+ ULONG cTimeOut; /* in Msec */
+} FIOLOCKCMD16;
+typedef FIOLOCKCMD16 FAR *PFIOLOCKCMD16;
+
+
+typedef struct _FIOLOCKREC16 { /* FLR FileLockRecord */
+ USHORT fShare; /* FIO_NOSHARE or FIO_SHAREREAD */
+ ULONG cbStart; /* Starting offset for lock region */
+ ULONG cbLength; /* Length of lock region */
+} FIOLOCKREC16;
+typedef FIOLOCKREC16 FAR *PFIOLOCKREC16;
+
+
+typedef struct _FIOUNLOCKCMD16 { /* FUC FileUnlockCmd prefix */
+ USHORT usCmd; /* Cmd = FIO_UNLOCK */
+ USHORT cUnlockCnt; /* Unlock records that follow */
+} FIOUNLOCKCMD16;
+typedef FIOUNLOCKCMD16 FAR *PFIOUNLOCKCMD16;
+
+
+typedef struct _FIOUNLOCKREC16 { /* FUR FileUnlockRecord */
+ ULONG cbStart; /* Starting offset for unlock region */
+ ULONG cbLength; /* Length of unlock region */
+} FIOUNLOCKREC16;
+typedef FIOUNLOCKREC16 FAR *PFIOUNLOCKREC16;
+
+
+typedef struct _FIOSEEKCMD16 { /* FSC Seek command structure */
+ USHORT usCmd; /* Cmd = FIO_SEEK */
+ USHORT fsMethod; /* One of&gml FPM_BEGINNING, FPM_CURRENT, */
+ ///* or FPM_END */
+ ULONG cbDistance; /* Byte offset for seek */
+ ULONG cbNewPosition; /* Bytes from start of file after seek */
+} FIOSEEKCMD16;
+typedef FIOSEEKCMD16 FAR *PFIOSEEKCMD16;
+
+
+typedef struct _FIOREADWRITE16 { /* RWC Read&Write command structure */
+ USHORT usCmd; /* Cmd = FIO_READ or FIO_WRITE */
+ PVOID pbBuffer; /* Pointer to data buffer */
+ USHORT cbBufferLen; /* Bytes in buffer or max size */
+ USHORT cbActualLen; /* Bytes actually read/written */
+} FIOREADWRITE16;
+typedef FIOREADWRITE16 FAR *PFIOREADWRITE16;
+
+/***
+ * EA Info Levels & Find First/Next
+ * API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo,
+ * DosSetPathInfo
+ */
+
+/* File info levels : All listed API's */
+#define FIL_STANDARD 1 /* Info level 1, standard file info */
+#define FIL_QUERYEASIZE 2 /* Level 2, return Full EA size */
+#define FIL_QUERYEASFROMLIST 3 /* Level 3, return requested EA's */
+#define FIL_QUERYALLEAS 4 /* Level 4, return all EA's */
+
+/* File info levels: Dos...PathInfo only */
+#define FIL_QUERYFULLNAME 5 /* Level 5, return fully qualified */
+ /* name of file */
+#define FIL_NAMEISVALID 6 /* Level 6, check validity of */
+ /* file/path name for this FSD */
+
+/* DosFindNotifyFirst() */
+#define FNOTIL_STANDARD 1 /* Find-Notify Info level 1&gml Return */
+ /* standard directory change info */
+
+/* DosFsAttach() */
+/* Attact or detach */
+#define FSATTACH 0 /* Attach file server */
+#define FSDETACH 1 /* Detach file server */
+#define FS_SPOOLATTACH 2 /* Register a spooler device */
+#define FS_SPOOLDETACH 3 /* De-register a spooler device */
+
+/* DosFsCtl() */
+/* Routing type */
+#define FSCTL_HANDLE 1 /* File Handle directs req routing */
+#define FSCTL_PATHNAME 2 /* Path Name directs req routing */
+#define FSCTL_FSDNAME 3 /* FSD Name directs req routing */
+
+/* DosQueryFSAttach() */
+/* Information level types (defines method of query) */
+#define FSAIL_QUERYNAME 1 /* Return data for a Drive or Device */
+#define FSAIL_DEVNUMBER 2 /* Return data for Ordinal Device # */
+#define FSAIL_DRVNUMBER 3 /* Return data for Ordinal Drive # */
+
+/* Item types (from data structure item "iType") */
+#define FSAT_CHARDEV 1 /* Resident character device */
+#define FSAT_PSEUDODEV 2 /* Pusedu-character device */
+#define FSAT_LOCALDRV 3 /* Local drive */
+#define FSAT_REMOTEDRV 4 /* Remote drive attached to FSD */
+
+typedef struct _SPOOLATTACH { /* Data structure for spooler operations */
+ USHORT hNmPipe; /* Named pipe handle */
+ ULONG ulKey; /* Attached Key */
+} SPOOLATTACH;
+typedef SPOOLATTACH FAR *PSPOOLATTACH;
+
+
+/*
+ * File System Drive Information&gml DosQueryFSInfo DosSetFSInfo
+ */
+
+/* FS Drive Info Levels */
+#define FSIL_ALLOC 1 /* Drive allocation info (Query only) */
+#define FSIL_VOLSER 2 /* Drive Volume/Serial information */
+
+/* DosQueryFHType() */
+/* Handle classes (low 8 bits of Handle Type) */
+#define FHT_DISKFILE 0x0000 /* Disk file handle */
+#define FHT_CHRDEV 0x0001 /* Character device handle */
+#define FHT_PIPE 0x0002 /* Pipe handle */
+
+/* Handle bits (high 8 bits of Handle Type) */
+#define FHB_DSKREMOTE 0x8000 /* Remote disk */
+#define FHB_CHRDEVREMOTE 0x8000 /* Remote character device */
+#define FHB_PIPEREMOTE 0x8000 /* Remote pipe */
+
+
+//typedef SHANDLE HFILE; /* hf */
+//typedef HFILE FAR *PHFILE;
+
+
+/* File time and date types */
+
+//typedef struct _FTIME { /* ftime */
+// USHORT twosecs : 5;
+// USHORT minutes : 6;
+// USHORT hours : 5;
+//} FTIME;
+//typedef FTIME FAR *PFTIME;
+
+//typedef struct _FDATE { /* fdate */
+// USHORT day : 5;
+// USHORT month : 4;
+// USHORT year : 7;
+//} FDATE;
+//typedef FDATE FAR *PFDATE;
+
+typedef struct _FILEFINDBUF { /* findbuf */
+ FDATE fdateCreation;
+ FTIME ftimeCreation;
+ FDATE fdateLastAccess;
+ FTIME ftimeLastAccess;
+ FDATE fdateLastWrite;
+ FTIME ftimeLastWrite;
+ ULONG cbFile;
+ ULONG cbFileAlloc;
+ USHORT attrFile;
+ UCHAR cchName;
+ CHAR achName[CCHMAXPATHCOMP];
+} FILEFINDBUF;
+typedef FILEFINDBUF FAR *PFILEFINDBUF;
+
+typedef struct _FILEFINDBUF2 { /* findbuf2 */
+ FDATE fdateCreation;
+ FTIME ftimeCreation;
+ FDATE fdateLastAccess;
+ FTIME ftimeLastAccess;
+ FDATE fdateLastWrite;
+ FTIME ftimeLastWrite;
+ ULONG cbFile;
+ ULONG cbFileAlloc;
+ USHORT attrFile;
+ ULONG cbList;
+ UCHAR cchName;
+ CHAR achName[CCHMAXPATHCOMP];
+} FILEFINDBUF2;
+typedef FILEFINDBUF2 FAR *PFILEFINDBUF2;
+
+/* extended attribute structures */
+typedef struct _GEA { /* gea */
+ BYTE cbName; /* name length not including NULL */
+ CHAR szName[1]; /* attribute name */
+} GEA;
+typedef GEA FAR *PGEA;
+
+typedef struct _GEALIST { /* geal */
+ ULONG cbList; /* total bytes of structure inc full list */
+ GEA list[1]; /* variable length GEA structures */
+} GEALIST;
+typedef GEALIST FAR * PGEALIST;
+
+typedef struct _FEA { /* fea */
+ BYTE fEA; /* flags */
+ BYTE cbName; /* name length not including NULL */
+ USHORT cbValue; /* value length */
+} FEA;
+typedef FEA FAR *PFEA;
+
+/* flags for _FEA.fEA */
+
+#define FEA_NEEDEA 0x80 /* need EA bit */
+
+typedef struct _FEALIST { /* feal */
+ ULONG cbList; /* total bytes of structure inc full list */
+ FEA list[1]; /* variable length FEA structures */
+} FEALIST;
+typedef FEALIST FAR * PFEALIST;
+
+typedef struct _EAOP { /* eaop */
+ PGEALIST fpGEAList; /* general EA list */
+ PFEALIST fpFEAList; /* full EA list */
+ ULONG oError;
+} EAOP;
+typedef EAOP FAR * PEAOP;
+
+
+/*
+ * Equates for EA types
+ *
+ * Values 0xFFFE thru 0x8000 are reserved.
+ * Values 0x0000 thru 0x7fff are user definable.
+ * Value 0xFFFC is not used
+ */
+
+#define EAT_BINARY 0xFFFE /* length preceeded binary */
+#define EAT_ASCII 0xFFFD /* length preceeded ASCII */
+#define EAT_BITMAP 0xFFFB /* length preceeded bitmap */
+#define EAT_METAFILE 0xFFFA /* length preceeded metafile */
+#define EAT_ICON 0xFFF9 /* length preceeded icon */
+#define EAT_EA 0xFFEE /* length preceeded ASCII extended attribute */
+ /* name of associated data (#include)*/
+#define EAT_MVMT 0xFFDF /* multi-valued, multi-typed field */
+#define EAT_MVST 0xFFDE /* multi-valued, single-typed field */
+#define EAT_ASN1 0xFFDD /* ASN.1 field */
+
+
+typedef struct _FILESTATUS16 { /* fsts */
+ FDATE fdateCreation;
+ FTIME ftimeCreation;
+ FDATE fdateLastAccess;
+ FTIME ftimeLastAccess;
+ FDATE fdateLastWrite;
+ FTIME ftimeLastWrite;
+ ULONG cbFile;
+ ULONG cbFileAlloc;
+ USHORT attrFile;
+} FILESTATUS16;
+typedef FILESTATUS16 FAR *PFILESTATUS16;
+
+typedef struct _FILESTATUS2_16 { /* fsts2 */
+ FDATE fdateCreation;
+ FTIME ftimeCreation;
+ FDATE fdateLastAccess;
+ FTIME ftimeLastAccess;
+ FDATE fdateLastWrite;
+ FTIME ftimeLastWrite;
+ ULONG cbFile;
+ ULONG cbFileAlloc;
+ USHORT attrFile;
+ ULONG cbList;
+} FILESTATUS2_16;
+typedef FILESTATUS2_16 FAR *PFILESTATUS2_16;
+
+//typedef struct _FSALLOCATE { /* fsalloc */
+// ULONG idFileSystem;
+// ULONG cSectorUnit;
+// ULONG cUnit;
+// ULONG cUnitAvail;
+// USHORT cbSector;
+//} FSALLOCATE;
+//typedef FSALLOCATE FAR *PFSALLOCATE;
+
+//typedef struct _VOLUMELABEL { /* vol */
+// BYTE cch;
+// CHAR szVolLabel[12];
+//} VOLUMELABEL;
+//typedef VOLUMELABEL FAR *PVOLUMELABEL;
+
+//typedef struct _FSINFO { /* fsinf */
+// FDATE fdateCreation;
+// FTIME ftimeCreation;
+// VOLUMELABEL vol;
+//} FSINFO;
+//typedef FSINFO FAR *PFSINFO;
+
+/* HANDTYPE values */
+
+#define HANDTYPE_FILE 0x0000
+#define HANDTYPE_DEVICE 0x0001
+#define HANDTYPE_PIPE 0x0002
+#define HANDTYPE_NETWORK 0x8000
+
+//typedef struct _FILELOCK { /* flock */
+// LONG lOffset;
+// LONG lRange;
+//} FILELOCK;
+//typedef FILELOCK FAR *PFILELOCK;
+
+//typedef SHANDLE HDIR; /* hdir */
+//typedef HDIR FAR *PHDIR;
+
+/* defines for dossetpathinfo -pathinfo flag */
+#define DSPI_WRTTHRU 0x10 /* write through */
+
+typedef struct _DENA1_16
+{ /* _dena1 level 1 info returned from DosEnumAttribute */
+ UCHAR reserved; /* 0 */
+ UCHAR cbName; /* length of name exculding NULL */
+ USHORT cbValue; /* length of value */
+ UCHAR szName[1]; /* variable length asciiz name */
+} DENA1_16;
+typedef DENA1_16 FAR *PDENA1_16;
+
+/* Infolevels for DosEnumAttribute */
+//#define ENUMEA_LEVEL_NO_VALUE 1L /* FEA without value */
+/* Reference types for DosEnumAttribute */
+#define ENUMEA_REFTYPE_FHANDLE 0 /* file handle */
+#define ENUMEA_REFTYPE_PATH 1 /* path name */
+#define ENUMEA_REFTYPE_MAX ENUMEA_REFTYPE_PATH
+
+#endif /* common INCL_DOSFILEMGR */
+
+#if (defined(INCL_DOSMEMMGR) || !defined(INCL_NOCOMMON))
+/*** Memory management */
+
+/* Segment attribute flags (used with DosAllocSeg) */
+
+#define SEG_NONSHARED 0x0000
+#define SEG_GIVEABLE 0x0001
+#define SEG_GETTABLE 0x0002
+#define SEG_DISCARDABLE 0x0004
+#define SEG_SIZEABLE 0x0008
+
+#endif /* common INCL_DOSMEMMGR */
+
+#if (defined(INCL_DOSSEMAPHORES) || !defined(INCL_NOCOMMON))
+
+/*** Semaphore support */
+
+#define SEM_INDEFINITE_WAIT -1L
+#define SEM_IMMEDIATE_RETURN 0L
+
+#endif /* common INCL_DOSSEMAPHORES */
+
+#ifdef INCL_DOSSEMAPHORES
+
+typedef LHANDLE HSYSSEM; /* hssm */
+typedef HSYSSEM FAR *PHSYSSEM;
+
+#define CSEM_PRIVATE 0
+#define CSEM_PUBLIC 1
+
+typedef struct _MUXSEM { /* mxs */
+ USHORT zero;
+ HSEM hsem;
+} MUXSEM;
+typedef MUXSEM FAR *PMUXSEM;
+
+typedef struct _MUXSEMLIST { /* mxsl */
+ USHORT cmxs;
+ MUXSEM amxs[16];
+} MUXSEMLIST;
+typedef MUXSEMLIST FAR *PMUXSEMLIST;
+
+/*
+ * Since a MUXSEMLIST structure is actually a variable length
+ * structure, the following macro may be used to define a MUXSEMLIST
+ * structure having size elements, named "name".
+ */
+#define DEFINEMUXSEMLIST(name, size) \
+ struct { \
+ USHORT cmxs; \
+ MUXSEM amxs[size]; \
+ } name;
+
+
+/*** Fast safe ram semaphores */
+
+typedef struct _DOSFSRSEM { /* dosfsrs */
+ USHORT cb;
+ USHORT pid;
+ USHORT tid;
+ USHORT cUsage;
+ USHORT client;
+ ULONG sem;
+} DOSFSRSEM;
+typedef DOSFSRSEM FAR *PDOSFSRSEM;
+
+
+#endif /* INCL_DOSSEMAPHORES */
+
+
+/*** Module manager */
+
+#ifdef INCL_DOSMODULEMGR
+
+#define PT_16BIT 0L
+#define PT_32BIT 1L
+
+#endif /* INCL_DOSMODULEMGR */
+
+#if (defined(INCL_DOSRESOURCES) || !defined(INCL_NOCOMMON))
+
+/*** Resource support */
+
+/* Predefined resource types */
+
+#define RT_POINTER 1 /* mouse pointer shape */
+#define RT_BITMAP 2 /* bitmap */
+#define RT_MENU 3 /* menu template */
+#define RT_DIALOG 4 /* dialog template */
+#define RT_STRING 5 /* string tables */
+#define RT_FONTDIR 6 /* font directory */
+#define RT_FONT 7 /* font */
+#define RT_ACCELTABLE 8 /* accelerator tables */
+#define RT_RCDATA 9 /* binary data */
+#define RT_MESSAGE 10 /* error mesage tables */
+#define RT_DLGINCLUDE 11 /* dialog include file name */
+#define RT_VKEYTBL 12 /* key to vkey tables */
+#define RT_KEYTBL 13 /* key to UGL tables */
+#define RT_CHARTBL 14
+#define RT_DISPLAYINFO 15 /* screen display information */
+
+#define RT_FKASHORT 16 /* function key area short form */
+#define RT_FKALONG 17 /* function key area long form */
+
+#define RT_HELPTABLE 18 /* Help table for Cary Help manager */
+#define RT_HELPSUBTABLE 19 /* Help subtable for Cary Help manager */
+
+#define RT_FDDIR 20 /* DBCS uniq/font driver directory */
+#define RT_FD 21 /* DBCS uniq/font driver */
+
+#define RT_MAX 22 /* 1st unused Resource Type */
+
+
+#endif /* common INCL_DOSRESOURCES */
+
+
+/*** Signal support */
+
+#ifdef INCL_DOSSIGNALS
+
+/* Signal Numbers for DosSetSigHandler */
+
+#define SIG_CTRLC 1 /* Control C */
+#define SIG_BROKENPIPE 2 /* Broken Pipe */
+#define SIG_KILLPROCESS 3 /* Program Termination */
+#define SIG_CTRLBREAK 4 /* Control Break */
+#define SIG_PFLG_A 5 /* Process Flag A */
+#define SIG_PFLG_B 6 /* Process Flag B */
+#define SIG_PFLG_C 7 /* Process Flag C */
+#define SIG_CSIGNALS 8 /* number of signals plus one */
+
+/* Flag Numbers for DosFlagProcess */
+
+#define PFLG_A 0 /* Process Flag A */
+#define PFLG_B 1 /* Process Flag B */
+#define PFLG_C 2 /* Process Flag C */
+
+/* Signal actions */
+
+#define SIGA_KILL 0
+#define SIGA_IGNORE 1
+#define SIGA_ACCEPT 2
+#define SIGA_ERROR 3
+#define SIGA_ACKNOWLEDGE 4
+
+/* DosHoldSignal constants */
+
+#define HLDSIG_ENABLE 0
+#define HLDSIG_DISABLE 1
+
+/* DosFlagProcess codes */
+
+#define FLGP_SUBTREE 0
+#define FLGP_PID 1
+
+typedef VOID (PASCAL FAR *PFNSIGHANDLER)(USHORT, USHORT);
+
+#endif /* INCL_DOSSIGNALS */
+
+
+/*** Monitor support */
+
+#ifdef INCL_DOSMONITORS
+
+typedef SHANDLE HMONITOR; /* hmon */
+typedef HMONITOR FAR *PHMONITOR;
+
+#endif /* INCL_DOSMONITORS */
+
+
+/*** Pipe and queue support */
+
+#ifdef INCL_DOSQUEUES
+#if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
+
+#else /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
+#error PHFILE not defined - define INCL_DOSFILEMGR or undefine INCL_NOCOMMON
+#endif /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
+#endif /* INCL_DOSQUEUES */
+
+#ifdef INCL_DOSMISC
+
+/* definitions for DOSSEARCHPATH control word */
+#define DSP_IMPLIEDCUR 1 /* current dir will be searched first */
+#define DSP_PATHREF 2 /* from envirnoment variable */
+#define DSP_IGNORENETERR 4 /* ignore net errs & continue search */
+
+/* definition for DOSQSYSINFO */
+#define Q_MAX_PATH_LENGTH (0) /* index for query max path length */
+
+/* definitions for DosError - combine with | */
+#define FERR_DISABLEHARDERR 0x00000000L /* disable hard error popups */
+#define FERR_ENABLEHARDERR 0x00000001L /* enable hard error popups */
+#define FERR_ENABLEEXCEPTION 0x00000000L /* enable exception popups */
+#define FERR_DISABLEEXCEPTION 0x00000002L /* disable exception popups */
+
+#endif /* INCL_DOSMISC */
+
+
+/*** Session manager support */
+
+#ifdef INCL_DOSSESMGR
+
+#define SSF_RELATED_INDEPENDENT 0
+#define SSF_RELATED_CHILD 1
+
+#define SSF_FGBG_FORE 0
+#define SSF_FGBG_BACK 1
+
+#define SSF_TRACEOPT_NONE 0
+#define SSF_TRACEOPT_TRACE 1
+#define SSF_TRACEOPT_TRACEALL 2
+
+#define SSF_INHERTOPT_SHELL 0
+#define SSF_INHERTOPT_PARENT 1
+
+/* note that these types are identical to those in pmshl.h for PROG_* */
+#define SSF_TYPE_DEFAULT 0
+#define SSF_TYPE_FULLSCREEN 1
+#define SSF_TYPE_WINDOWABLEVIO 2
+#define SSF_TYPE_PM 3
+#define SSF_TYPE_VDM 4
+#define SSF_TYPE_GROUP 5
+#define SSF_TYPE_DLL 6
+#define SSF_TYPE_WINDOWEDVDM 7
+#define SSF_TYPE_PDD 8
+#define SSF_TYPE_VDD 9
+
+/* note that these flags are identical to those in pmshl.h for SHE_* */
+#define SSF_CONTROL_VISIBLE 0x0000
+#define SSF_CONTROL_INVISIBLE 0x0001
+#define SSF_CONTROL_MAXIMIZE 0x0002
+#define SSF_CONTROL_MINIMIZE 0x0004
+#define SSF_CONTROL_NOAUTOCLOSE 0x0008
+#define SSF_CONTROL_SETPOS 0x8000
+
+typedef struct _REGISTERDATA { /* regdata */
+ USHORT Length;
+ USHORT NotifType;
+ PSZ DDName;
+} REGISTERDATA;
+typedef REGISTERDATA FAR *PREGISTERDATA;
+
+#endif /* INCL_DOSSESMGR */
+
+#if (defined(INCL_DOSSESMGR) || defined(INCL_DOSFILEMGR))
+
+/* AppType returned in by DosQueryAppType in pFlags as follows */
+#define FAPPTYP_NOTSPEC 0x0000
+#define FAPPTYP_NOTWINDOWCOMPAT 0x0001
+#define FAPPTYP_WINDOWCOMPAT 0x0002
+#define FAPPTYP_WINDOWAPI 0x0003
+#define FAPPTYP_BOUND 0x0008
+#define FAPPTYP_DLL 0x0010
+#define FAPPTYP_DOS 0x0020
+#define FAPPTYP_PHYSDRV 0x0040 /* physical device driver */
+#define FAPPTYP_VIRTDRV 0x0080 /* virtual device driver */
+#define FAPPTYP_PROTDLL 0x0100 /* 'protected memory' dll */
+#define FAPPTYP_32BIT 0x4000
+#define FAPPTYP_EXETYPE FAPPTYP_WINDOWAPI
+
+#define FAPPTYP_RESERVED ~(FAPPTYP_WINDOWAPI | FAPPTYP_BOUND | FAPPTYP_DLL | FAPPTYP_DOS | FAPPTYP_PHYSDRV | FAPPTYP_VIRTDRV | FAPPTYP_PROTDLL | FAPPTYP_32BIT)
+
+#ifdef INCL_DOSFILEMGR
+
+#define EAT_APPTYP_PMAPI 0x00 /* Uses PM API */
+#define EAT_APPTYP_DOS 0x01 /* DOS APP */
+#define EAT_APPTYP_PMW 0x02 /* Window compatible */
+#define EAT_APPTYP_NOPMW 0x03 /* Not Window compatible */
+#define EAT_APPTYP_EXETYPE 0x03 /* EXE type mask */
+#define EAT_APPTYP_RESERVED ~(EAT_APPTYP_EXETYPE)
+
+#endif /* INCL_DOSFILEMGR */
+
+#endif /* INCL_DOSSESMGR || INCL_DOSFILEMGR */
+
+/*** Device support */
+
+#ifdef INCL_DOSDEVICES
+
+#define DEVINFO_PRINTER 0 /* Number of printers attached */
+#define DEVINFO_RS232 1 /* Number of RS232 ports */
+#define DEVINFO_FLOPPY 2 /* Number of diskette drives */
+#define DEVINFO_COPROCESSOR 3 /* Presence of math coprocessor */
+#define DEVINFO_SUBMODEL 4 /* PC Submodel Type */
+#define DEVINFO_MODEL 5 /* PC Model Type */
+#define DEVINFO_ADAPTER 6 /* Primary display adapter type */
+#define DEVINFO_COPROCESSORTYPE 7 /* Type of coprocessor functionality */
+
+#define INFO_COUNT_PARTITIONABLE_DISKS 1 /* # of partitionable disks */
+#define INFO_GETIOCTLHANDLE 2 /* Obtain handle */
+#define INFO_FREEIOCTLHANDLE 3 /* Release handle */
+
+
+#endif /* INCL_DOSDEVICES */
+
+
+/*** DosNamedPipes API Support */
+
+#ifdef INCL_DOSNMPIPES
+
+typedef struct _AVAILDATA { /* AVAILDATA */
+ USHORT cbpipe; /* bytes left in the pipe */
+ USHORT cbmessage; /* bytes left in current message */
+} AVAILDATA;
+typedef AVAILDATA FAR *PAVAILDATA;
+
+typedef struct _PIPEINFO { /* nmpinf */
+ USHORT cbOut; /* length of outgoing I/O buffer */
+ USHORT cbIn; /* length of incoming I/O buffer */
+ BYTE cbMaxInst; /* maximum number of instances */
+ BYTE cbCurInst; /* current number of instances */
+ BYTE cbName; /* length of pipe name */
+ CHAR szName[1]; /* start of name */
+} PIPEINFO;
+typedef PIPEINFO FAR *PPIPEINFO;
+
+typedef struct _PIPESEMSTATE { /* nmpsmst */
+ BYTE fStatus; /* type of record, 0 = EOI, 1 = read ok, */
+ /* 2 = write ok, 3 = pipe closed */
+ BYTE fFlag; /* additional info, 01 = waiting thread */
+ USHORT usKey; /* user's key value */
+ USHORT usAvail; /* available data/space if status = 1/2 */
+} PIPESEMSTATE;
+typedef PIPESEMSTATE FAR *PPIPESEMSTATE;
+
+#define NP_INDEFINITE_WAIT -1
+#define NP_DEFAULT_WAIT 0L
+
+/* DosPeekNmPipe() pipe states */
+
+#define NP_STATE_DISCONNECTED 0x0001
+#define NP_STATE_LISTENING 0x0002
+#define NP_STATE_CONNECTED 0x0003
+#define NP_STATE_CLOSING 0x0004
+
+/* DosCreateNPipe open modes */
+
+#define NP_ACCESS_INBOUND 0x0000
+#define NP_ACCESS_OUTBOUND 0x0001
+#define NP_ACCESS_DUPLEX 0x0002
+#define NP_INHERIT 0x0000
+#define NP_NOINHERIT 0x0080
+#define NP_WRITEBEHIND 0x0000
+#define NP_NOWRITEBEHIND 0x4000
+
+/* DosCreateNPipe and DosQueryNPHState state */
+
+#define NP_READMODE_BYTE 0x0000
+#define NP_READMODE_MESSAGE 0x0100
+#define NP_TYPE_BYTE 0x0000
+#define NP_TYPE_MESSAGE 0x0400
+#define NP_END_CLIENT 0x0000
+#define NP_END_SERVER 0x4000
+#define NP_WAIT 0x0000
+#define NP_NOWAIT 0x8000
+#define NP_UNLIMITED_INSTANCES 0x00FF
+
+
+/* values in npss_status */
+#define NPSS_EOI 0 /* End Of Information */
+#define NPSS_RDATA 1 /* read data available */
+#define NPSS_WSPACE 2 /* write space available */
+#define NPSS_CLOSE 3 /* pipe in CLOSING state */
+
+/* values in npss_flag */
+#define NPSS_WAIT 0x01 /* waiting thread on end of pipe */
+
+/* defined bits in pipe mode */
+#define NP_NBLK 0x8000 /* non-blocking read/write */
+#define NP_SERVER 0x4000 /* set if server end */
+#define NP_WMESG 0x0400 /* write messages */
+#define NP_RMESG 0x0100 /* read as messages */
+#define NP_ICOUNT 0x00FF /* instance count field */
+
+
+/* Named pipes may be in one of several states depending on the actions
+ * that have been taken on it by the server end and client end. The
+ * following state/action table summarizes the valid state transitions:
+ *
+ * Current state Action Next state
+ *
+ * <none> server DosMakeNmPipe DISCONNECTED
+ * DISCONNECTED server connect LISTENING
+ * LISTENING client open CONNECTED
+ * CONNECTED server disconn DISCONNECTED
+ * CONNECTED client close CLOSING
+ * CLOSING server disconn DISCONNECTED
+ * CONNECTED server close CLOSING
+ * <any other> server close <pipe deallocated>
+ *
+ * If a server disconnects his end of the pipe, the client end will enter a
+ * special state in which any future operations (except close) on the file
+ * descriptor associated with the pipe will return an error.
+ */
+
+/*
+ * Values for named pipe state
+ */
+
+#define NP_DISCONNECTED 1 /* after pipe creation or Disconnect */
+#define NP_LISTENING 2 /* after DosNmPipeConnect */
+#define NP_CONNECTED 3 /* after Client open */
+#define NP_CLOSING 4 /* after Client or Server close */
+
+
+#endif /* INCL_DOSNMPIPES */
+
+
+/*** DosProfile API support */
+
+#ifdef INCL_DOSPROFILE
+
+/* DosProfile ordinal number */
+
+#define PROF_ORDINAL 133
+
+/* DosProfile usType */
+
+#define PROF_SYSTEM 0
+#define PROF_USER 1
+#define PROF_USEDD 2
+#define PROF_KERNEL 4
+#define PROF_VERBOSE 8
+#define PROF_ENABLE 16
+
+/* DosProfile usFunc */
+
+#define PROF_ALLOC 0
+#define PROF_CLEAR 1
+#define PROF_ON 2
+#define PROF_OFF 3
+#define PROF_DUMP 4
+#define PROF_FREE 5
+
+/* DosProfile tic count granularity (DWORD) */
+
+#define PROF_SHIFT 2
+
+/* DosProfile module name string length */
+
+#define PROF_MOD_NAME_SIZE 10
+
+/* DosProfile error code for end of data */
+
+#define PROF_END_OF_DATA 13
+
+#endif /* INCL_DOSPROFILE */
+
+
+/*** Virtual DOS Machine API support */
+
+#ifdef INCL_DOSMVDM
+
+typedef LHANDLE HVDD; /* hvdd */
+typedef HVDD FAR *PHVDD; /* phvdd */
+
+#endif /* INCL_DOSMVDM */
+
+#pragma pack()
+