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

  1. /*
  2.     OS/2 Base DOS include file for 16-bit development.
  3. */
  4.  
  5. #ifdef INCL_DOS
  6.     #define INCL_DOSDATETIME
  7.     #define INCL_DOSDEVICES
  8.     #define INCL_DOSFILEMGR
  9.     #define INCL_DOSINFOSEG
  10.     #define INCL_DOSMEMMGR
  11.     #define INCL_DOSMISC
  12.     #define INCL_DOSMODULEMGR
  13.     #define INCL_DOSMONITORS
  14.     #define INCL_DOSNLS
  15.     #define INCL_DOSNMPIPES
  16.     #define INCL_DOSPROCESS
  17.     #define INCL_DOSQUEUES
  18.     #define INCL_DOSRESOURCES
  19.     #define INCL_DOSSEMAPHORES
  20.     #define INCL_DOSSESMGR
  21.     #define INCL_DOSSIGNALS
  22. #endif
  23.  
  24. #define CCHMAXPATH          260
  25. #define CCHMAXPATHCOMP      256
  26.  
  27. #if (defined(INCL_DOSPROCESS) || !defined(INCL_NOCOMMON))
  28.  
  29. #define EXIT_THREAD  0
  30. #define EXIT_PROCESS 1
  31.  
  32. #define EXEC_SYNC        0
  33. #define EXEC_ASYNC       1
  34. #define EXEC_ASYNCRESULT 2
  35. #define EXEC_TRACE       3
  36. #define EXEC_BACKGROUND  4
  37. #define EXEC_LOAD        5
  38.  
  39. #define EXLST_ADD    1
  40. #define EXLST_REMOVE 2
  41. #define EXLST_EXIT   3
  42.  
  43. #define PRTYS_PROCESS     0
  44. #define PRTYS_PROCESSTREE 1
  45. #define PRTYS_THREAD      2
  46.  
  47. #define PRTYC_NOCHANGE         0
  48. #define PRTYC_IDLETIME         1
  49. #define PRTYC_REGULAR          2
  50. #define PRTYC_TIMECRITICAL     3
  51. #define PRTYC_FOREGROUNDSERVER 4
  52.  
  53. #define PRTYD_MINIMUM (-31)
  54. #define PRTYD_MAXIMUM   31
  55.  
  56. typedef struct _RESULTCODES {
  57.     USHORT codeTerminate;
  58.     USHORT codeResult;
  59. } RESULTCODES, FAR *PRESULTCODES;
  60.  
  61. typedef struct _PIDINFO {
  62.     PID pid;
  63.     TID tid;
  64.     PID pidParent;
  65. } PIDINFO, FAR *PPIDINFO;
  66.  
  67. typedef VOID (FAR *PFNTHREAD)(VOID);
  68. typedef VOID (PASCAL FAR *PFNEXITLIST)(USHORT);
  69.  
  70. USHORT APIENTRY DosBeep(USHORT Frequency, USHORT Duration);
  71. USHORT APIENTRY DosCreateThread(PFNTHREAD PgmAddress, PTID ThreadIDWord, PBYTE NewThreadStack);
  72. USHORT APIENTRY DosCwait(USHORT ActionCode, USHORT WaitOption, PRESULTCODES ReturnCodes,
  73.                          PPID ProcessIDWord, PID ProcessID);
  74. USHORT APIENTRY DosEnterCritSec(VOID);
  75. USHORT APIENTRY DosExecPgm(PCHAR ObjNameBuf, SHORT ObjNameBufL, USHORT ExecFlags, PSZ ArgPointer,
  76.                            PSZ EnvPointer, PRESULTCODES ReturnCodes, PSZ PgmPointer);
  77. VOID   APIENTRY DosExit(USHORT ActionCode, USHORT ResultCode);
  78. USHORT APIENTRY DosExitCritSec(VOID);
  79. USHORT APIENTRY DosExitList(USHORT FcnCode_Order, PFNEXITLIST RtnAddress);
  80. USHORT APIENTRY DosGetPID(PPIDINFO ProcessIDsArea);
  81. USHORT APIENTRY DosGetPPID(USHORT PID, PUSHORT PPID);
  82. USHORT APIENTRY DosGetPrty(USHORT Scope, PUSHORT Priority, USHORT ID);
  83. USHORT APIENTRY DosKillProcess(USHORT ActionCode, PID ProcessID);
  84. USHORT APIENTRY DosResumeThread(TID ThreadID);
  85. USHORT APIENTRY DosSetPrty(USHORT Scope, USHORT PriorityClass, SHORT PriorityDelta, USHORT ID);
  86. USHORT APIENTRY DosSleep(ULONG TimeInterval);
  87. USHORT APIENTRY DosSuspendThread(TID ThreadID);
  88.  
  89. #endif
  90.  
  91. #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
  92.  
  93. #define FILE_BEGIN    0
  94. #define FILE_CURRENT  1
  95. #define FILE_END      2
  96.  
  97. #define HDIR_SYSTEM   0x0001
  98. #define HDIR_CREATE   0xFFFF
  99.  
  100. #define DCPY_EXISTING 1
  101. #define DCPY_APPEND   2
  102.  
  103. #define FILE_NORMAL    0x0000
  104. #define FILE_READONLY  0x0001
  105. #define FILE_HIDDEN    0x0002
  106. #define FILE_SYSTEM    0x0004
  107. #define FILE_DIRECTORY 0x0010
  108. #define FILE_ARCHIVED  0x0020
  109.  
  110. #define FILE_EXISTED   1
  111. #define FILE_CREATED   2
  112. #define FILE_TRUNCATED 3
  113.  
  114. #define FILE_OPEN      0x0001
  115. #define FILE_TRUNCATE  0x0002
  116. #define FILE_CREATE    0x0010
  117.  
  118. #define OPEN_ACTION_FAIL_IF_EXISTS     0
  119. #define OPEN_ACTION_OPEN_IF_EXISTS     1
  120. #define OPEN_ACTION_REPLACE_IF_EXISTS  2
  121.  
  122. #define OPEN_ACTION_FAIL_IF_NEW     0x0000
  123. #define OPEN_ACTION_CREATE_IF_NEW   0x0010
  124.  
  125. #define OPEN_ACCESS_READONLY        0x0000
  126. #define OPEN_ACCESS_WRITEONLY       0x0001
  127. #define OPEN_ACCESS_READWRITE       0x0002
  128. #define OPEN_SHARE_DENYREADWRITE    0x0010
  129. #define OPEN_SHARE_DENYWRITE        0x0020
  130. #define OPEN_SHARE_DENYREAD         0x0030
  131. #define OPEN_SHARE_DENYNONE         0x0040
  132. #define OPEN_FLAGS_NOINHERIT        0x0080
  133. #define OPEN_FLAGS_NO_LOCALITY      0x0000
  134. #define OPEN_FLAGS_SEQUENTIAL       0x0100
  135. #define OPEN_FLAGS_RANDOM           0x0200
  136. #define OPEN_FLAGS_RANDOMSEQUENTIAL 0x0300
  137. #define OPEN_FLAGS_NO_CACHE         0x1000
  138. #define OPEN_FLAGS_FAIL_ON_ERROR    0x2000
  139. #define OPEN_FLAGS_WRITE_THROUGH    0x4000
  140. #define OPEN_FLAGS_DASD             0x8000
  141.  
  142. #define SEARCH_PATH          0
  143. #define SEARCH_CUR_DIRECTORY 1
  144. #define SEARCH_ENVIRONMENT   2
  145. #define SEARCH_IGNORENETERRS 4
  146.  
  147. #define FIO_LOCK      0
  148. #define FIO_UNLOCK    1
  149. #define FIO_SEEK      2
  150. #define FIO_READ      3
  151. #define FIO_WRITE     4
  152.  
  153. #define FIO_NOSHARE   0
  154. #define FIO_SHAREREAD 1
  155.  
  156. #define FSIL_ALLOC    1
  157. #define FSIL_VOLSER   2
  158.  
  159. #define FHT_DISKFILE  0
  160. #define FHT_CHRDEV    1
  161. #define FHT_PIPE      2
  162.  
  163. #define FHB_DSKREMOTE    0x8000
  164. #define FHB_CHRDEVREMOTE 0x8000
  165. #define FHB_PIPEREMOTE   0x8000
  166.  
  167. typedef SHANDLE     HDIR;
  168. typedef HDIR FAR    *PHDIR;
  169.  
  170. typedef struct _DENA1 {
  171.     UCHAR  reserved;
  172.     UCHAR  cbName;
  173.     USHORT cbValue;
  174.     UCHAR  szName[1];
  175. } DENA1;
  176.  
  177. typedef struct _FDATE {
  178.     unsigned day   : 5;
  179.     unsigned month : 4;
  180.     unsigned year  : 7;
  181. } FDATE;
  182.  
  183. typedef struct _FTIME {
  184.     unsigned twosecs : 5;
  185.     unsigned minutes : 6;
  186.     unsigned hours   : 5;
  187. } FTIME;
  188.  
  189. typedef struct _FILEFINDBUF {
  190.     FDATE  fdateCreation;
  191.     FTIME  ftimeCreation;
  192.     FDATE  fdateLastAccess;
  193.     FTIME  ftimeLastAccess;
  194.     FDATE  fdateLastWrite;
  195.     FTIME  ftimeLastWrite;
  196.     ULONG  cbFile;
  197.     ULONG  cbFileAlloc;
  198.     USHORT attrFile;
  199.     UCHAR  cchName;
  200.     CHAR   achName[CCHMAXPATHCOMP];
  201. } FILEFINDBUF, FAR *PFILEFINDBUF;
  202.  
  203. typedef struct _FILEFINDBUF2 {
  204.     FDATE  fdateCreation;
  205.     FTIME  ftimeCreation;
  206.     FDATE  fdateLastAccess;
  207.     FTIME  ftimeLastAccess;
  208.     FDATE  fdateLastWrite;
  209.     FTIME  ftimeLastWrite;
  210.     ULONG  cbFile;
  211.     ULONG  cbFileAlloc;
  212.     USHORT attrFile;
  213.     ULONG  cbList;
  214.     UCHAR  cchName;
  215.     CHAR   achName[CCHMAXPATHCOMP];
  216. } FILEFINDBUF2, FAR *PFILEFINDBUF2;
  217.  
  218. typedef struct _FILESTATUS {
  219.     FDATE  fdateCreation;
  220.     FTIME  ftimeCreation;
  221.     FDATE  fdateLastAccess;
  222.     FTIME  ftimeLastAccess;
  223.     FDATE  fdateLastWrite;
  224.     FTIME  ftimeLastWrite;
  225.     ULONG  cbFile;
  226.     ULONG  cbFileAlloc;
  227.     USHORT attrFile;
  228. } FILESTATUS, FAR *PFILESTATUS;
  229.  
  230. typedef struct _FSALLOCATE {
  231.     ULONG  idFileSystem;
  232.     ULONG  cSectorUnit;
  233.     ULONG  cUnit;
  234.     ULONG  cUnitAvail;
  235.     USHORT cbSector;
  236. } FSALLOCATE, FAR *PFSALLOCATE;
  237.  
  238. typedef struct _GEA {
  239.     BYTE cbName;
  240.     CHAR szName[1];
  241. } GEA, FAR *PGEA;
  242.  
  243. typedef struct _GEALIST {
  244.     ULONG  cbList;
  245.     GEA list[1];
  246. } GEALIST, FAR *PGEALIST;
  247.  
  248. typedef struct _FEA {
  249.     BYTE fEA;
  250.     BYTE cbName;
  251.     USHORT cbValue;
  252. } FEA, FAR *PFEA;
  253.  
  254. typedef struct _FEALIST {
  255.     ULONG  cbList;
  256.     FEA list[1];
  257. } FEALIST, FAR *PFEALIST;
  258.  
  259. typedef struct _EAOP {
  260.     PGEALIST fpGEAList;
  261.     PFEALIST fpFEAList;
  262.     ULONG    oError;
  263. } EAOP, FAR *PEAOP;
  264.  
  265. USHORT APIENTRY DosBufReset(HFILE FileHandle);
  266. USHORT APIENTRY DosChDir(PSZ DirName, ULONG Reserved);
  267. USHORT APIENTRY DosChgFilePtr(HFILE FileHandle, LONG Distance, USHORT MoveType, PULONG NewPointer);
  268. USHORT APIENTRY DosClose(HFILE FileHandle);
  269. USHORT APIENTRY DosCopy(PSZ SourceName, PSZ TargetName, USHORT OpMode, ULONG Reserved);
  270. USHORT APIENTRY DosDelete(PSZ FileName, ULONG Reserved);
  271. USHORT APIENTRY DosDupHandle(HFILE OldFileHandle, PHFILE NewFileHandle);
  272. USHORT APIENTRY DosEditName(USHORT EditLevel, PSZ SourceString, PSZ EditString, PBYTE TargetBuf,
  273.                         USHORT TargetBufLen);
  274. USHORT APIENTRY DosEnumAttribute(USHORT RefType, PVOID FileRef, ULONG EntryNum, PVOID EnumBuf,
  275.                         ULONG EnumBufSize, PULONG EnumCnt, ULONG InfoLevel, ULONG Reserved);
  276. USHORT APIENTRY DosFileIO(HFILE FileHandle, PBYTE CommandList, USHORT CommandListLen,
  277.                         PLONG ErrorOffset);
  278. USHORT APIENTRY DosFileLocks(HFILE FileHandle, PLONG UnLockRange, PLONG LockRange);
  279. USHORT APIENTRY DosFindClose(HDIR DirHandle);
  280. USHORT APIENTRY DosFindFirst(PSZ FileName, PHDIR DirHandle, USHORT Attribute, PFILEFINDBUF ResultBuf,
  281.                         USHORT ResultBufLen, PUSHORT SearchCount, ULONG Reserved);
  282. USHORT APIENTRY DosFindFirst2(PSZ FileName, PHDIR DirHandle, USHORT Attribute, PVOID ResultBuf,
  283.                         USHORT ResultBufLen, PUSHORT SearchCount, USHORT FileInfoLevel, ULONG Reserved);
  284. USHORT APIENTRY DosFindNext(HDIR DirHandle, PFILEFINDBUF ResultBuf, USHORT ResultBufLen, PUSHORT SearchCount);
  285. USHORT APIENTRY DosFSAttach(PSZ DeviceName, PSZ FSDName, PBYTE DataBuffer,
  286.                         USHORT DataBufferLen, USHORT OpFlag, ULONG Reserved);
  287. USHORT APIENTRY DosFSCtl(PBYTE DataArea, USHORT DataLengthMax, PUSHORT DataLength, PBYTE ParmList,
  288.                         USHORT ParmLengthMax, PUSHORT ParmLength, USHORT FunctionCode, PSZ RouteName,
  289.                         HFILE FileHandle, USHORT RouteMethod, ULONG Reserved);
  290. USHORT APIENTRY DosMkDir(PSZ DirName, ULONG Reserved);
  291. USHORT APIENTRY DosMkDir2(PSZ DirName, PEAOP EABuf, ULONG Reserved);
  292. USHORT APIENTRY DosMove(PSZ OldPathName, PSZ NewPathName, ULONG Reserved);
  293. USHORT APIENTRY DosNewSize(HFILE FileHandle, ULONG FileSize);
  294. USHORT APIENTRY DosOpen(PSZ FileName, PHFILE FileHandle, PUSHORT ActionTaken, ULONG FileSize,
  295.                         USHORT FileAttribute, USHORT OpenFlag, USHORT OpenMode, ULONG Reserved);
  296. USHORT APIENTRY DosOpen2(PSZ FileName, PHFILE FileHandle, PUSHORT ActionTaken, ULONG FileSize,
  297.                         USHORT FileAttribute, USHORT OpenFlag, USHORT OpenMode, PEAOP EABuf,
  298.                         ULONG Reserved);
  299. USHORT APIENTRY DosQCurDir(USHORT DriveNumber, PBYTE DirPath, PUSHORT DirPathLen);
  300. USHORT APIENTRY DosQCurDisk(PUSHORT DriveNumber, PULONG LogicalDriveMap);
  301. USHORT APIENTRY DosQFHandState(HFILE FileHandle, PUSHORT FileHandleState);
  302. USHORT APIENTRY DosQFileInfo(HFILE FileHandle, USHORT FileInfoLevel, PBYTE FileInfoBuf,
  303.                         USHORT FileInfoBufSize);
  304. USHORT APIENTRY DosQFileMode(PSZ FilePathName, PUSHORT CurrentAttribute, ULONG Reserved);
  305. USHORT APIENTRY DosQFSAttach(PSZ DeviceName, USHORT Ordinal, USHORT FSAInfoLevel, PBYTE DataBuffer,
  306.                         PUSHORT DataBufferLen, ULONG Reserved);
  307. USHORT APIENTRY DosQFSInfo(USHORT DriveNumber, USHORT FSInfoLevel, PBYTE FSInfoBuf, USHORT FSInfoBufSize);
  308. USHORT APIENTRY DosQHandType(HFILE FileHandle, PUSHORT HandType, PUSHORT FlagWord);
  309. USHORT APIENTRY DosQPathInfo(PSZ PathName, USHORT PathInfoLevel, PBYTE PathInfoBuf,
  310.                         USHORT PathInfoBufSize, ULONG Reserved);
  311. USHORT APIENTRY DosQVerify(PUSHORT VerifySetting);
  312. USHORT APIENTRY DosRead(HFILE FileHandle, PVOID BufferArea, USHORT BufferLength, PUSHORT BytesRead);
  313. USHORT APIENTRY DosReadAsync(HFILE FileHandle, PULONG RamSemaphore, PUSHORT ReturnCode, PVOID BufferArea,
  314.                         USHORT BufferLength, PUSHORT BytesRead);
  315. USHORT APIENTRY DosRmDir(PSZ DirName, ULONG Reserved);
  316. USHORT APIENTRY DosSelectDisk(USHORT DriveNumber);
  317. USHORT APIENTRY DosSetFHandState(HFILE FileHandle, USHORT FileHandleState);
  318. USHORT APIENTRY DosSetFileInfo(HFILE FileHandle, USHORT FileInfoLevel, PBYTE FileInfoBuf,
  319.                         USHORT FileInfoBufSize);
  320. USHORT APIENTRY DosSetFileMode(PSZ FileName, USHORT NewAttribute, ULONG Reserved);
  321. USHORT APIENTRY DosSetFSInfo(USHORT DriveNumber, USHORT FSInfoLevel, PBYTE FSInfoBuf,
  322.                         USHORT FSInfoBufSize);
  323. USHORT APIENTRY DosSetMaxFH(USHORT NumberHandles);
  324. USHORT APIENTRY DosSetPathInfo(PSZ PathName, USHORT PathInfoLevel, PBYTE PathInfoBuf,
  325.                         USHORT PathInfoBufSize, USHORT PathInfoFlags, ULONG Reserved);
  326. USHORT APIENTRY DosSetVerify(USHORT VerifySetting);
  327. USHORT APIENTRY DosShutdown(ULONG Reserved);
  328. USHORT APIENTRY DosWrite(HFILE FileHandle, PVOID BufferArea, USHORT BufferLength, PUSHORT BytesWritten);
  329. USHORT APIENTRY DosWriteAsync(HFILE FileHandle, PULONG RamSemaphore, PUSHORT ReturnCode,
  330.                         PVOID BufferArea, USHORT BufferLength, PUSHORT BytesWritten);
  331.  
  332. #endif
  333.  
  334. #if (defined(INCL_DOSMEMMGR) || !defined(INCL_NOCOMMON))
  335.  
  336. #define SEG_NONSHARED    0
  337. #define SEG_GIVEABLE     1
  338. #define SEG_GETTABLE     2
  339. #define SEG_DISCARDABLE  4
  340.  
  341. USHORT APIENTRY DosAllocHuge(USHORT NumSeg, USHORT Size, PSEL Selector, USHORT MaxNumSeg, USHORT AllocFlags);
  342. USHORT APIENTRY DosAllocSeg(USHORT Size, PSEL Selector, USHORT AllocFlags);
  343. USHORT APIENTRY DosAllocShrSeg(USHORT Size, PSZ Name, PSEL Selector);
  344. USHORT APIENTRY DosCreateCSAlias(SEL DataSelector, PSEL CodeSelector);
  345. USHORT APIENTRY DosFreeSeg(SEL Selector);
  346. USHORT APIENTRY DosGetHugeShift(PUSHORT ShiftCount);
  347. USHORT APIENTRY DosGetSeg(SEL Selector);
  348. USHORT APIENTRY DosGetShrSeg(PSZ Name, PSEL Selector);
  349. USHORT APIENTRY DosGiveSeg(SEL CallerSegSelector, PID ProcessID, PSEL RecipientSegSelector);
  350. USHORT APIENTRY DosLockSeg(SEL Selector);
  351. USHORT APIENTRY DosMemAvail(PULONG MemAvailSize);
  352. USHORT APIENTRY DosReallocHuge(USHORT NumSeg, USHORT Size, SEL Selector);
  353. USHORT APIENTRY DosReallocSeg(USHORT Size, SEL Selector);
  354. USHORT APIENTRY DosSizeSeg(SEL Selector, PULONG Size);
  355. USHORT APIENTRY DosSubAlloc(SEL SegSelector, PUSHORT BlockOffset, USHORT Size);
  356. USHORT APIENTRY DosSubFree(SEL SegSelector, USHORT BlockOffset, USHORT Size);
  357. USHORT APIENTRY DosSubSet(SEL SegSelector, USHORT Flags, USHORT Size);
  358. USHORT APIENTRY DosUnlockSeg(SEL Selector);
  359.  
  360. #endif
  361.  
  362. #ifdef INCL_DOSMODULEMGR
  363.  
  364. USHORT APIENTRY DosFreeModule(HMODULE ModuleHandle);
  365. USHORT APIENTRY DosGetModHandle(PSZ ModuleName, PHMODULE ModuleHandle);
  366. USHORT APIENTRY DosGetModName(HMODULE ModuleHandle, USHORT BufferLength, PCHAR Buffer);
  367. USHORT APIENTRY DosGetProcAddr(HMODULE ModuleHandle, PSZ ProcName, PFN FAR *ProcAddress);
  368. USHORT APIENTRY DosLoadModule(PSZ ObjNameBuf, USHORT ObjNameBufL, PSZ ModuleName,
  369.                         PHMODULE ModuleHandle);
  370.  
  371. #endif
  372.  
  373. #ifdef INCL_DOSNMPIPES
  374.  
  375. typedef SHANDLE     HPIPE;
  376. typedef HPIPE FAR   *PHPIPE;
  377.  
  378. USHORT APIENTRY DosCallNmPipe(PSZ FileName, PBYTE InBuffer, USHORT InBufferLen, PBYTE OutBuffer,
  379.                         USHORT OutBufferLen, PUSHORT BytesOut, ULONG TimeOut);
  380. USHORT APIENTRY DosConnectNmPipe(HPIPE Handle);
  381. USHORT APIENTRY DosDisConnectNmPipe(HPIPE Handle);
  382. USHORT APIENTRY DosMakeNmPipe(PSZ PipeName, PHPIPE PipeHandle, USHORT OpenMode, USHORT PipeMode,
  383.                         USHORT OutBufSize, USHORT InBufSize, ULONG TimeOut);
  384. USHORT APIENTRY DosPeekNmPipe(HPIPE Handle, PBYTE Buffer, USHORT BufferLen, PUSHORT BytesRead,
  385.                         PUSHORT BytesAvail, PUSHORT PipeState);
  386. USHORT APIENTRY DosQNmPHandState(HPIPE Handle, PUSHORT PipeHandleState);
  387. USHORT APIENTRY DosQNmPipeInfo(HPIPE Handle, USHORT InfoLevel, PBYTE InfoBuf, USHORT InfoBufSize);
  388. USHORT APIENTRY DosQNmPipeSemState(HSEM SemHandle, PBYTE InfoBuf, USHORT InfoBufLen);
  389. USHORT APIENTRY DosSetNmPHandState(HPIPE Handle, USHORT PipeHandleState);
  390. USHORT APIENTRY DosSetNmPipeSem(HPIPE Handle, HSEM SemHandle, USHORT KeyHandle);
  391. USHORT APIENTRY DosTransactNmPipe(HPIPE Handle, PBYTE InBuffer, USHORT InBufferLen, PBYTE OutBuffer,
  392.                         USHORT OutBufferLen, PUSHORT BytesOut);
  393. USHORT APIENTRY DosWaitNmPipe(PSZ FileName, ULONG TimeOut);
  394.  
  395. #endif
  396.  
  397. #ifdef INCL_DOSQUEUES
  398.  
  399. typedef SHANDLE     HQUEUE;
  400. typedef HQUEUE FAR  *PHQUEUE;
  401.  
  402. USHORT APIENTRY DosCloseQueue(HQUEUE QueueHandle);
  403. USHORT APIENTRY DosCreateQueue(PHQUEUE RWHandle, USHORT QueuePrty, PSZ QueueName);
  404. USHORT APIENTRY DosMakePipe(PHFILE ReadHandle, PHFILE WriteHandle, USHORT PipeSize);
  405. USHORT APIENTRY DosOpenQueue(PUSHORT OwnerPID, PHQUEUE QueueHandle, PSZ QueueName);
  406. USHORT APIENTRY DosPeekQueue(HQUEUE QueueHandle, PULONG Request, PUSHORT DataLength,
  407.                         PULONG DataAddress, PUSHORT ElementCode, UCHAR NoWait,
  408.                         PBYTE ElemPriority, ULONG SemaphoreHandle);
  409. USHORT APIENTRY DosPurgeQueue(HQUEUE QueueHandle);
  410. USHORT APIENTRY DosQueryQueue(HQUEUE QueueHandle, PUSHORT NumberElements);
  411. USHORT APIENTRY DosReadQueue(HQUEUE QueueHandle, PULONG Request, PUSHORT DataLength,
  412.                         PULONG DataAddress, USHORT ElementCode, UCHAR NoWait,
  413.                         PBYTE ElemPriority, HSEM SemaphoreHandle);
  414. USHORT APIENTRY DosWriteQueue(HQUEUE QueueHandle, USHORT Request, USHORT DataLength,
  415.                         PBYTE DataBuffer, UCHAR ElemPriority);
  416.  
  417. #endif
  418.  
  419. #ifdef INCL_DOSSEMAPHORES
  420.  
  421. typedef LHANDLE     HSYSSEM;
  422. typedef HSYSSEM FAR *PHSYSSEM;
  423.  
  424. typedef struct _DOSFSRSEM {
  425.     USHORT cb;
  426.     PID    pid;
  427.     TID    tid;
  428.     USHORT cUsage;
  429.     USHORT client;
  430.     ULONG  sem;
  431. } DOSFSRSEM, FAR *PDOSFSRSEM;
  432.  
  433. typedef struct _MUXSEM {
  434.     USHORT zero;
  435.     HSEM   hsem;
  436. } MUXSEM, FAR *PMUXSEM;
  437.  
  438. typedef struct _MUXSEMLIST {
  439.     USHORT  cmxs;
  440.     MUXSEM  amxs[16];
  441. } MUXSEMLIST, FAR *PMUXSEMLIST;
  442.  
  443. USHORT APIENTRY DosCloseSem(HSEM SemHandle);
  444. USHORT APIENTRY DosCreateSem(USHORT NoExclusive, PHSYSSEM SemHandle, PSZ SemName);
  445. USHORT APIENTRY DosFSRamSemClear(PDOSFSRSEM FSRamSemStructure);
  446. USHORT APIENTRY DosFSRamSemRequest(PDOSFSRSEM FSRamSemStructure, LONG Timeout);
  447. USHORT APIENTRY DosMuxSemWait(PUSHORT IndexNbr, PVOID ListAddr, LONG Timeout);
  448. USHORT APIENTRY DosOpenSem(PHSEM SemHandle, PSZ SemName);
  449. USHORT APIENTRY DosSemClear(HSEM SemHandle);
  450. USHORT APIENTRY DosSemRequest(HSEM SemHandle, LONG Timeout);
  451. USHORT APIENTRY DosSemSet(HSEM SemHandle);
  452. USHORT APIENTRY DosSemSetWait(HSEM SemHandle, LONG Timeout);
  453. USHORT APIENTRY DosSemWait(HSEM SemHandle, LONG Timeout);
  454.  
  455. #endif
  456.  
  457. #ifdef INCL_DOSMONITORS
  458.  
  459. typedef SHANDLE       HMONITOR;
  460. typedef HMONITOR FAR  *PHMONITOR;
  461.  
  462. USHORT APIENTRY DosMonClose(HMONITOR Handle);
  463. USHORT APIENTRY DosMonOpen(PSZ Devname, PHMONITOR Handle);
  464. USHORT APIENTRY DosMonRead(PBYTE BufferI, UCHAR WaitFlag, PBYTE DataBuffer, PUSHORT Bytecnt);
  465. USHORT APIENTRY DosMonReg(HMONITOR Handle, PBYTE BufferI, PBYTE BufferO, USHORT Posflag, USHORT Index);
  466. USHORT APIENTRY DosMonWrite(PBYTE BufferO, PBYTE DataBuffer, USHORT Bytecnt);
  467.  
  468. #endif
  469.  
  470. #ifdef INCL_DOSINFOSEG
  471.  
  472. typedef struct _GINFOSEG {
  473.     ULONG   time;
  474.     ULONG   msecs;
  475.     UCHAR   hour;
  476.     UCHAR   minutes;
  477.     UCHAR   seconds;
  478.     UCHAR   hundredths;
  479.     USHORT  timezone;
  480.     USHORT  cusecTimerInterval;
  481.     UCHAR   day;
  482.     UCHAR   month;
  483.     USHORT  year;
  484.     UCHAR   weekday;
  485.     UCHAR   uchMajorVersion;
  486.     UCHAR   uchMinorVersion;
  487.     UCHAR   chRevisionLetter;
  488.     UCHAR   sgCurrent;
  489.     UCHAR   sgMax;
  490.     UCHAR   cHugeShift;
  491.     UCHAR   fProtectModeOnly;
  492.     USHORT  pidForeground;
  493.     UCHAR   fDynamicSched;
  494.     UCHAR   csecMaxWait;
  495.     USHORT  cmsecMinSlice;
  496.     USHORT  cmsecMaxSlice;
  497.     USHORT  bootdrive;
  498.     UCHAR   amecRAS[32];
  499.     UCHAR   csgWindowableVioMax;
  500.     UCHAR   csgPMMax;
  501. } GINFOSEG, FAR *PGINFOSEG;
  502.  
  503. typedef struct _LINFOSEG {
  504.     PID     pidCurrent;
  505.     PID     pidParent;
  506.     USHORT  prtyCurrent;
  507.     TID     tidCurrent;
  508.     USHORT  sgCurrent;
  509.     UCHAR   rfProcStatus;
  510.     UCHAR   dummy1;
  511.     BOOL    fForeground;
  512.     UCHAR   typeProcess;
  513.     UCHAR   dummy2;
  514.     SEL     selEnvironment;
  515.     USHORT  offCmdLine;
  516.     USHORT  cbDataSegment;
  517.     USHORT  cbStack;
  518.     USHORT  cbHeap;
  519.     HMODULE hmod;
  520.     SEL     selDS;
  521. } LINFOSEG, FAR *PLINFOSEG;
  522.  
  523. USHORT APIENTRY DosGetInfoSeg(PSEL GlobalSeg, PSEL LocalSeg);
  524.  
  525. #endif
  526.  
  527. #ifdef INCL_DOSNLS
  528.  
  529. typedef struct _COUNTRYCODE {
  530.     USHORT country;
  531.     USHORT codepage;
  532. } COUNTRYCODE, FAR *PCOUNTRYCODE;
  533.  
  534. typedef struct _COUNTRYINFO {
  535.     USHORT country;
  536.     USHORT codepage;
  537.     USHORT fsDateFmt;
  538.     CHAR   szCurrency[5];
  539.     CHAR   szThousandsSeparator[2];
  540.     CHAR   szDecimal[2];
  541.     CHAR   szDateSeparator[2];
  542.     CHAR   szTimeSeparator[2];
  543.     UCHAR  fsCurrencyFmt;
  544.     UCHAR  cDecimalPlace;
  545.     UCHAR  fsTimeFmt;
  546.     USHORT abReserved1[2];
  547.     CHAR   szDataSeparator[2];
  548.     USHORT abReserved2[5];
  549. } COUNTRYINFO, FAR *PCOUNTRYINFO;
  550.  
  551. USHORT APIENTRY DosCaseMap(USHORT Length, PCOUNTRYCODE Structure, PCHAR BinaryString);
  552. USHORT APIENTRY DosGetCollate(USHORT Length, PCOUNTRYCODE Structure, PCHAR MemoryBuffer, PUSHORT DataLength);
  553. USHORT APIENTRY DosGetCp(USHORT Length, PUSHORT CodePageList, PUSHORT DataLength);
  554. USHORT APIENTRY DosGetCtryInfo(USHORT Length, PCOUNTRYCODE Structure, PCOUNTRYINFO MemoryBuffer, PUSHORT DataLength);
  555. USHORT APIENTRY DosGetDBCSEv(USHORT Length, PCOUNTRYCODE Structure, PCHAR MemoryBuffer);
  556. USHORT APIENTRY DosSetCp(USHORT CodePage, USHORT Reserved);
  557. USHORT APIENTRY DosSetProcCp(USHORT CodePage, USHORT Reserved);
  558.  
  559. #endif
  560.  
  561. #ifdef INCL_DOSSIGNALS
  562.  
  563. #define SIG_CTRLC        1
  564. #define SIG_BROKENPIPE   2
  565. #define SIG_KILLPROCESS  3
  566. #define SIG_CTRLBREAK    4
  567. #define SIG_PFLG_A       5
  568. #define SIG_PFLG_B       6
  569. #define SIG_PFLG_C       7
  570. #define SIG_CSIGNALS     8
  571.  
  572. #define PFLG_A           0
  573. #define PFLG_B           1
  574. #define PFLG_C           2
  575.  
  576. #define SIGA_KILL        0
  577. #define SIGA_IGNORE      1
  578. #define SIGA_ACCEPT      2
  579. #define SIGA_ERROR       3
  580. #define SIGA_ACKNOWLEDGE 4
  581.  
  582. #define HLDSIG_ENABLE    0
  583. #define HLDSIG_DISABLE   1
  584.  
  585. #define FLGP_SUBTREE     0
  586. #define FLGP_PID         1
  587.  
  588. typedef VOID (PASCAL FAR *PFNSIGHANDLER)(USHORT, USHORT);
  589.  
  590. USHORT APIENTRY DosFlagProcess(PID ProcessID, USHORT ActionCode, USHORT Flagnum, USHORT Flagarg);
  591. USHORT APIENTRY DosHoldSignal(USHORT ActionCode);
  592. USHORT APIENTRY DosSendSignal(USHORT PID, USHORT SigNumber);
  593. USHORT APIENTRY DosSetSigHandler(PFNSIGHANDLER Routine, PFNSIGHANDLER FAR *PrevAddress,
  594.                         PUSHORT PrevAction, USHORT Action, USHORT SigNumber);
  595.  
  596. #endif
  597.  
  598. #ifdef INCL_DOSRESOURCES
  599.  
  600. USHORT APIENTRY DosFreeResource(PBYTE ResAddr);
  601. USHORT APIENTRY DosGetResource(HMODULE ModHandle, USHORT TypeID, USHORT NameID, PSEL Selector);
  602. USHORT APIENTRY DosGetResource2(HMODULE ModHandle, USHORT TypeID, USHORT NameID, PULONG ResAddr);
  603.  
  604. #endif
  605.  
  606. #ifdef INCL_DOSDATETIME
  607.  
  608. typedef SHANDLE     HTIMER;
  609. typedef HTIMER FAR  *PHTIMER;
  610.  
  611. typedef struct _DATETIME {
  612.     UCHAR   hours;
  613.     UCHAR   minutes;
  614.     UCHAR   seconds;
  615.     UCHAR   hundredths;
  616.     UCHAR   day;
  617.     UCHAR   month;
  618.     USHORT  year;
  619.     SHORT   timezone;
  620.     UCHAR   weekday;
  621. } DATETIME, FAR *PDATETIME;
  622.  
  623. USHORT APIENTRY DosGetDateTime(PDATETIME DateTime);
  624. USHORT APIENTRY DosSetDateTime(PDATETIME DateTime);
  625. USHORT APIENTRY DosTimerAsync(ULONG TimeInterval, HSEM SemHandle, PHTIMER Handle);
  626. USHORT APIENTRY DosTimerStart(ULONG TimeInterval, HSEM SemHandle, PHTIMER Handle);
  627. USHORT APIENTRY DosTimerStop(HTIMER Handle);
  628.  
  629. #endif
  630.  
  631. #ifdef INCL_DOSMISC
  632.  
  633. USHORT APIENTRY DosErrClass(USHORT Code, PUSHORT Class, PUSHORT Action, PUSHORT Locus);
  634. USHORT APIENTRY DosError(USHORT Flag);
  635. USHORT APIENTRY DosGetEnv(PUSHORT EnvSegment, PUSHORT CmdOffset);
  636. USHORT APIENTRY DosGetMachineMode(PBYTE MachineMode);
  637. USHORT APIENTRY DosGetMessage(PCHAR FAR *IvTable, USHORT IvCount, PCHAR DataArea, USHORT DataLength,
  638.                         USHORT MsgNumber, PSZ FileName, PUSHORT MsgLength);
  639. USHORT APIENTRY DosGetVersion(PUSHORT VersionWord);
  640. USHORT APIENTRY DosInsMessage(PCHAR FAR *IvTable, USHORT IvCount, PSZ MsgInput, USHORT MsgInLength,
  641.                         PCHAR DataArea, USHORT DataLength, PUSHORT MsgLength);
  642. USHORT APIENTRY DosPutMessage(USHORT FileHandle, USHORT MessageLength, PCHAR MessageBuffer);
  643. USHORT APIENTRY DosPtrace(PBYTE PtraceB);
  644. USHORT APIENTRY DosQSysInfo(USHORT Index, PBYTE DataBuf, USHORT DataBufLen);
  645. USHORT APIENTRY DosScanEnv(PSZ EnvVarName, PSZ FAR *ResultPointer);
  646. USHORT APIENTRY DosSearchPath(USHORT Control, PSZ PathRef, PSZ FileName, PBYTE ResultBuffer,
  647.                         USHORT ResultBufferLen);
  648. USHORT APIENTRY DosSetVec(USHORT VecNum, PFN Routine, PFN FAR *PrevAddress);
  649.  
  650. #endif
  651.  
  652. #ifdef INCL_DOSSESMGR
  653.  
  654. typedef struct _STATUSDATA {
  655.   USHORT Length;
  656.   USHORT SelectInd;
  657.   USHORT BondInd;
  658. } STATUSDATA, FAR *PSTATUSDATA;
  659.  
  660. typedef struct _STARTDATA {
  661.     USHORT Length;
  662.     USHORT Related;
  663.     USHORT FgBg;
  664.     USHORT TraceOpt;
  665.     PSZ    PgmTitle;
  666.     PSZ    PgmName;
  667.     PBYTE  PgmInputs;
  668.     PBYTE  TermQ;
  669.     PBYTE  Environment;
  670.     USHORT InheritOpt;
  671.     USHORT SessionType;
  672.     PSZ    IconFile;
  673.     ULONG  PgmHandle;
  674.     USHORT PgmControl;
  675.     USHORT InitXPos;
  676.     USHORT InitYPos;
  677.     USHORT InitXSize;
  678.     USHORT InitYSize;
  679. } STARTDATA, FAR *PSTARTDATA;
  680.  
  681. USHORT APIENTRY DosQAppType(PSZ ExecutableFileName, PUSHORT AppType);
  682. USHORT APIENTRY DosSelectSession(USHORT SessID, ULONG Reserved);
  683. USHORT APIENTRY DosSetSession(USHORT SessID, PSTATUSDATA StatusData);
  684. USHORT APIENTRY DosStartSession(PSTARTDATA StartData, PUSHORT SessID, PUSHORT PID);
  685. USHORT APIENTRY DosStopSession(USHORT TargetOption, USHORT SessID, ULONG Reserved);
  686.  
  687. #endif
  688.  
  689. #ifdef INCL_DOSDEVICES
  690.  
  691. VOID   APIENTRY DosCallback(PFN Ring3Routine);
  692. USHORT APIENTRY DosCLIAccess(VOID);
  693. USHORT APIENTRY DosDevConfig(PVOID DeviceInfo, USHORT Item, USHORT Parm);
  694. USHORT APIENTRY DosDevIOCtl(PVOID Data, PVOID ParmList, USHORT Function, USHORT Category, HFILE DevHandle);
  695. USHORT APIENTRY DosDevIOCtl2(PVOID Data, USHORT DataLength, PVOID ParmList, USHORT ParmListLength,
  696.                         USHORT Function, USHORT Category, HFILE DevHandle);
  697. USHORT APIENTRY DosPhysicalDisk(USHORT Function, PBYTE DataPtr, USHORT DataLen, PBYTE ParmPtr, USHORT ParmLen);
  698. USHORT APIENTRY DosPortAccess(USHORT Reserved, USHORT TypeOfAccess, USHORT FirstPort, USHORT LastPort);
  699. USHORT APIENTRY DosR2StackRealloc(USHORT NewSize);
  700.  
  701. #endif
  702.  
  703.