home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / watcoapi.zip / incl32 / bsedos.h < prev    next >
C/C++ Source or Header  |  2002-09-30  |  36KB  |  1,088 lines

  1. /*
  2.     OS/2 Base DOS include file for 32-bit development.
  3. */
  4.  
  5. #ifndef __BSEDOS_H__
  6. #define __BSEDOS_H__
  7.  
  8. #ifdef INCL_DOS
  9.     #define INCL_DOSDATETIME
  10.     #define INCL_DOSDEVICES
  11.     #define INCL_DOSEXCEPTIONS
  12.     #define INCL_DOSFILEMGR
  13.     #define INCL_DOSMEMMGR
  14.     #define INCL_DOSMISC
  15.     #define INCL_DOSMODULEMGR
  16.     #define INCL_DOSMONITORS
  17.     #define INCL_DOSMVDM
  18.     #define INCL_DOSNLS
  19.     #define INCL_DOSNMPIPES
  20.     #define INCL_DOSPROCESS
  21.     #define INCL_DOSPROFILE
  22.     #define INCL_DOSQUEUES
  23.     #define INCL_DOSRESOURCES
  24.     #define INCL_DOSSEMAPHORES
  25.     #define INCL_DOSSESMGR
  26. #endif
  27.  
  28. #define CCHMAXPATH          260
  29. #define CCHMAXPATHCOMP      256
  30.  
  31. #if (defined(INCL_DOSPROCESS) || !defined(INCL_NOCOMMON))
  32.  
  33. #define DosCwait          DosWaitChild
  34. #define DosSetPrty        DosSetPriority
  35.  
  36. #define EXEC_SYNC          0
  37. #define EXEC_ASYNC         1
  38. #define EXEC_ASYNCRESULT   2
  39. #define EXEC_TRACE         3
  40. #define EXEC_BACKGROUND    4
  41. #define EXEC_LOAD          5
  42. #define EXEC_ASYNCRESULTDB 6
  43.  
  44. #define PRTYC_NOCHANGE         0
  45. #define PRTYC_IDLETIME         1
  46. #define PRTYC_REGULAR          2
  47. #define PRTYC_TIMECRITICAL     3
  48. #define PRTYC_FOREGROUNDSERVER 4
  49.  
  50. #define PRTYS_PROCESS     0
  51. #define PRTYS_PROCESSTREE 1
  52. #define PRTYS_THREAD      2
  53.  
  54. #define PRTYD_MINIMUM     (-31)
  55. #define PRTYD_MAXIMUM     31
  56.  
  57. #define EXIT_THREAD      0
  58. #define EXIT_PROCESS     1
  59.  
  60. #define EXLST_ADD        1
  61. #define EXLST_REMOVE     2
  62. #define EXLST_EXIT       3
  63.  
  64. #define DKP_PROCESSTREE  0
  65. #define DKP_PROCESS      1
  66.  
  67. #define CREATE_READY     0
  68. #define CREATE_SUSPENDED 1
  69. #define STACK_SPARSE     0
  70. #define STACK_COMMITTED  2
  71.  
  72. #define PT_FULLSCREEN    0
  73. #define PT_REALMODE      1
  74. #define PT_WINDOWABLEVIO 2
  75. #define PT_PM            3
  76. #define PT_DETACHED      4
  77.  
  78. #define PS_EXITLIST      1
  79.  
  80. #define TC_EXIT          0
  81. #define TC_HARDERROR     1
  82. #define TC_TRAP          2
  83. #define TC_KILLPROCESS   3
  84. #define TC_EXCEPTION     4
  85.  
  86. #define DCWA_PROCESS     0
  87. #define DCWA_PROCESSTREE 1
  88.  
  89. #define DCWW_WAIT        0
  90. #define DCWW_NOWAIT      1
  91.  
  92. #define AFNTY_THREAD     0
  93. #define AFNTY_SYSTEM     1
  94.  
  95. typedef VOID APIENTRY FNTHREAD (ULONG);
  96. typedef FNTHREAD *PFNTHREAD;
  97. typedef VOID APIENTRY FNEXITLIST (ULONG);
  98. typedef FNEXITLIST *PFNEXITLIST;
  99.  
  100. typedef struct _RESULTCODES {
  101.     ULONG codeTerminate;
  102.     ULONG codeResult;
  103. } RESULTCODES, *PRESULTCODES;
  104.  
  105. typedef struct _THREADCREATE {
  106.     ULONG     cbSize;
  107.     PTID      pTid;
  108.     PFNTHREAD pfnStart;
  109.     ULONG     lParam;
  110.     ULONG     lFlag;
  111.     PBYTE     pStack;
  112.     ULONG     cbStack;
  113. } THREADCREATE, *PTHREADCREATE;
  114.  
  115. typedef struct _MPAFFINITY {
  116.     ULONG mask[2];
  117. } MPAFFINITY, *PMPAFFINITY;
  118.  
  119. typedef struct _PIB {
  120.     ULONG pib_ulpid;
  121.     ULONG pib_ulppid;
  122.     ULONG pib_hmte;
  123.     PCHAR pib_pchcmd;
  124.     PCHAR pib_pchenv;
  125.     ULONG pib_flstatus;
  126.     ULONG pib_ultype;
  127. } PIB, *PPIB;
  128.  
  129. typedef struct _TIB2 {
  130.     ULONG  tib2_ultid;
  131.     ULONG  tib2_ulpri;
  132.     ULONG  tib2_version;
  133.     USHORT tib2_usMCCount;
  134.     USHORT tib2_fMCForceFlag;
  135. } TIB2, *PTIB2;
  136.  
  137. typedef struct _TIB {
  138.     PVOID tib_pexchain;
  139.     PVOID tib_pstack;
  140.     PVOID tib_pstacklimit;
  141.     PTIB2 tib_ptib2;
  142.     ULONG tib_version;
  143.     ULONG tib_ordinal;
  144. } TIB, *PTIB;
  145.  
  146. APIRET APIENTRY DosAllocThreadLocalMemory(ULONG cb, PULONG *p);
  147. APIRET APIENTRY DosBeep(ULONG freq, ULONG dur);
  148. APIRET APIENTRY DosCreateThread(PTID ptid, PFNTHREAD pfn, ULONG param, ULONG flag, ULONG cbStack);
  149. APIRET APIENTRY DosCreateThread2(PTHREADCREATE ptc);
  150. APIRET APIENTRY DosDebug(PVOID pdbgbuf);
  151. APIRET APIENTRY DosEnterCritSec(VOID);
  152. APIRET APIENTRY DosExecPgm(PCHAR pObjname, LONG cbObjname, ULONG execFlag,
  153.                    PCSZ pArg, PCSZ pEnv, PRESULTCODES pRes, PCSZ pName);
  154. APIRET APIENTRY DosExit(ULONG action, ULONG result);
  155. APIRET APIENTRY DosExitCritSec(VOID);
  156. APIRET APIENTRY DosExitList(ULONG ordercode, PFNEXITLIST pfn);
  157. APIRET APIENTRY DosFreeThreadLocalMemory(ULONG *p);
  158. APIRET APIENTRY DosGetInfoBlocks(PTIB *pptib, PPIB *pppib);
  159. APIRET APIENTRY DosKillProcess(ULONG action, PID pid);
  160. APIRET APIENTRY DosKillThread(TID tid);
  161. APIRET APIENTRY DosResumeThread(TID tid);
  162. APIRET APIENTRY DosSetPriority(ULONG scope, ULONG ulClass, LONG delta, ULONG PorTid);
  163. APIRET APIENTRY DosSleep(ULONG msec);
  164. APIRET APIENTRY DosSuspendThread(TID tid);
  165. APIRET APIENTRY DosWaitChild(ULONG action, ULONG option, PRESULTCODES pres, PPID ppid, PID pid);
  166. APIRET APIENTRY DosWaitThread(PTID ptid, ULONG option);
  167.  
  168. #endif
  169.  
  170. #if defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON)
  171.  
  172. #define DosBufReset    DosResetBuffer
  173. #define DosChDir       DosSetCurrentDir
  174. #define DosChgFilePtr  DosSetFilePtr
  175. #define DosMkDir       DosCreateDir
  176. #define DosNewSize     DosSetFileSize
  177. #define DosQCurDir     DosQueryCurrentDir
  178. #define DosQCurDisk    DosQueryCurrentDisk
  179. #define DosQFileInfo   DosQueryFileInfo
  180. #define DosQFHandState DosQueryFHState
  181. #define DosQFSInfo     DosQueryFSInfo
  182. #define DosQHandType   DosQueryHType
  183. #define DosQPathInfo   DosQueryPathInfo
  184. #define DosSelectDisk  DosSetDefaultDisk
  185.  
  186. #define FILE_BEGIN    0
  187. #define FILE_CURRENT  1
  188. #define FILE_END      2
  189.  
  190. #define HDIR_SYSTEM   1
  191. #define HDIR_CREATE   (-1)
  192.  
  193. #define DCPY_EXISTING 1
  194. #define DCPY_APPEND   2
  195. #define DCPY_FAILEAS  4
  196.  
  197. #define FILE_NORMAL    0x0000
  198. #define FILE_READONLY  0x0001
  199. #define FILE_HIDDEN    0x0002
  200. #define FILE_SYSTEM    0x0004
  201. #define FILE_DIRECTORY 0x0010
  202. #define FILE_ARCHIVED  0x0020
  203.  
  204. #define FILE_EXISTED   1
  205. #define FILE_CREATED   2
  206. #define FILE_TRUNCATED 3
  207.  
  208. #define FILE_OPEN      0x0001
  209. #define FILE_TRUNCATE  0x0002
  210. #define FILE_CREATE    0x0010
  211.  
  212. #define OPEN_ACTION_FAIL_IF_EXISTS     0
  213. #define OPEN_ACTION_OPEN_IF_EXISTS     1
  214. #define OPEN_ACTION_REPLACE_IF_EXISTS  2
  215.  
  216. #define OPEN_ACTION_FAIL_IF_NEW     0x0000
  217. #define OPEN_ACTION_CREATE_IF_NEW   0x0010
  218.  
  219. #define OPEN_ACCESS_READONLY        0x0000
  220. #define OPEN_ACCESS_WRITEONLY       0x0001
  221. #define OPEN_ACCESS_READWRITE       0x0002
  222. #define OPEN_SHARE_DENYREADWRITE    0x0010
  223. #define OPEN_SHARE_DENYWRITE        0x0020
  224. #define OPEN_SHARE_DENYREAD         0x0030
  225. #define OPEN_SHARE_DENYNONE         0x0040
  226. #define OPEN_FLAGS_NOINHERIT        0x0080
  227. #define OPEN_FLAGS_NO_LOCALITY      0x0000
  228. #define OPEN_FLAGS_SEQUENTIAL       0x0100
  229. #define OPEN_FLAGS_RANDOM           0x0200
  230. #define OPEN_FLAGS_RANDOMSEQUENTIAL 0x0300
  231. #define OPEN_FLAGS_NO_CACHE         0x1000
  232. #define OPEN_FLAGS_FAIL_ON_ERROR    0x2000
  233. #define OPEN_FLAGS_WRITE_THROUGH    0x4000
  234. #define OPEN_FLAGS_DASD             0x8000
  235.  
  236. #define SEARCH_PATH          0
  237. #define SEARCH_CUR_DIRECTORY 1
  238. #define SEARCH_ENVIRONMENT   2
  239. #define SEARCH_IGNORENETERRS 4
  240.  
  241. #define FIL_STANDARD           1
  242. #define FIL_QUERYEASIZE        2
  243. #define FIL_QUERYEASFROMLIST   3
  244. #define FIL_QUERYFULLNAME      5
  245. #define FIL_STANDARDL         11
  246. #define FIL_QUERYEASIZEL      12
  247. #define FIL_QUERYEASFROMLISTL 13
  248.  
  249. #define FIO_LOCK      0
  250. #define FIO_UNLOCK    1
  251. #define FIO_SEEK      2
  252. #define FIO_READ      3
  253. #define FIO_WRITE     4
  254.  
  255. #define FIO_NOSHARE   0
  256. #define FIO_SHAREREAD 1
  257.  
  258. #define FSIL_ALLOC    1
  259. #define FSIL_VOLSER   2
  260.  
  261. #define FHT_DISKFILE  0
  262. #define FHT_CHRDEV    1
  263. #define FHT_PIPE      2
  264.  
  265. #define FHB_DSKREMOTE    0x8000
  266. #define FHB_CHRDEVREMOTE 0x8000
  267. #define FHB_PIPEREMOTE   0x8000
  268.  
  269. #define FS_ATTACH      0
  270. #define FS_DETACH      1
  271. #define FS_SPOOLATTACH 2
  272. #define FS_SPOOLDETACH 3
  273.  
  274. #define FSCTL_HANDLE   1
  275. #define FSCTL_PATHNAME 2
  276. #define FSCTL_FSDNAME  3
  277.  
  278. #define FSAIL_QUERYNAME 1
  279. #define FSAIL_DEVNUMBER 2
  280. #define FSAIL_DRVNUMBER 3
  281.  
  282. #define FSAT_CHARDEV    1
  283. #define FSAT_PSEUDODEV  2
  284. #define FSAT_LOCALDRV   3
  285. #define FSAT_REMOTEDRV  4
  286.  
  287. #define HANDTYPE_FILE       0x0000
  288. #define HANDTYPE_DEVICE     0x0001
  289. #define HANDTYPE_PIPE       0x0002
  290. #define HANDTYPE_PROTECTED  0x4000
  291. #define HANDTYPE_NETWORK    0x8000
  292.  
  293. #define EAT_APPTYP_PMAPI    0x00
  294. #define EAT_APPTYP_DOS      0x01
  295. #define EAT_APPTYP_PMW      0x02
  296. #define EAT_APPTYP_NOPMW    0x03
  297. #define EAT_APPTYP_EXETYPE  0x03
  298. #define EAT_APPTYP_RESERVED ~(EAT_APPTYP_EXETYPE)
  299.  
  300. typedef LHANDLE HDIR, *PHDIR;
  301. typedef ULONG FHLOCK, *PFHLOCK;
  302.  
  303. typedef struct _FILELOCK {
  304.     LONG lOffset;
  305.     LONG lRange;
  306. } FILELOCK, *PFILELOCK;
  307.  
  308. typedef struct _FDATE {
  309.     USHORT day:5;
  310.     USHORT month:4;
  311.     USHORT year:7;
  312. } FDATE, *PFDATE;
  313.  
  314. typedef struct _FTIME {
  315.     USHORT twosecs:5;
  316.     USHORT minutes:6;
  317.     USHORT hours:5;
  318. } FTIME, *PFTIME;
  319.  
  320. typedef struct _FILEFINDBUF {
  321.     FDATE  fdateCreation;
  322.     FTIME  ftimeCreation;
  323.     FDATE  fdateLastAccess;
  324.     FTIME  ftimeLastAccess;
  325.     FDATE  fdateLastWrite;
  326.     FTIME  ftimeLastWrite;
  327.     ULONG  cbFile;
  328.     ULONG  cbFileAlloc;
  329.     USHORT attrFile;
  330.     UCHAR  cchName;
  331.     CHAR   achName[CCHMAXPATHCOMP];
  332. } FILEFINDBUF, *PFILEFINDBUF;
  333.  
  334. typedef struct _FILEFINDBUF3 {
  335.     ULONG oNextEntryOffset;
  336.     FDATE fdateCreation;
  337.     FTIME ftimeCreation;
  338.     FDATE fdateLastAccess;
  339.     FTIME ftimeLastAccess;
  340.     FDATE fdateLastWrite;
  341.     FTIME ftimeLastWrite;
  342.     ULONG cbFile;
  343.     ULONG cbFileAlloc;
  344.     ULONG attrFile;
  345.     UCHAR cchName;
  346.     CHAR  achName[CCHMAXPATHCOMP];
  347. } FILEFINDBUF3, *PFILEFINDBUF3;
  348.  
  349. typedef struct _FILEFINDBUF4 {
  350.     ULONG oNextEntryOffset;
  351.     FDATE fdateCreation;
  352.     FTIME ftimeCreation;
  353.     FDATE fdateLastAccess;
  354.     FTIME ftimeLastAccess;
  355.     FDATE fdateLastWrite;
  356.     FTIME ftimeLastWrite;
  357.     ULONG cbFile;
  358.     ULONG cbFileAlloc;
  359.     ULONG attrFile;
  360.     ULONG cbList;
  361.     UCHAR cchName;
  362.     CHAR  achName[CCHMAXPATHCOMP];
  363. } FILEFINDBUF4, *PFILEFINDBUF4;
  364.  
  365. typedef struct _FILESTATUS {
  366.     FDATE  fdateCreation;
  367.     FTIME  ftimeCreation;
  368.     FDATE  fdateLastAccess;
  369.     FTIME  ftimeLastAccess;
  370.     FDATE  fdateLastWrite;
  371.     FTIME  ftimeLastWrite;
  372.     ULONG  cbFile;
  373.     ULONG  cbFileAlloc;
  374.     USHORT attrFile;
  375. } FILESTATUS, *PFILESTATUS;
  376.  
  377. typedef struct _FILESTATUS3 {
  378.     FDATE fdateCreation;
  379.     FTIME ftimeCreation;
  380.     FDATE fdateLastAccess;
  381.     FTIME ftimeLastAccess;
  382.     FDATE fdateLastWrite;
  383.     FTIME ftimeLastWrite;
  384.     ULONG cbFile;
  385.     ULONG cbFileAlloc;
  386.     ULONG attrFile;
  387. } FILESTATUS3, *PFILESTATUS3;
  388.  
  389. typedef struct _FILESTATUS4 {
  390.     FDATE fdateCreation;
  391.     FTIME ftimeCreation;
  392.     FDATE fdateLastAccess;
  393.     FTIME ftimeLastAccess;
  394.     FDATE fdateLastWrite;
  395.     FTIME ftimeLastWrite;
  396.     ULONG cbFile;
  397.     ULONG cbFileAlloc;
  398.     ULONG attrFile;
  399.     ULONG cbList;
  400. } FILESTATUS4, *PFILESTATUS4;
  401.  
  402. typedef struct _FSALLOCATE {
  403.     ULONG  idFileSystem;
  404.     ULONG  cSectorUnit;
  405.     ULONG  cUnit;
  406.     ULONG  cUnitAvail;
  407.     USHORT cbSector;
  408. } FSALLOCATE, *PFSALLOCATE;
  409.  
  410. typedef struct _GEA2 {
  411.     ULONG oNextEntryOffset;
  412.     BYTE  cbName;
  413.     CHAR  szName[1];
  414. } GEA2, *PGEA2;
  415.  
  416. typedef struct _GEA2LIST {
  417.     ULONG cbList;
  418.     GEA2  list[1];
  419. } GEA2LIST, *PGEA2LIST;
  420.  
  421. typedef struct _FEA2 {
  422.     ULONG  oNextEntryOffset;
  423.     BYTE   fEA;
  424.     BYTE   cbName;
  425.     USHORT cbValue;
  426.     CHAR   szName[1];
  427. } FEA2, *PFEA2;
  428.  
  429. typedef struct _FEA2LIST {
  430.     ULONG cbList;
  431.     FEA2  list[1];
  432. } FEA2LIST, *PFEA2LIST;
  433.  
  434. typedef struct _EAOP2 {
  435.     PGEA2LIST fpGEA2List;
  436.     PFEA2LIST fpFEA2List;
  437.     ULONG     oError;
  438. } EAOP2, *PEAOP2;
  439.  
  440. typedef struct _FSQBUFFER2 {
  441.     USHORT iType;
  442.     USHORT cbName;
  443.     USHORT cbFSDName;
  444.     USHORT cbFSAData;
  445.     UCHAR  szName[1];
  446.     UCHAR  szFSDName[1];
  447.     UCHAR  rgFSAData[1];
  448. } FSQBUFFER2, *PFSQBUFFER2;
  449.  
  450. APIRET APIENTRY DosCancelLockRequest(HFILE hFile, PFILELOCK pflLock);
  451. APIRET APIENTRY DosClose(HFILE hFile);
  452. APIRET APIENTRY DosCopy(PCSZ pszOld, PCSZ pszNew, ULONG option);
  453. APIRET APIENTRY DosCreateDir(PCSZ pszDirName, PEAOP2 peaop2);
  454. APIRET APIENTRY DosDelete(PCSZ pszFile);
  455. APIRET APIENTRY DosDeleteDir(PCSZ pszDir);
  456. APIRET APIENTRY DosDupHandle(HFILE hFile, PHFILE pHfile);
  457. APIRET APIENTRY DosEditName(ULONG metalevel, PCSZ pszSource, PCSZ pszEdit,
  458.                    PBYTE pszTarget, ULONG cbTarget);
  459. APIRET APIENTRY DosEnumAttribute(ULONG ulRefType, PVOID pvFile, ULONG ulEntry,
  460.                    PVOID pvBuf, ULONG cbBuf, PULONG pulCount, ULONG ulInfoLevel);
  461. APIRET APIENTRY DosFindClose(HDIR hDir);
  462. APIRET APIENTRY DosFindFirst(PCSZ pszFileSpec, PHDIR phdir, ULONG flAttribute,
  463.                    PVOID pfindbuf, ULONG cbBuf, PULONG pcFileNames, ULONG ulInfoLevel);
  464. APIRET APIENTRY DosFindNext(HDIR hDir, PVOID pfindbuf, ULONG cbfindbuf, PULONG pcFilenames);
  465. APIRET APIENTRY DosForceDelete(PCSZ pszFile);
  466. APIRET APIENTRY DosFSAttach(PCSZ pszDevice, PCSZ pszFilesystem, PVOID pData,
  467.                    ULONG cbData, ULONG flag);
  468. APIRET APIENTRY DosFSCtl(PVOID pData, ULONG cbData, PULONG pcbData, PVOID pParms,
  469.                    ULONG cbParms, PULONG pcbParms, ULONG function, PCSZ pszRoute,
  470.                    HFILE hFile, ULONG method);
  471. APIRET APIENTRY DosMove(PCSZ pszOld, PCSZ pszNew);
  472. APIRET APIENTRY DosOpen(PCSZ pszFileName, PHFILE pHf, PULONG pulAction, ULONG cbFile,
  473.                    ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2);
  474. APIRET APIENTRY DosProtectClose(HFILE hFile, FHLOCK fhFileHandleLockID);
  475. APIRET APIENTRY DosProtectEnumAttribute(ULONG ulRefType, PVOID pvFile, ULONG ulEntry, PVOID pvBuf,
  476.                    ULONG cbBuf, PULONG pulCount, ULONG ulInfoLevel, FHLOCK fhFileHandleLockID);
  477. APIRET APIENTRY DosProtectOpen(PCSZ pszFileName, PHFILE phf, PULONG pulAction, ULONG cbFile,
  478.                    ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode,
  479.                    PEAOP2 peaop2, PFHLOCK pfhFileHandleLockID);
  480. APIRET APIENTRY DosProtectQueryFHState(HFILE hFile, PULONG pMode, FHLOCK fhFileHandleLockID);
  481. APIRET APIENTRY DosProtectQueryFileInfo(HFILE hf, ULONG ulInfoLevel,
  482.                    PVOID pInfo, ULONG cbInfoBuf, FHLOCK fhFileHandleLockID);
  483. APIRET APIENTRY DosProtectRead(HFILE hFile, PVOID pBuffer, ULONG cbRead,
  484.                    PULONG pcbActual, FHLOCK fhFileHandleLockID);
  485. APIRET APIENTRY DosProtectSetFHState(HFILE hFile, ULONG mode, FHLOCK fhFileHandleLockID);
  486. APIRET APIENTRY DosProtectSetFileInfo(HFILE hf, ULONG ulInfoLevel, PVOID pInfoBuf,
  487.                    ULONG cbInfoBuf, FHLOCK fhFileHandleLockID);
  488. APIRET APIENTRY DosProtectSetFileLocks(HFILE hFile, PFILELOCK pflUnlock, PFILELOCK pflLock,
  489.                    ULONG timeout, ULONG flags, FHLOCK fhFileHandleLockID);
  490. APIRET APIENTRY DosProtectSetFilePtr(HFILE hFile, LONG ib, ULONG method,
  491.                    PULONG ibActual, FHLOCK fhFileHandleLockID);
  492. APIRET APIENTRY DosProtectSetFileSize(HFILE hFile, ULONG cbSize, FHLOCK fhFileHandleLockID);
  493. APIRET APIENTRY DosProtectWrite(HFILE hFile, ULONG pBuffer, ULONG cbWrite,
  494.                    PULONG pcbActual, FHLOCK fhFileHandleLockID);
  495. APIRET APIENTRY DosQueryCurrentDir(ULONG disknum, PBYTE pBuf, PULONG pcbBuf);
  496. APIRET APIENTRY DosQueryCurrentDisk(PULONG pdisknum, PULONG plogical);
  497. APIRET APIENTRY DosQueryFHState(HFILE hFile, PULONG pMode);
  498. APIRET APIENTRY DosQueryFileInfo(HFILE hf, ULONG ulInfoLevel, PVOID pInfo, ULONG cbInfoBuf);
  499. APIRET APIENTRY DosQueryFSAttach(PCSZ pszDeviceName, ULONG ulOrdinal, ULONG ulFSAInfoLevel,
  500.                    PFSQBUFFER2 pfsqb, PULONG pcbBuffLength);
  501. APIRET APIENTRY DosQueryFSInfo(ULONG disknum, ULONG  infolevel, PVOID pBuf, ULONG cbBuf);
  502. APIRET APIENTRY DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr);
  503. APIRET APIENTRY DosQueryPathInfo(PCSZ pszPathName, ULONG ulInfoLevel,
  504.                    PVOID pInfoBuf, ULONG cbInfoBuf);
  505. APIRET APIENTRY DosQueryVerify(BOOL32 pBool);
  506. APIRET APIENTRY DosRead(HFILE hFile, PVOID pBuffer, ULONG cbRead, PULONG pcbActual);
  507. APIRET APIENTRY DosResetBuffer(HFILE hFile);
  508. APIRET APIENTRY DosSetCurrentDir(PCSZ pszDir);
  509. APIRET APIENTRY DosSetDefaultDisk(ULONG disknum);
  510. APIRET APIENTRY DosSetFHState(HFILE hFile, ULONG mode);
  511. APIRET APIENTRY DosSetFileInfo(HFILE hf, ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf);
  512. APIRET APIENTRY DosSetFileLocks(HFILE hFile, PFILELOCK pflUnlock, PFILELOCK pflLock,
  513.                    ULONG timeout, ULONG flags);
  514. APIRET APIENTRY DosSetFilePtr(HFILE hFile, LONG ib, ULONG method, PULONG ibActual);
  515. APIRET APIENTRY DosSetFileSize(HFILE hFile, ULONG cbSize);
  516. APIRET APIENTRY DosSetFSInfo(ULONG disknum, ULONG infolevel, ULONG pBuf, PVOID cbBuf);
  517. APIRET APIENTRY DosSetMaxFH(ULONG cFH);
  518. APIRET APIENTRY DosSetPathInfo(PCSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuf,
  519.                    ULONG cbInfoBuf, ULONG flOptions);
  520. APIRET APIENTRY DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH);
  521. APIRET APIENTRY DosSetVerify(BOOL32 fVerifySetting);
  522. APIRET APIENTRY DosShutdown(ULONG ulShutDownValue);
  523. APIRET APIENTRY DosWrite(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual);
  524.  
  525. #endif
  526.  
  527. #if defined(INCL_DOSMEMMGR) || !defined(INCL_NOCOMMON)
  528.  
  529. #define PAG_READ      0x00000001
  530. #define PAG_WRITE     0x00000002
  531. #define PAG_EXECUTE   0x00000004
  532. #define PAG_GUARD     0x00000008
  533. #define PAG_COMMIT    0x00000010
  534. #define PAG_DECOMMIT  0x00000020
  535. #define PAG_DEFAULT   0x00000400
  536. #define PAG_SHARED    0x00002000
  537. #define PAG_FREE      0x00004000
  538. #define PAG_BASE      0x00010000
  539.  
  540. #define OBJ_TILE      0x00000040
  541. #define OBJ_PROTECTED 0x00000080
  542. #define OBJ_GETTABLE  0x00000100
  543. #define OBJ_GIVEABLE  0x00000200
  544. #define OBJ_ANY       0x00000400
  545.  
  546. #define DOSSUB_INIT       1
  547. #define DOSSUB_GROW       2
  548. #define DOSSUB_SPARSE_OBJ 4
  549. #define DOSSUB_SERIALIZE  8
  550.  
  551. #define PAG_NPOUT       0x00000000
  552. #define PAG_PRESENT     0x00000001
  553. #define PAG_NPIN        0x00000002
  554. #define PAG_PRESMASK    0x00000003
  555. #define PAG_INVALID     0x00000000
  556. #define PAG_RESIDENT    0x00000010
  557. #define PAG_SWAPPABLE   0x00000020
  558. #define PAG_DISCARDABLE 0x00000030
  559. #define PAG_TYPEMASK    0x00000030
  560.  
  561. #define fPERM         (PAG_EXECUTE | PAG_READ | PAG_WRITE)
  562. #define fSHARE        (OBJ_GETTABLE | OBJ_GIVEABLE)
  563. #define fALLOC        (OBJ_TILE | PAG_COMMIT | fPERM)
  564. #define fALLOCSHR     (OBJ_TILE | PAG_COMMIT | fSHARE | fPERM)
  565.  
  566. APIRET APIENTRY DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag);
  567. APIRET APIENTRY DosAllocSharedMem(PPVOID ppb, PCSZ pszName, ULONG cb, ULONG flag);
  568. APIRET APIENTRY DosFreeMem(PVOID pb);
  569. APIRET APIENTRY DosGetNamedSharedMem(PPVOID ppb, PCSZ pszName, ULONG flag);
  570. APIRET APIENTRY DosGetSharedMem(PVOID pb, ULONG flag);
  571. APIRET APIENTRY DosGiveSharedMem(PVOID pb, PID pid, ULONG flag);
  572. APIRET APIENTRY DosQueryMem(PVOID pb, PULONG pcb, PULONG pFlag);
  573. APIRET APIENTRY DosSetMem(PVOID pb, ULONG cb, ULONG flag);
  574. APIRET APIENTRY DosSubAllocMem(PVOID pbBase, PPVOID ppb, ULONG cb);
  575. APIRET APIENTRY DosSubFreeMem(PVOID pbBase, PVOID pb, ULONG cb);
  576. APIRET APIENTRY DosSubSetMem(PVOID pbBase, ULONG flag, ULONG cb);
  577. APIRET APIENTRY DosSubUnsetMem(PVOID pbBase);
  578.  
  579. #endif
  580.  
  581. #if defined(INCL_DOSMODULEMGR)
  582.  
  583. #define PT_16BIT 0
  584. #define PT_32BIT 1
  585.  
  586. #define HW_CFG_MCA             0x00000001
  587. #define HW_CFG_EISA            0x00000002
  588. #define HW_CFG_ABIOS_SUPPORTED 0x00000004
  589. #define HW_CFG_ABIOS_PRESENT   0x00000008
  590. #define HW_CFG_PCI             0x00000010
  591. #define HW_CFG_IBM_ABIOS       0x00000000
  592. #define HW_CFG_OEM_ABIOS       0x00000020
  593. #define HW_CFG_PENTIUM_CPU     0x00000040
  594.  
  595. APIRET APIENTRY DosFreeModule(HMODULE hmod);
  596. APIRET APIENTRY DosLoadModule(PSZ pszName, ULONG cbName, PCSZ pszModname, PHMODULE phmod);
  597. APIRET APIENTRY DosQueryABIOSSupport(ULONG reserved);
  598. APIRET APIENTRY DosQueryModFromEIP(HMODULE *phMod, ULONG *pObjNum, ULONG BuffLen,
  599.                    PCHAR pBuff, ULONG *pOffset, ULONG Address);
  600. APIRET APIENTRY DosQueryModuleHandle(PCSZ pszModname, PHMODULE phmod);
  601. APIRET APIENTRY DosQueryModuleName(HMODULE hmod, ULONG cbName, PCHAR pch);
  602. APIRET APIENTRY DosQueryProcAddr(HMODULE hmod, ULONG ordinal, PCSZ pszName, PFN *ppfn);
  603. APIRET APIENTRY DosQueryProcType(HMODULE hmod, ULONG ordinal, PCSZ pszName, PULONG pulproctype);
  604. APIRET APIENTRY DosReplaceModule(PCSZ pszOldModule, PCSZ pszNewModule, PCSZ pszBackupModule);
  605.  
  606. #endif
  607.  
  608. #if defined(INCL_DOSNMPIPES)
  609.  
  610. #define NP_STATE_DISCONNECTED 1
  611. #define NP_STATE_LISTENING    2
  612. #define NP_STATE_CONNECTED    3
  613. #define NP_STATE_CLOSING      4
  614.  
  615. #define NP_ACCESS_INBOUND      0x0000
  616. #define NP_ACCESS_OUTBOUND     0x0001
  617. #define NP_ACCESS_DUPLEX       0x0002
  618. #define NP_INHERIT             0x0000
  619. #define NP_NOINHERIT           0x0080
  620. #define NP_WRITEBEHIND         0x0000
  621. #define NP_NOWRITEBEHIND       0x4000
  622.  
  623. #define NP_READMODE_BYTE       0x0000
  624. #define NP_READMODE_MESSAGE    0x0100
  625. #define NP_TYPE_BYTE           0x0000
  626. #define NP_TYPE_MESSAGE        0x0400
  627. #define NP_END_CLIENT          0x0000
  628. #define NP_END_SERVER          0x4000
  629. #define NP_WAIT                0x0000
  630. #define NP_NOWAIT              0x8000
  631. #define NP_UNLIMITED_INSTANCES 0x00FF
  632.  
  633. #define NP_DEFAULT_WAIT    0
  634. #define NP_INDEFINITE_WAIT (-1)
  635.  
  636. typedef LHANDLE HPIPE, *PHPIPE;
  637.  
  638. typedef struct _AVAILDATA {
  639.     USHORT cbpipe;
  640.     USHORT cbmessage;
  641. } AVAILDATA, *PAVAILDATA;
  642.  
  643. typedef struct _PIPEINFO {
  644.    USHORT cbOut;
  645.    USHORT cbIn;
  646.    BYTE   cbMaxInst;
  647.    BYTE   cbCurInst;
  648.    BYTE   cbName;
  649.    CHAR   szName[1];
  650. } PIPEINFO, *PPIPEINFO;
  651.  
  652. typedef struct _PIPESEMSTATE {
  653.    BYTE   fStatus;
  654.    BYTE   fFlag;
  655.    USHORT usKey;
  656.    USHORT usAvail;
  657. } PIPESEMSTATE, *PPIPESEMSTATE;
  658.  
  659. APIRET APIENTRY DosCallNPipe(PCSZ pszName, PVOID pInbuf, ULONG cbIn, PVOID pOutbuf,
  660.                    ULONG cbOut, PULONG pcbActual, ULONG msec);
  661. APIRET APIENTRY DosConnectNPipe(HPIPE hpipe);
  662. APIRET APIENTRY DosCreateNPipe(PCSZ pszName, PHPIPE pHpipe, ULONG openmode,
  663.                    ULONG pipemode, ULONG cbOutbuf, ULONG cbInbuf, ULONG msec);
  664. APIRET APIENTRY DosDisConnectNPipe(HPIPE hpipe);
  665. APIRET APIENTRY DosPeekNPipe(HPIPE hpipe, PVOID pBuf, ULONG cbBuf, PULONG pcbActual,
  666.                    PAVAILDATA pAvail, PULONG pState);
  667. APIRET APIENTRY DosQueryNPHState(HPIPE hpipe, PULONG pState);
  668. APIRET APIENTRY DosQueryNPipeInfo(HPIPE hpipe, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
  669. APIRET APIENTRY DosQueryNPipeSemState(HSEM hsem, PPIPESEMSTATE pnpss, ULONG cbBuf);
  670. APIRET APIENTRY DosSetNPHState(HPIPE hpipe, ULONG state);
  671. APIRET APIENTRY DosSetNPipeSem(HPIPE hpipe, HSEM hsem, ULONG key);
  672. APIRET APIENTRY DosTransactNPipe(HPIPE hpipe, PVOID pOutbuf, ULONG cbOut,
  673.                    PVOID pInbuf, ULONG cbIn, PULONG pcbRead);
  674. APIRET APIENTRY DosWaitNPipe(PCSZ pszName, ULONG msec);
  675.  
  676. #endif
  677.  
  678. #if defined(INCL_DOSQUEUES)
  679.  
  680. #define QUE_FIFO              0
  681. #define QUE_LIFO              1
  682. #define QUE_PRIORITY          2
  683. #define QUE_NOCONVERT_ADDRESS 0
  684. #define QUE_CONVERT_ADDRESS   4
  685.  
  686. typedef LHANDLE HQUEUE, *PHQUEUE;
  687.  
  688. typedef struct _REQUESTDATA {
  689.     PID   pid;
  690.     ULONG ulData;
  691. } REQUESTDATA, *PREQUESTDATA;
  692.  
  693. APIRET APIENTRY DosCloseQueue(HQUEUE hq);
  694. APIRET APIENTRY DosCreatePipe(PHFILE phfRead, PHFILE phfWrite, ULONG cb);
  695. APIRET APIENTRY DosCreateQueue(PHQUEUE phq, ULONG priority, PCSZ pszName);
  696. APIRET APIENTRY DosOpenQueue(PPID ppid, PHQUEUE phq, PCSZ pszName);
  697. APIRET APIENTRY DosPeekQueue(HQUEUE hq, PREQUESTDATA pRequest, PULONG pcbData,
  698.                    PPVOID ppbuf, PULONG element, BOOL32 nowait, PBYTE ppriority, HEV hsem);
  699. APIRET APIENTRY DosPurgeQueue(HQUEUE hq);
  700. APIRET APIENTRY DosQueryQueue(HQUEUE hq, PULONG pcbEntries);
  701. APIRET APIENTRY DosReadQueue(HQUEUE hq, PREQUESTDATA pRequest, PULONG pcbData,
  702.                    PPVOID ppbuf, ULONG element, BOOL32 wait, PBYTE ppriority, HEV hsem);
  703. APIRET APIENTRY DosWriteQueue(HQUEUE hq, ULONG request, ULONG cbData, PVOID
  704.                    pbData, ULONG priority);
  705.  
  706. #endif
  707.  
  708. #if defined(INCL_DOSSEMAPHORES)
  709.  
  710. #define DC_SEM_SHARED   1
  711. #define DCMW_WAIT_ANY   2
  712. #define DCMW_WAIT_ALL   4
  713.  
  714. #define DCE_POSTONE     0x0800
  715. #define DCE_AUTORESET   0x1000
  716.  
  717. #define SEM_IMMEDIATE_RETURN 0
  718. #define SEM_INDEFINITE_WAIT  (-1)
  719.  
  720. typedef struct _SEMRECORD {
  721.     HSEM  hsemCur;
  722.     ULONG ulUser;
  723. } SEMRECORD, *PSEMRECORD;
  724.  
  725. APIRET APIENTRY DosAddMuxWaitSem(HMUX hmux, PSEMRECORD pSemRec);
  726. APIRET APIENTRY DosCloseEventSem(HEV hev);
  727. APIRET APIENTRY DosCloseMutexSem(HMTX hmtx);
  728. APIRET APIENTRY DosCloseMuxWaitSem(HMUX hmux);
  729. APIRET APIENTRY DosCreateEventSem(PCSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState);
  730. APIRET APIENTRY DosCreateMutexSem(PCSZ pszName, PHMTX phmtx, ULONG flAttr, BOOL32 fState);
  731. APIRET APIENTRY DosCreateMuxWaitSem(PCSZ pszName, PHMUX phmux, ULONG cSemRec,
  732.                    PSEMRECORD pSemRec, ULONG flAttr);
  733. APIRET APIENTRY DosDeleteMuxWaitSem(HMUX hmux, HSEM hSem);
  734. APIRET APIENTRY DosOpenEventSem(PCSZ pszName, PHEV phev);
  735. APIRET APIENTRY DosOpenMutexSem(PCSZ pszName, PHMTX phmtx);
  736. APIRET APIENTRY DosOpenMuxWaitSem(PCSZ pszName, PHMUX phmux);
  737. APIRET APIENTRY DosPostEventSem(HEV hev);
  738. APIRET APIENTRY DosQueryEventSem(HEV hev, PULONG pulPostCt);
  739. APIRET APIENTRY DosQueryMutexSem(HMTX hmtx, PPID ppid, PTID ptid, PULONG pulCount);
  740. APIRET APIENTRY DosQueryMuxWaitSem(HMUX hmux, PULONG pcSemRec, PSEMRECORD pSemRec, PULONG pflAttr);
  741. APIRET APIENTRY DosReleaseMutexSem(HMTX hmtx);
  742. APIRET APIENTRY DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
  743. APIRET APIENTRY DosResetEventSem(HEV hev, PULONG pulPostCt);
  744. APIRET APIENTRY DosWaitEventSem(HEV hev, ULONG ulTimeout);
  745. APIRET APIENTRY DosWaitMuxWaitSem(HMUX hmux, ULONG ulTimeout, PULONG pulUser);
  746.  
  747. #endif
  748.  
  749. #if defined(INCL_DOSMONITORS)
  750.  
  751. #define DosMonClose DOS16MONCLOSE
  752. #define DosMonOpen  DOS16MONOPEN
  753. #define DosMonRead  DOS16MONREAD
  754. #define DosMonReg   DOS16MONREG
  755. #define DosMonWrite DOS16MONWRITE
  756.  
  757. typedef SHANDLE  HMONITOR;
  758. typedef HMONITOR *PHMONITOR;
  759.  
  760. USHORT APIENTRY16 DosMonClose(HMONITOR Handle);
  761. USHORT APIENTRY16 DosMonOpen(PSZ Devname, PHMONITOR Handle);
  762. USHORT APIENTRY16 DosMonRead(PBYTE BufferI, UCHAR WaitFlag, PBYTE DataBuffer, PUSHORT Bytecnt);
  763. USHORT APIENTRY16 DosMonReg(HMONITOR Handle, PBYTE BufferI, PBYTE BufferO,
  764.                      USHORT Posflag, USHORT Index);
  765. USHORT APIENTRY16 DosMonWrite(PBYTE BufferO, PBYTE DataBuffer, USHORT Bytecnt);
  766.  
  767. #endif
  768.  
  769. #if defined(INCL_DOSNLS)
  770.  
  771. #define DosGetCp       DosQueryCp
  772.  
  773. typedef struct _COUNTRYCODE {
  774.     ULONG  country;
  775.     ULONG  codepage;
  776. } COUNTRYCODE, *PCOUNTRYCODE;
  777.  
  778. typedef struct _COUNTRYINFO {
  779.     ULONG  country;
  780.     ULONG  codepage;
  781.     ULONG  fsDateFmt;
  782.     CHAR   szCurrency[5];
  783.     CHAR   szThousandsSeparator[2];
  784.     CHAR   szDecimal[2];
  785.     CHAR   szDateSeparator[2];
  786.     CHAR   szTimeSeparator[2];
  787.     UCHAR  fsCurrencyFmt;
  788.     UCHAR  cDecimalPlace;
  789.     UCHAR  fsTimeFmt;
  790.     USHORT abReserved1[2];
  791.     CHAR   szDataSeparator[2];
  792.     USHORT abReserved2[5];
  793. } COUNTRYINFO, *PCOUNTRYINFO;
  794.  
  795. APIRET APIENTRY DosMapCase(ULONG cb, PCOUNTRYCODE pcc, PCHAR pch);
  796. APIRET APIENTRY DosQueryCollate(ULONG cb, PCOUNTRYCODE pcc, PCHAR pch, PULONG pcch);
  797. APIRET APIENTRY DosQueryCp(ULONG cb, PULONG arCP, PULONG pcCP);
  798. APIRET APIENTRY DosQueryCtryInfo(ULONG cb, PCOUNTRYCODE pcc, PCOUNTRYINFO pci, PULONG pcbActual);
  799. APIRET APIENTRY DosQueryDBCSEnv(ULONG cb, PCOUNTRYCODE pcc, PCHAR pBuf);
  800. APIRET APIENTRY DosSetProcessCp(ULONG cp);
  801.  
  802. #endif
  803.  
  804. #if defined(INCL_DOSEXCEPTIONS)
  805.  
  806. #define SIG_UNSETFOCUS 0
  807. #define SIG_SETFOCUS   1
  808.  
  809. #include <bsexcpt.h>
  810.  
  811. APIRET APIENTRY DosAcknowledgeSignalException(ULONG ulSignalNum);
  812. APIRET APIENTRY DosEnterMustComplete(PULONG pulNesting);
  813. APIRET APIENTRY DosExitMustComplete(PULONG pulNesting);
  814. APIRET APIENTRY DosQueryThreadContext(TID tid, ULONG level, PCONTEXTRECORD pcxt);
  815. APIRET APIENTRY DosRaiseException(PEXCEPTIONREPORTRECORD pexcept);
  816. APIRET APIENTRY DosSendSignalException(PID pid, ULONG exception);
  817. APIRET APIENTRY DosSetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
  818. APIRET APIENTRY DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes);
  819. APIRET APIENTRY DosUnsetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
  820. APIRET APIENTRY DosUnwindException(PEXCEPTIONREGISTRATIONRECORD phandler,
  821.                    PVOID pTargetIP, PEXCEPTIONREPORTRECORD pERepRec);
  822.  
  823. #endif
  824.  
  825. #if defined(INCL_DOSRESOURCES)
  826.  
  827. APIRET APIENTRY DosFreeResource(PVOID pb);
  828. APIRET APIENTRY DosGetResource(HMODULE hmod, ULONG idType, ULONG idName, PPVOID ppb);
  829. APIRET APIENTRY DosQueryResourceSize(HMODULE hmod, ULONG idt, ULONG idn, PULONG pulsize);
  830.  
  831. #endif
  832.  
  833. #if defined(INCL_DOSDATETIME)
  834.  
  835. typedef LHANDLE HTIMER;
  836. typedef HTIMER  *PHTIMER;
  837.  
  838. typedef struct _DATETIME {
  839.     UCHAR   hours;
  840.     UCHAR   minutes;
  841.     UCHAR   seconds;
  842.     UCHAR   hundredths;
  843.     UCHAR   day;
  844.     UCHAR   month;
  845.     USHORT  year;
  846.     SHORT   timezone;
  847.     UCHAR   weekday;
  848. } DATETIME, *PDATETIME;
  849.  
  850. APIRET APIENTRY DosAsyncTimer(ULONG msec, HSEM hsem, PHTIMER phtimer);
  851. APIRET APIENTRY DosGetDateTime(PDATETIME pdt);
  852. APIRET APIENTRY DosSetDateTime(PDATETIME pdt);
  853. APIRET APIENTRY DosStartTimer(ULONG msec, HSEM hsem, PHTIMER phtimer);
  854. APIRET APIENTRY DosStopTimer(HTIMER htimer);
  855.  
  856. #endif
  857.  
  858. #if defined(INCL_DOSMISC)
  859.  
  860. #define DDP_DISABLEPROCDUMP 0
  861. #define DDP_ENABLEPROCDUMP  1
  862. #define DDP_PERFORMPROCDUMP 2
  863.  
  864. #define FERR_DISABLEHARDERR   0
  865. #define FERR_ENABLEHARDERR    1
  866. #define FERR_ENABLEEXCEPTION  0
  867. #define FERR_DISABLEEXCEPTION 2
  868.  
  869. #define QSV_MAX_PATH_LENGTH        1
  870. #define QSV_MAX_TEXT_SESSIONS      2
  871. #define QSV_MAX_PM_SESSIONS        3
  872. #define QSV_MAX_VDM_SESSIONS       4
  873. #define QSV_BOOT_DRIVE             5
  874. #define QSV_DYN_PRI_VARIATION      6
  875. #define QSV_MAX_WAIT               7
  876. #define QSV_MIN_SLICE              8
  877. #define QSV_MAX_SLICE              9
  878. #define QSV_PAGE_SIZE             10
  879. #define QSV_VERSION_MAJOR         11
  880. #define QSV_VERSION_MINOR         12
  881. #define QSV_VERSION_REVISION      13
  882. #define QSV_MS_COUNT              14
  883. #define QSV_TIME_LOW              15
  884. #define QSV_TIME_HIGH             16
  885. #define QSV_TOTPHYSMEM            17
  886. #define QSV_TOTRESMEM             18
  887. #define QSV_TOTAVAILMEM           19
  888. #define QSV_MAXPRMEM              20
  889. #define QSV_MAXSHMEM              21
  890. #define QSV_TIMER_INTERVAL        22
  891. #define QSV_MAX_COMP_LENGTH       23
  892. #define QSV_FOREGROUND_FS_SESSION 24
  893. #define QSV_FOREGROUND_PROCESS    25
  894. #define QSV_NUMPROCESSORS         26
  895. #define QSV_MAXHPRMEM             27
  896. #define QSV_MAXHSHMEM             28
  897. #define QSV_MAXPROCESSES          29
  898. #define QSV_VIRTUALADDRESSLIMIT   30
  899. #define QSV_INT10ENABLED          31
  900. #define QSV_MAX                   QSV_INT10ENABLED
  901.  
  902. #define DSP_IMPLIEDCUR   1
  903. #define DSP_PATHREF      2
  904. #define DSP_IGNORENETERR 4
  905.  
  906. #define SPU_DISABLESUPPRESSION 0
  907. #define SPU_ENABLESUPPRESSION  1
  908. #define SPU_NOLOGCHANGE        2
  909.  
  910. #define BEGIN_LIBPATH 1
  911. #define END_LIBPATH   2
  912. #define LIBPATHSTRICT 3
  913.  
  914. APIRET APIENTRY DosErrClass(ULONG code, PULONG pClass, PULONG pAction, PULONG pLocus);
  915. APIRET APIENTRY DosError(ULONG error);
  916. APIRET APIENTRY DosGetMessage(PCHAR *pTable, ULONG cTable, PCHAR pBuf,
  917.                    ULONG cbBuf, ULONG msgnumber, PCSZ pszFile, PULONG pcbMsg);
  918. APIRET APIENTRY DosInsertMessage(PCHAR *pTable, ULONG cTable, PCSZ pszMsg,
  919.                    ULONG cbMsg, PCHAR pBuf, ULONG cbBuf, PULONG pcbMsg);
  920. APIRET APIENTRY DosPutMessage(HFILE hfile, ULONG cbMsg, PCHAR pBuf);
  921. APIRET APIENTRY DosQueryExtLIBPATH(PSZ pszExtLIBPATH, ULONG flags);
  922. APIRET APIENTRY DosQueryMessageCP(PCHAR pb, ULONG cb, PCSZ pszFilename, PULONG cbBuf);
  923. APIRET APIENTRY DosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
  924. APIRET APIENTRY DosScanEnv(PCSZ pszName, PSZ *ppszValue);
  925. APIRET APIENTRY DosSearchPath(ULONG flag, PCSZ pszPathOrName, PCSZ pszFilename,
  926.                    PBYTE pBuf, ULONG cbBuf);
  927. APIRET APIENTRY DosSetExtLIBPATH(PCSZ pszExtLIBPATH, ULONG flags);
  928. APIRET APIENTRY DosSuppressPopUps(ULONG flag, CHAR drive);
  929.  
  930. #endif
  931.  
  932. #if defined(INCL_DOSSESMGR) || defined(INCL_DOSFILEMGR)
  933.  
  934. #define FAPPTYP_NOTSPEC         0x0000
  935. #define FAPPTYP_NOTWINDOWCOMPAT 0x0001
  936. #define FAPPTYP_WINDOWCOMPAT    0x0002
  937. #define FAPPTYP_WINDOWAPI       0x0003
  938. #define FAPPTYP_BOUND           0x0008
  939. #define FAPPTYP_DLL             0x0010
  940. #define FAPPTYP_DOS             0x0020
  941. #define FAPPTYP_PHYSDRV         0x0040
  942. #define FAPPTYP_VIRTDRV         0x0080
  943. #define FAPPTYP_PROTDLL         0x0100
  944. #define FAPPTYP_WINDOWSREAL     0x0200
  945. #define FAPPTYP_WINDOWSPROT     0x0400
  946. #define FAPPTYP_WINDOWSPROT31   0x1000
  947. #define FAPPTYP_32BIT           0x4000
  948. #define FAPPTYP_EXETYPE         0x0003
  949.  
  950. #endif
  951.  
  952. #if defined(INCL_DOSSESMGR)
  953.  
  954. #define SSF_RELATED_INDEPENDENT 0
  955. #define SSF_RELATED_CHILD       1
  956.  
  957. #define SSF_FGBG_FORE          0
  958. #define SSF_FGBG_BACK          1
  959.  
  960. #define SSF_TRACEOPT_NONE      0
  961. #define SSF_TRACEOPT_TRACE     1
  962. #define SSF_TRACEOPT_TRACEALL  2
  963.  
  964. #define SSF_INHERTOPT_SHELL    0
  965. #define SSF_INHERTOPT_PARENT   1
  966.  
  967. #define SSF_TYPE_DEFAULT       0
  968. #define SSF_TYPE_FULLSCREEN    1
  969. #define SSF_TYPE_WINDOWABLEVIO 2
  970. #define SSF_TYPE_PM            3
  971. #define SSF_TYPE_VDM           4
  972. #define SSF_TYPE_GROUP         5
  973. #define SSF_TYPE_DLL           6
  974. #define SSF_TYPE_WINDOWEDVDM   7
  975. #define SSF_TYPE_PDD           8
  976. #define SSF_TYPE_VDD           9
  977.  
  978. #define SSF_CONTROL_VISIBLE     0x0000
  979. #define SSF_CONTROL_INVISIBLE   0x0001
  980. #define SSF_CONTROL_MAXIMIZE    0x0002
  981. #define SSF_CONTROL_MINIMIZE    0x0004
  982. #define SSF_CONTROL_NOAUTOCLOSE 0x0008
  983. #define SSF_CONTROL_SETPOS      0x8000
  984.  
  985. #define SET_SESSION_UNCHANGED      0
  986. #define SET_SESSION_SELECTABLE     1
  987. #define SET_SESSION_NON_SELECTABLE 2
  988. #define SET_SESSION_BOND           1
  989. #define SET_SESSION_NO_BOND        2
  990.  
  991. #define STOP_SESSION_SPECIFIED     0
  992. #define STOP_SESSION_ALL           1
  993.  
  994. typedef struct _STATUSDATA {
  995.     USHORT Length;
  996.     USHORT SelectInd;
  997.     USHORT BondInd;
  998. } STATUSDATA, *PSTATUSDATA;
  999.  
  1000. typedef struct _STARTDATA {
  1001.     USHORT Length;
  1002.     USHORT Related;
  1003.     USHORT FgBg;
  1004.     USHORT TraceOpt;
  1005.     PSZ    PgmTitle;
  1006.     PSZ    PgmName;
  1007.     PBYTE  PgmInputs;
  1008.     PBYTE  TermQ;
  1009.     PBYTE  Environment;
  1010.     USHORT InheritOpt;
  1011.     USHORT SessionType;
  1012.     PSZ    IconFile;
  1013.     ULONG  PgmHandle;
  1014.     USHORT PgmControl;
  1015.     USHORT InitXPos;
  1016.     USHORT InitYPos;
  1017.     USHORT InitXSize;
  1018.     USHORT InitYSize;
  1019.     USHORT Reserved;
  1020.     PSZ    ObjectBuffer;
  1021.     ULONG  ObjectBuffLen;
  1022. } STARTDATA, *PSTARTDATA;
  1023.  
  1024. APIRET APIENTRY DosQueryAppType(PCSZ pszName, PULONG pFlags);
  1025. APIRET APIENTRY DosSelectSession(ULONG idSession);
  1026. APIRET APIENTRY DosSetSession(ULONG idSession, PSTATUSDATA psd);
  1027. APIRET APIENTRY DosStartSession(PSTARTDATA psd, PULONG pidSession, PPID ppid);
  1028. APIRET APIENTRY DosStopSession(ULONG scope, ULONG idSession);
  1029.  
  1030. #endif
  1031.  
  1032. #if defined(INCL_DOSDEVICES)
  1033.  
  1034. #define DEVINFO_PRINTER     0
  1035. #define DEVINFO_RS232       1
  1036. #define DEVINFO_FLOPPY      2
  1037. #define DEVINFO_COPROCESSOR 3
  1038. #define DEVINFO_SUBMODEL    4
  1039. #define DEVINFO_MODEL       5
  1040. #define DEVINFO_ADAPTER     6
  1041.  
  1042. #define INFO_COUNT_PARTITIONABLE_DISKS 1
  1043. #define INFO_GETIOCTLHANDLE            2
  1044. #define INFO_FREEIOCTLHANDLE           3
  1045.  
  1046. APIRET APIENTRY DosDevConfig(PVOID pdevinfo, ULONG item);
  1047. APIRET APIENTRY DosDevIOCtl(HFILE hDevice, ULONG category, ULONG function,
  1048.                    PVOID pParams, ULONG cbParmLenMax, PULONG pcbParmLen,
  1049.                    PVOID pData, ULONG cbDataLenMax, PULONG pcbDataLen);
  1050. APIRET APIENTRY DosPhysicalDisk(ULONG function, PVOID pBuf, ULONG cbBuf,
  1051.                    PVOID pParams, ULONG cbParams);
  1052.  
  1053. #endif
  1054.  
  1055. #if defined(INCL_DOSMVDM)
  1056.  
  1057. typedef LHANDLE HVDD, *PHVDD;
  1058.  
  1059. APIRET APIENTRY DosCloseVDD(HVDD hvdd);
  1060. APIRET APIENTRY DosOpenVDD(PCSZ pszVDD, PHVDD phvdd);
  1061. APIRET APIENTRY DosRequestVDD(HVDD hvdd, SGID sgid, ULONG cmd, ULONG cbInput,
  1062.                    PVOID pInput, ULONG cbOutput, PVOID pOutput);
  1063.  
  1064. #endif
  1065.  
  1066. #if defined(INCL_DOSPROFILE)
  1067.  
  1068. #define CMD_KI_RDCNT 0x63
  1069.  
  1070. typedef struct _CPUUTIL {
  1071.     ULONG ulTimeLow;
  1072.     ULONG ulTimeHigh;
  1073.     ULONG ulIdleLow;
  1074.     ULONG ulIdleHigh;
  1075.     ULONG ulBusyLow;
  1076.     ULONG ulBusyHigh;
  1077.     ULONG ulIntrLow;
  1078.     ULONG ulIntrHigh;
  1079. } CPUUTIL, *PCPUUTIL;
  1080.  
  1081. APIRET APIENTRY DosPerfSysCall(ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3);
  1082. APIRET APIENTRY DosTmrQueryFreq(PULONG pulTmrFreq);
  1083. APIRET APIENTRY DosTmrQueryTime(PQWORD pqwTmrTime);
  1084.  
  1085. #endif
  1086.  
  1087. #endif
  1088.