home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / MASM.ZIP / INCLUDE / BSEDOS.IN$ / BSEDOS.bin
Encoding:
Text File  |  1991-02-28  |  54.2 KB  |  1,692 lines

  1. ;
  2. ; Module Name: BSEDOS.INC
  3. ;
  4. ; OS/2 Base Include File
  5. ;
  6. ; Copyright (c) 1987-1990, Microsoft Corporation.  All rights reserved.
  7. ;
  8. ; =======================================================================
  9. ;
  10. ; Subcomponents marked with "+" are partially included by default
  11. ;
  12. ;   #define:          To include:
  13. ;
  14. ; + INCL_DOSPROCESS   Process and thread support
  15. ;   INCL_DOSINFOSEG   InfoSeg support
  16. ; + INCL_DOSFILEMGR   File Management
  17. ; + INCL_DOSMEMMGR    Memory Management
  18. ; + INCL_DOSSEMAPHORES        Semaphore support
  19. ; + INCL_DOSDATETIME  Date/Time and Timer support
  20. ;   INCL_DOSMODULEMGR Module manager
  21. ; + INCL_DOSRESOURCES Resource support
  22. ;   INCL_DOSNLS       National Language Support
  23. ;   INCL_DOSSIGNALS   Signals
  24. ;   INCL_DOSMISC      Miscellaneous
  25. ;   INCL_DOSMONITORS  Monitors
  26. ;   INCL_DOSQUEUES    Queues
  27. ;   INCL_DOSSESMGR    Session Manager Support
  28. ;   INCL_DOSDEVICES   Device specific, ring 2 support
  29. ;   INCL_DOSNMPIPES   Named Pipes Support
  30. ;   INCL_DOSTRACE     Trace support
  31. ;
  32.  
  33. INCL_DOSINCLUDED        EQU     1
  34.  
  35. IFDEF INCL_DOS
  36. INCL_DOSPROCESS         EQU     1
  37. INCL_DOSINFOSEG         EQU     1
  38. INCL_DOSFILEMGR         EQU     1
  39. INCL_DOSMEMMGR          EQU     1
  40. INCL_DOSSEMAPHORES      EQU     1
  41. INCL_DOSDATETIME        EQU     1
  42. INCL_DOSMODULEMGR       EQU     1
  43. INCL_DOSRESOURCES       EQU     1
  44. INCL_DOSNLS             EQU     1
  45. INCL_DOSSIGNALS         EQU     1
  46. INCL_DOSMISC            EQU     1
  47. INCL_DOSMONITORS        EQU     1
  48. INCL_DOSQUEUES          EQU     1
  49. INCL_DOSSESMGR          EQU     1
  50. INCL_DOSDEVICES         EQU     1
  51. INCL_DOSNMPIPES         EQU     1
  52. INCL_DOSTRACE           EQU     1
  53. ENDIF ; INCL_DOS
  54.  
  55. IFDEF INCL_ERRORS
  56. INCL_DOSERRORS          EQU     1
  57. ENDIF ; INCL_ERRORS
  58.  
  59. ; DosExit is always defined so that .EXIT will always work
  60. DosExit         PROTO FAR PASCAL \
  61.                 fTerminate:BOOL, usExitCode:WORD
  62.  
  63. ; DosExit fTerminate
  64. EXIT_THREAD     EQU     0
  65. EXIT_PROCESS    EQU     1
  66.  
  67. IF DEFINED( INCL_DOSPROCESS ) OR NOT DEFINED( INCL_NOCOMMON )
  68.  
  69. ; General services
  70. DosBeep         PROTO FAR PASCAL \
  71.                 usFrequency:WORD, usDuration:WORD
  72.  
  73. ENDIF  ; common INCL_DOSPROCESS definitions
  74.  
  75. IF DEFINED( INCL_DOSPROCESS ) AND NOT DEFINED( INCL_DOSPROCESS_INCLUDED )
  76. INCL_DOSPROCESS_INCLUDED EQU 1
  77.  
  78. PIDINFO         STRUCT  2 ; pidi
  79. pidCur_         PID     0
  80. tidCur_         TID     0
  81. pidParent_      PID     0
  82. PIDINFO         ENDS
  83. PPIDINFO        TYPEDEF FAR PTR PIDINFO
  84.  
  85. PFTHREAD        TYPEDEF PROTO FAR PASCAL
  86. PFNTHREAD       TYPEDEF PTR PFTHREAD
  87.  
  88. DosCreateThread PROTO FAR PASCAL \
  89.                 pfnFun:PFNTHREAD, pTidThread:PTID, pbStack:PBYTE
  90.  
  91. DosResumeThread PROTO FAR PASCAL \
  92.                 tidThread:TID
  93.  
  94. DosSuspendThread PROTO FAR PASCAL \
  95.                 tidThread:TID
  96.  
  97. ; DosCwait fScope
  98. DCWA_PROCESS            EQU     0
  99. DCWA_PROCESSTREE        EQU     1
  100.  
  101. ; DosCwait ffWait
  102. DCWW_WAIT               EQU     0
  103. DCWW_NOWAIT             EQU     1
  104.  
  105. RESULTCODES     STRUCT  2 ; resc
  106. codeTerminate_  WORD    0
  107. codeResult_     WORD    0
  108. RESULTCODES     ENDS
  109. PRESULTCODES    TYPEDEF FAR PTR RESULTCODES
  110.  
  111. DosCwait        PROTO FAR PASCAL \
  112.                 fScope:WORD,
  113.                 fWaitFor:WORD,
  114.                 prescResults:PRESULTCODES,
  115.                 ppidProcess:PPID,
  116.                 pidWaitProcess:PID
  117.  
  118. DosSleep        PROTO FAR PASCAL \
  119.                 ulTime:DWORD
  120.  
  121. ; codeTerminate values (also passed to ExitList routines)
  122. TC_EXIT         EQU     0
  123. TC_HARDERROR    EQU     1
  124. TC_TRAP         EQU     2
  125. TC_KILLPROCESS  EQU     3
  126.  
  127. PFEXITLIST      TYPEDEF PROTO FAR PASCAL :WORD
  128. PFNEXITLIST     TYPEDEF PTR PFEXITLIST
  129.  
  130. DosEnterCritSec PROTO FAR PASCAL
  131.  
  132. DosExitCritSec  PROTO FAR PASCAL
  133.  
  134. DosExitList     PROTO FAR PASCAL \
  135.                 fFnCode:WORD, pfnFunction:PFNEXITLIST
  136.  
  137. ; DosExitList fFnCode
  138. EXLST_ADD       EQU     1
  139. EXLST_REMOVE    EQU     2
  140. EXLST_EXIT      EQU     3
  141.  
  142. DosExecPgm      PROTO FAR PASCAL \
  143.                 pchFailName:PCHAR, cbFailName:SWORD,
  144.                 fExecFlags:WORD, pszArgs:PSZ, pszEnv:PSZ,
  145.                 prescResults:PRESULTCODES, pszPgmName:PSZ
  146.  
  147. ; DosExecPgm fExecFlags
  148. EXEC_SYNC               EQU     0
  149. EXEC_ASYNC              EQU     1
  150. EXEC_ASYNCRESULT        EQU     2
  151. EXEC_TRACE              EQU     3
  152. EXEC_BACKGROUND         EQU     4
  153.  
  154. DosGetPID       PROTO FAR PASCAL \
  155.                 ppidInformation:PPIDINFO
  156.  
  157. DosGetPPID      PROTO FAR PASCAL \
  158.                 pidChild:PID, ppidParent:PPID
  159.  
  160. DosGetPrty      PROTO FAR PASCAL \
  161.                 usScope:WORD, pusPriority:PWORD, pid:WORD
  162.  
  163. DosSetPrty      PROTO FAR PASCAL \
  164.                 usScope:WORD, fPrtyClass:WORD, sChange:SWORD, id:WORD
  165.  
  166. ; DosGetPrty/DosSetPrty usScope
  167. PRTYS_PROCESS           EQU     0
  168. PRTYS_PROCESSTREE       EQU     1
  169. PRTYS_THREAD            EQU     2
  170.  
  171. ; DosGetPrty/DosSetPrty priority classes
  172. PRTYC_NOCHANGE          EQU     0
  173. PRTYC_IDLETIME          EQU     1
  174. PRTYC_REGULAR           EQU     2
  175. PRTYC_TIMECRITICAL      EQU     3
  176. PRTYC_FOREGROUNDSERVER  EQU     4
  177.  
  178. ; DosSetPrty priority deltas (sChange)
  179. PRTYD_MINIMUM           EQU     -31
  180. PRTYD_MAXIMUM           EQU     31
  181.  
  182. DosKillProcess  PROTO FAR PASCAL \
  183.                 usScope:WORD, pidProcess:PID
  184.  
  185. ; DosKillProcess usScope
  186. DKP_PROCESSTREE         EQU     0
  187. DKP_PROCESS             EQU     1
  188.  
  189. ENDIF ; INCL_DOSPROCESS
  190.  
  191. ; InfoSeg support
  192. IF DEFINED( INCL_DOSINFOSEG ) AND NOT DEFINED( INCL_DOSINFOSEG_INCLUDED )
  193. INCL_DOSINFOSEG_INCLUDED EQU 1
  194.  
  195. ; Global Information Segment
  196. GINFOSEG                STRUCT  2 ; gis
  197. time_                   DWORD   0
  198. msecs_                  DWORD   0
  199. hour_                   BYTE    0
  200. minutes_                BYTE    0
  201. seconds_                BYTE    0
  202. hundredths_             BYTE    0
  203. timezone_               WORD    0
  204. cusecTimerInterval_     WORD    0
  205. day_                    BYTE    0
  206. month_                  BYTE    0
  207. year_                   WORD    0
  208. weekday_                BYTE    0
  209. uchMajorVersion_        BYTE    0
  210. uchMinorVersion_        BYTE    0
  211. chRevisionLetter_       BYTE    0
  212. sgCurrent_              BYTE    0
  213. sgMax_                  BYTE    0
  214. cHugeShift_             BYTE    0
  215. fProtectModeOnly_       BYTE    0
  216. pidForeground_          WORD    0
  217. fDynamicSched_          BYTE    0
  218. csecMaxWait_            BYTE    0
  219. cmsecMinSlice_          WORD    0
  220. cmsecMaxSlice_          WORD    0
  221. bootdrive_              WORD    0
  222. amecRAS_                BYTE    32 DUP (0)
  223. csgWindowableVioMax_    BYTE    0
  224. csgPMMax_               BYTE    0
  225. GINFOSEG                ENDS
  226. PGINFOSEG       TYPEDEF FAR PTR GINFOSEG
  227.  
  228. ; Local Information Segment
  229.  
  230. LINFOSEG                STRUCT  2 ; lis
  231. pidCurrent_             WORD    0
  232. pidParent_              WORD    0
  233. prtyCurrent_            WORD    0
  234. tidCurrent_             WORD    0
  235. sgCurrent_              WORD    0
  236. rfProcStatus_           BYTE    0
  237. dummy1_                 BYTE    0
  238. fForeground_            WORD    0
  239. typeProcess_            BYTE    0
  240. dummy2_                 BYTE    0
  241. selEnvironment_         WORD    0
  242. offCmdLine_             WORD    0
  243. cbDataSegment_          WORD    0
  244. cbStack_                WORD    0
  245. cbHeap_                 WORD    0
  246. hmod_                   WORD    0
  247. selDS_                  WORD    0
  248. LINFOSEG                ENDS
  249. PLINFOSEG       TYPEDEF FAR PTR LINFOSEG
  250.  
  251. ; Process Type codes (local information segment typeProcess field)
  252. PT_FULLSCREEN           EQU     0       ; Full screen application
  253. PT_REALMODE             EQU     1       ; Real mode process
  254. PT_WINDOWABLEVIO        EQU     2       ; VIO windowable application
  255. PT_PM                   EQU     3       ; Presentation Manager application
  256. PT_DETACHED             EQU     4       ; Detached application
  257.  
  258. ; Process Status Flag definitions (local info seg rfProcStatus field)
  259. PS_EXITLIST             EQU     1       ; Thread is in exitlist routine
  260.  
  261. DosGetInfoSeg   PROTO FAR PASCAL \
  262.                 pselGlobal:PSEL, pselLocal:PSEL
  263.  
  264. ENDIF ; INCL_DOSINFOSEG
  265.  
  266. IFNDEF INCL_SAADEFS
  267.  
  268. ; CCHMAXPATH is the maximum fully qualified path name length including
  269. ; the drive letter, colon, backslashes and terminating NULL.
  270. CCHMAXPATH      EQU     260
  271.  
  272. ; CCHMAXPATHCOMP is the maximum individual path component name length
  273. ; including a terminating NULL.
  274. CCHMAXPATHCOMP  EQU     256
  275.  
  276. ENDIF ; INCL_SAADEFS
  277.  
  278. IF DEFINED( INCL_DOSFILEMGR ) OR NOT \
  279.    DEFINED( INCL_NOCOMMON ) AND NOT \
  280.    DEFINED( INCL_DOSFILEMGR_INCLUDED )
  281.  
  282. INCL_DOSFILEMGR_INCLUDED EQU 1
  283.  
  284. ; File manager
  285.  
  286. ; DosChgFilePtr file position codes
  287. FILE_BEGIN      EQU     0000h   ; relative to beginning of file
  288. FILE_CURRENT    EQU     0001h   ; relative to current fptr position
  289. FILE_END        EQU     0002h   ; relative to end of file
  290.  
  291. ; DosFindFirst/Next Directory handle types
  292. HDIR_SYSTEM     EQU     0001h   ; Use system handle (1)
  293. HDIR_CREATE     EQU    0ffffh   ; Allocate a new, unused handle
  294.  
  295. ; DosCopy control bits - may be or'ed together
  296. DCPY_EXISTING   EQU     0001h   ; Copy even if target exists
  297. DCPY_APPEND     EQU     0002h   ; Append to existing file, don't replace
  298.  
  299. ; Dosopen/DosQFHandState/DosQueryFileInfo et al file attributes; also
  300. ; known as Dos File Mode bits...
  301. FILE_NORMAL     EQU     0000h
  302. FILE_READONLY   EQU     0001h
  303. FILE_HIDDEN     EQU     0002h
  304. FILE_SYSTEM     EQU     0004h
  305. FILE_DIRECTORY  EQU     0010h
  306. FILE_ARCHIVED   EQU     0020h
  307.  
  308. ; DosOpen actions
  309. FILE_EXISTED    EQU     0001h
  310. FILE_CREATED    EQU     0002h
  311. FILE_TRUNCATED  EQU     0003h
  312.  
  313. ; DosOpen open flags
  314. FILE_OPEN       EQU     0001h
  315. FILE_TRUNCATE   EQU     0002h
  316. FILE_CREATE     EQU     0010h
  317.  
  318. ; applies if file already exists
  319. OPEN_ACTION_FAIL_IF_EXISTS      EQU     0000h ; ---- ---- ---- 0000
  320. OPEN_ACTION_OPEN_IF_EXISTS      EQU     0001h ; ---- ---- ---- 0001
  321. OPEN_ACTION_REPLACE_IF_EXISTS   EQU     0002h ; ---- ---- ---- 0010
  322.  
  323. ; applies if file does not exist
  324. OPEN_ACTION_FAIL_IF_NEW         EQU     0000h ; ---- ---- 0000 ----
  325. OPEN_ACTION_CREATE_IF_NEW       EQU     0010h ; ---- ---- 0001 ----
  326.  
  327. ; DosOpen/DosSetFHandState flags
  328. OPEN_ACCESS_READONLY            EQU     0000h ; ---- ---- ---- -000
  329. OPEN_ACCESS_WRITEONLY           EQU     0001h ; ---- ---- ---- -001
  330. OPEN_ACCESS_READWRITE           EQU     0002h ; ---- ---- ---- -010
  331. OPEN_SHARE_DENYREADWRITE        EQU     0010h ; ---- ---- -001 ----
  332. OPEN_SHARE_DENYWRITE            EQU     0020h ; ---- ---- -010 ----
  333. OPEN_SHARE_DENYREAD             EQU     0030h ; ---- ---- -011 ----
  334. OPEN_SHARE_DENYNONE             EQU     0040h ; ---- ---- -100 ----
  335. OPEN_FLAGS_NOINHERIT            EQU     0080h ; ---- ---- 1--- ----
  336. OPEN_FLAGS_NO_LOCALITY          EQU     0000h ; ---- -000 ---- ----
  337. OPEN_FLAGS_SEQUENTIAL           EQU     0100h ; ---- -001 ---- ----
  338. OPEN_FLAGS_RANDOM               EQU     0200h ; ---- -010 ---- ----
  339. OPEN_FLAGS_RANDOMSEQUENTIAL     EQU     0300h ; ---- -011 ---- ----
  340. OPEN_FLAGS_NO_CACHE             EQU     1000h ; ---1 ---- ---- ----
  341. OPEN_FLAGS_FAIL_ON_ERROR        EQU     2000h ; --1- ---- ---- ----
  342. OPEN_FLAGS_WRITE_THROUGH        EQU     4000h ; -1-- ---- ---- ----
  343. OPEN_FLAGS_DASD                 EQU     8000h ; 1--- ---- ---- ----
  344.  
  345. ; DosSearchPath constants from 1.1 (backword compatability)
  346. SEARCH_PATH             EQU     0000h
  347. SEARCH_CUR_DIRECTORY    EQU     0001h
  348. SEARCH_ENVIRONMENT      EQU     0002h
  349. SEARCH_IGNORENETERRS    EQU     0004h
  350.  
  351. ; DosSearchPath constants for 1.2 and later
  352. DSP_PATH                EQU     0       ; path is specified in parameter
  353. DSP_CUR_DIRECTORY       EQU     1       ; current dir will be searched first
  354. DSP_ENVIRONMENT         EQU     2       ; from envirnoment variable
  355. DSP_IGNORENETERR        EQU     4       ; ignore net errs & continue search
  356.  
  357. DosSearchPath   PROTO FAR PASCAL \
  358.                 fsSearch:WORD, pszPath:PSZ, pszFName:PSZ,
  359.                 pBuf:PBYTE, cbBuf:WORD
  360.  
  361.  
  362. ; DosFileIO
  363.  
  364. ; File IO command words
  365. FIO_LOCK        EQU     0       ; Lock Files
  366. FIO_UNLOCK      EQU     1       ; Unlock Files
  367. FIO_SEEK        EQU     2       ; Seek (set file ptr)
  368. FIO_READ        EQU     3       ; File Read
  369. FIO_WRITE       EQU     4       ; File Write
  370.  
  371. ; Lock Sharing Modes
  372. FIO_NOSHARE     EQU     0       ; None
  373. FIO_SHAREREAD   EQU     1       ; Read-Only
  374.  
  375. FIOLOCKCMD      STRUCT  2       ; FLC  FileLockCmd prefix
  376. usCmd_          WORD    0       ; Cmd = FIO_LOCK
  377. cLockCnt_       WORD    0       ; Lock records that follow
  378. cTimeOut_       DWORD   0       ; in Msec
  379. FIOLOCKCMD      ENDS
  380. PFIOLOCKCMD     TYPEDEF FAR PTR FIOLOCKCMD
  381.  
  382. FIOLOCKREC      STRUCT  2       ; FLR FileLockRecord
  383. fShare_         WORD    0       ; FIO_NOSHARE or FIO_SHAREREAD
  384. cbStart_        DWORD   0       ; Starting offset for lock region
  385. cbLength_       DWORD   0       ; Length of lock region
  386. FIOLOCKREC      ENDS
  387. PFIOLOCKREC     TYPEDEF FAR PTR FIOLOCKREC
  388.  
  389. FIOUNLOCKCMD    STRUCT  2       ; FUC FileUnlockCmd prefix
  390. usCmd_          WORD    0       ; Cmd = FIO_UNLOCK
  391. cUnlockCnt_     WORD    0       ; Unlock records that follow
  392. FIOUNLOCKCMD    ENDS
  393. PFIOUNLOCKCMD   TYPEDEF FAR PTR FIOUNLOCKCMD
  394.  
  395. FIOUNLOCKREC    STRUCT  2       ; FUR FileUnlockRecord
  396. cbStart_        DWORD   0       ; Starting offset for unlock region
  397. cbLength_       DWORD   0       ; Length of unlock region
  398. FIOUNLOCKREC    ENDS
  399. PFIOUNLOCKREC   TYPEDEF FAR PTR FIOUNLOCKREC
  400.  
  401. FIOSEEKCMD      STRUCT  2       ; FSC Seek command structure
  402. usCmd_          WORD    0       ; Cmd = FIO_SEEK
  403. fsMethod_       WORD    0       ; One of&gml FPM_BEGINNING, FPM_CURRENT,
  404.                                 ; or FPM_END
  405. cbDistance_     DWORD   0       ; Byte offset for seek
  406. cbNewPosition_  DWORD   0       ; Bytes from start of file after seek
  407. FIOSEEKCMD      ENDS
  408. PFIOSEEKCMD     TYPEDEF FAR PTR FIOSEEKCMD
  409.  
  410. FIOREADWRITE    STRUCT  2       ; FRWC Read&Write command structure
  411. usCmd_          WORD    0       ; Cmd = FIO_READ or FIO_WRITE
  412. pbBuffer_       PVOID   0       ; Pointer to data buffer
  413. cbBufferLen_    WORD    0       ; Bytes in buffer or max size
  414. cbActualLen_    WORD    0       ; Bytes actually read/written
  415. FIOREADWRITE    ENDS
  416. PFIOREADWRITE   TYPEDEF FAR PTR FIOREADWRITE
  417.  
  418. ; EA Info Levels & Find First/Next
  419. ; API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo,
  420. ;        DosSetPathInfo
  421.  
  422. ; File info levels : All listed API's
  423. FIL_STANDARD            EQU     1       ; Info level 1, standard file info
  424. FIL_QUERYEASIZE         EQU     2       ; Level 2, return Full EA size
  425. FIL_QUERYEASFROMLIST    EQU     3       ; Level 3, return requested EA's
  426.  
  427. ; File info levels: Dos...PathInfo only
  428. FIL_QUERYFULLNAME       EQU     5       ; Level 5, return fully qualified
  429.                                         ; name of file
  430. FIL_NAMEISVALID         EQU     6       ; Level 6, check validity of
  431.                                         ; file/path name for this FSD
  432.  
  433. ; DosFindNotifyFirst
  434. FNOTIL_STANDARD         EQU     1       ; Find-Notify Info level 1&gml Return
  435.                                         ; standard directory change info
  436. ; DosFsAttach
  437. ; Attact or detach
  438. FSATTACH                EQU     0       ; Attach file server
  439. FSDETACH                EQU     1       ; Detach file server
  440.  
  441. ; DosFsCtl
  442. ; Routing type
  443. FSCTL_HANDLE            EQU     1       ; File Handle directs req routing
  444. FSCTL_PATHNAME          EQU     2       ; Path Name directs req routing
  445. FSCTL_FSDNAME           EQU     3       ; FSD Name directs req routing
  446.  
  447. ; DosQueryFSAttach
  448. ; Information level types (defines method of query)
  449. FSAIL_QUERYNAME         EQU     1       ; Return data for a Drive or Device
  450. FSAIL_DEVNUMBER         EQU     2       ; Return data for Ordinal Device #
  451. FSAIL_DRVNUMBER         EQU     3       ; Return data for Ordinal Drive #
  452.  
  453. ; Item types (from data structure item "iType")
  454. FSAT_CHARDEV            EQU     1       ; Resident character device
  455. FSAT_PSEUDODEV          EQU     2       ; Pseudo-character device
  456. FSAT_LOCALDRV           EQU     3       ; Local drive
  457. FSAT_REMOTEDRV          EQU     4       ; Remote drive attached to FSD
  458.  
  459. ; Data structure for QFSAttach
  460. FSQBUFFER       STRUCT  2               ; fsqbf
  461. iType_          WORD    0               ; Item type
  462. cbName_         WORD    0               ; Length of item name, sans NULL
  463. szName_         BYTE    1 DUP (0)       ; ASCIIZ item name               ;??
  464. cbFSDName_      WORD    0               ; Length of FSD name, sans NULL
  465. szFSDName_      BYTE    1 DUP (0)       ; ASCIIZ FSD name                ;??
  466. cbFSAData_      WORD    0               ; Length of FSD Attach data returned
  467. rgFSAData_      BYTE    1 DUP (0)       ; FSD Attach data from FSD       ;??
  468. FSQBUFFER       ENDS
  469. PFSQBUFFER      TYPEDEF FAR PTR FSQBUFFER
  470.  
  471. ; File System Drive Information&gml DosQFSInfo DosSetFSInfo
  472.  
  473. ; FS Drive Info Levels
  474. FSIL_ALLOC              EQU     1       ; Drive allocation info (Query only)
  475. FSIL_VOLSER             EQU     2       ; Drive Volume/Serial information
  476.  
  477. ; HANDTYPE values
  478. HANDTYPE_FILE           EQU     0000h
  479. HANDTYPE_DEVICE         EQU     0001h
  480. HANDTYPE_PIPE           EQU     0002h
  481. HANDTYPE_NETWORK        EQU     8000h
  482.  
  483. ; DosQHandType
  484. ; Handle classes (low 8 bits of Handle Type)
  485. FHT_DISKFILE            EQU     0000h       ; Disk file handle
  486. FHT_CHRDEV              EQU     0001h       ; Character device handle
  487. FHT_PIPE                EQU     0002h       ; Pipe handle
  488.  
  489. ; Handle bits (high 8 bits of Handle Type)
  490. FHB_DSKREMOTE           EQU     8000h       ; Remote disk
  491. FHB_CHRDEVREMOTE        EQU     8001h       ; Remote character device
  492. FHB_PIPEREMOTE          EQU     8002h       ; Remote pipe
  493.  
  494. IFNDEF INCL_SAADEFS
  495.  
  496. ; File time and date types
  497. FTIME   RECORD  twosecs:5, minutes:6, hours:5   ; ftime
  498. PFTIME  TYPEDEF FAR PTR FTIME
  499.  
  500. FDATE   RECORD  day:5, month:4, year:7          ; fdate
  501. PFDATE  TYPEDEF FAR PTR FDATE
  502.  
  503. FILEFINDBUF     STRUCT  2 ; findbuf
  504. fdateCreation_          FDATE   <>
  505. ftimeCreation_          FTIME   <>
  506. fdateLastAccess_        FDATE   <>
  507. ftimeLastAccess_        FTIME   <>
  508. fdateLastWrite_         FDATE   <>
  509. ftimeLastWrite_         FTIME   <>
  510. cbFile_         DWORD   0
  511. cbFileAlloc_    DWORD   0
  512. attrFile_       WORD    0
  513. cchName_        BYTE    0
  514. achName_        SBYTE   CCHMAXPATHCOMP DUP (0)
  515. FILEFINDBUF     ENDS
  516. PFILEFINDBUF    TYPEDEF FAR PTR FILEFINDBUF
  517.  
  518. FILEFINDBUF2    STRUCT  2 ; findbuf2
  519. fdateCreation_          FDATE   <>
  520. ftimeCreation_          FTIME   <>
  521. fdateLastAccess_        FDATE   <>
  522. ftimeLastAccess_        FTIME   <>
  523. fdateLastWrite_         FDATE   <>
  524. ftimeLastWrite_         FTIME   <>
  525. cbFile_         DWORD   0
  526. cbFileAlloc_    DWORD   0
  527. attrFile_       WORD    0
  528. cbList_         DWORD   0
  529. cchName_        BYTE    0
  530. achName_        SBYTE   CCHMAXPATHCOMP DUP (0)
  531. FILEFINDBUF2    ENDS
  532. PFILEFINDBUF2   TYPEDEF FAR PTR FILEFINDBUF2
  533.  
  534. ; extended attribute structures
  535. GEA             STRUCT  2               ; gea
  536. cbName_         BYTE    0               ; name length not including NULL
  537. szName_         SBYTE   1 DUP (0)       ; attribute name    ;???
  538. GEA             ENDS
  539. PGEA            TYPEDEF FAR PTR GEA
  540.  
  541. GEALIST         STRUCT  2               ; geal
  542. cbList_         DWORD   0               ; total bytes of structure inc full list
  543. list_           GEA     1 DUP (<>)      ; variable length GEA structures
  544. GEALIST         ENDS
  545. PGEALIST        TYPEDEF FAR PTR GEALIST
  546.  
  547. FEA             STRUCT  2       ; fea
  548. fEA_            BYTE    0       ; flags
  549. cbName_         BYTE    0       ; name length not including NULL
  550. cbValue_        WORD    0       ; value length
  551. FEA             ENDS
  552. PFEA            TYPEDEF FAR PTR FEA
  553.  
  554. ; flags for _FEA.fEA
  555.  
  556. ; need EA bit
  557. FEA_NEEDEA      EQU     0080h
  558.  
  559. FEALIST         STRUCT  2       ; feal
  560. cbList_         DWORD   0       ; total bytes of structure inc full list
  561. list_           FEA     1 DUP (<>) ; variable length FEA structures
  562. FEALIST         ENDS
  563. PFEALIST        TYPEDEF FAR PTR FEALIST
  564.  
  565. EAOP            STRUCT  2               ; eaop
  566. fpGEAList_      PGEALIST        0       ; general EA list
  567. fpFEAList_      PFEALIST        0       ; full EA list
  568. oError_         DWORD           0
  569. EAOP            ENDS
  570. PEAOP           TYPEDEF FAR PTR EAOP
  571.  
  572. ; Equates for EA types
  573. ;
  574. ; Values 0xFFFE thru 0x8000 are reserved.
  575. ; Values 0x0000 thru 0x7fff are user definable.
  576. ; Value  0xFFFC is not used
  577.  
  578. EAT_BINARY      EQU     0fffeh  ; length preceeded binary
  579. EAT_ASCII       EQU     0fffdh  ; length preceeded ASCII
  580. EAT_BITMAP      EQU     0fffbh  ; length preceeded bitmap
  581. EAT_METAFILE    EQU     0fffah  ; length preceeded metafile
  582. EAT_ICON        EQU     0fff9h  ; length preceeded icon
  583. EAT_EA          EQU     0ffeeh  ; length preceeded ASCII extended attribute
  584.                                 ; name of associated data (#include)
  585. EAT_MVMT        EQU     0ffdfh  ; multi-valued, multi-typed field
  586. EAT_MVST        EQU     0ffdeh  ; multi-valued, single-typed field
  587. EAT_ASN1        EQU     0ffddh  ; ASN.1 field
  588.  
  589. ENDIF ; INCL_SAADEFS
  590.  
  591. DosOpen         PROTO FAR PASCAL \
  592.                 pszFname:PSZ, phfOpen:PHFILE, pusAction:PWORD,
  593.                 ulFSize:DWORD, usAttr:WORD, fsOpenFlags:WORD,
  594.                 fsOpenMode:WORD, ulReserved:DWORD
  595.  
  596. DosOpen2        PROTO FAR PASCAL \
  597.                 pszFname:PSZ, phf:PHFILE, pusAction:PWORD,
  598.                 ulFSize:DWORD, usAttr:WORD, usOpenFlags:WORD,
  599.                 usOpenMode:DWORD, pvEABuf:PEAOP, ulReserved:DWORD
  600.  
  601. DosClose        PROTO FAR PASCAL \
  602.                 hf:HFILE
  603.  
  604. DosRead         PROTO FAR PASCAL \
  605.                 hf:HFILE, pBuf:PVOID, cbBuf:WORD, pcbBytesRead:PWORD
  606.  
  607. DosWrite        PROTO FAR PASCAL \
  608.                 hf:HFILE, bBuf:PVOID, cbBuf:WORD, pcbBytesWritten:PWORD
  609.  
  610. DosOplockRelease PROTO FAR PASCAL \
  611.                 cookie:DWORD, procBlkKey:WORD
  612.  
  613. DosOplockWait   PROTO FAR PASCAL \
  614.                 pcookie:PDWORD, procBlkKey:PDWORD
  615.  
  616. ; File system shutdown
  617. DosShutdown     PROTO FAR PASCAL \
  618.                 ulReserved:DWORD
  619.  
  620. ; File time and date types
  621. FILESTATUS      STRUCT  2 ; fsts
  622. fdateCreation_          FDATE   <>
  623. ftimeCreation_          FTIME   <>
  624. fdateLastAccess_        FDATE   <>
  625. ftimeLastAccess_        FTIME   <>
  626. fdateLastWrite_         FDATE   <>
  627. ftimeLastWrite_         FTIME   <>
  628. cbFile_         DWORD   0
  629. cbFileAlloc_    DWORD   0
  630. attrFile_       WORD    0
  631. FILESTATUS      ENDS
  632. PFILESTATUS     TYPEDEF FAR PTR FILESTATUS
  633.  
  634. FILESTATUS2     STRUCT  2 ; fsts2
  635. fdateCreation_          FDATE   <>
  636. ftimeCreation_          FTIME   <>
  637. fdateLastAccess_        FDATE   <>
  638. ftimeLastAccess_        FTIME   <>
  639. fdateLastWrite_         FDATE   <>
  640. ftimeLastWrite_         FTIME   <>
  641. cbFile_         DWORD   0
  642. cbFileAlloc_    DWORD   0
  643. attrFile_       WORD    0
  644. cbList          DWORD   0
  645. FILESTATUS2     ENDS
  646. PFILESTATUS2    TYPEDEF FAR PTR FILESTATUS2
  647.  
  648. FSALLOCATE      STRUCT  2 ; fsalloc
  649. ulReserved_     DWORD   0
  650. cSectorUnit_    DWORD   0
  651. cUnit_          DWORD   0
  652. cUnitAvail_     DWORD   0
  653. cbSector_       WORD    0
  654. FSALLOCATE      ENDS
  655. PFSALLOCATE     TYPEDEF FAR PTR FSALLOCATE
  656.  
  657. VOLUMELABEL     STRUCT  2 ; vol
  658. cch_            BYTE    0
  659. szVolLabel_     SBYTE   12 DUP (0)
  660. VOLUMELABEL     ENDS
  661. PVOLUMELABEL    TYPEDEF FAR PTR VOLUMELABEL
  662.  
  663. FSINFO          STRUCT  2       ; fsinf
  664. ulVSN_          DWORD           0
  665. vol_            VOLUMELABEL     <>      ;???
  666. FSINFO          ENDS
  667. PFSINFO         TYPEDEF FAR PTR FSINFO
  668.  
  669. FILELOCK        STRUCT  2 ; flock
  670. lOffset_        SDWORD  0
  671. lRange_         SDWORD  0
  672. FILELOCK        ENDS
  673. PFILELOCK       TYPEDEF FAR PTR FILELOCK
  674.  
  675. HDIR            TYPEDEF         WORD    ; hdir
  676. PHDIR           TYPEDEF         FAR PTR HDIR
  677.  
  678. DosDelete       PROTO FAR PASCAL \
  679.                 pszFName:PSZ, ulReserverd:DWORD
  680.  
  681. DosDupHandle    PROTO FAR PASCAL \
  682.                 hfOld:HFILE, phfNew:PHFILE
  683.  
  684. DosQFHandState  PROTO FAR PASCAL \
  685.                 hf:HFILE, pfsOpenMode:PWORD
  686.  
  687. DosSetFHandState PROTO FAR PASCAL \
  688.                 hf:HFILE, fsState:WORD
  689.  
  690. DosQHandType    PROTO FAR PASCAL \
  691.                 hf:HFILE, pfsType:PWORD, pusDevAttr:PWORD
  692.  
  693. DosReadAsync    PROTO FAR PASCAL \
  694.                 hf:HFILE, hsemRam:PDWORD, pusErrCode:PWORD,
  695.                 pBuf:PVOID, cbBuf:WORD, pcbBytesRead:PWORD
  696.  
  697. DosWriteAsync   PROTO FAR PASCAL \
  698.                 hf:HFILE, hsemRam:PDWORD, pusErrCode:PWORD,
  699.                 pBuf:PVOID, cbBuf:WORD, pcbBytesWritten:PWORD
  700.  
  701. DosFindFirst    PROTO FAR PASCAL \
  702.                 pszFSpec:PSZ, phd:PHDIR, usAttr:WORD,
  703.                 pffb:PFILEFINDBUF, cbBuf:WORD, pcSearch:PWORD,
  704.                 ulReserved:DWORD
  705.  
  706. DosFindFirst2   PROTO FAR PASCAL \
  707.                 pszFSpec:PSZ, phd:PHDIR, usAttr:WORD, pBuf:PVOID,
  708.                 cbBuf:WORD, pcSearch:PWORD, usInfoLevel:WORD,
  709.                 ulReserved:DWORD
  710.  
  711. DosFindNext     PROTO FAR PASCAL \
  712.                 hd:HDIR, pffb:PFILEFINDBUF, cbBuf:WORD, pcSearch:PWORD
  713.  
  714. DosFindClose    PROTO FAR PASCAL \
  715.                 hd:HDIR
  716.  
  717. DosFSAttach     PROTO FAR PASCAL \
  718.                 pszDevName:PSZ, pszFSD:PSZ, pData:PBYTE, cbData:WORD,
  719.                 fsOp:WORD, ulReserved:DWORD
  720.  
  721. DosQFSAttach    PROTO FAR PASCAL \
  722.                 pszDev:PSZ, usOrdinal:WORD, usInfoLevel:WORD,
  723.                 pFSAttBuf:PBYTE, cbBuf:PWORD, ulReserved:DWORD
  724.  
  725. DosFSCtl        PROTO FAR PASCAL \
  726.                 pData:PBYTE, cbData:WORD, pcbData:PWORD, pParms:PBYTE,
  727.                 cbParms:WORD, pcbParms:PWORD, usFunCode:WORD,
  728.                 pszRoute:PSZ, hf:HFILE, usRouteMethod:WORD, ulReserved:DWORD
  729.  
  730. DosNewSize      PROTO FAR PASCAL \
  731.                 hf:HFILE, ulNewSize:DWORD
  732.  
  733. DosBufReset     PROTO FAR PASCAL \
  734.                 hf:HFILE
  735.  
  736. DosChgFilePtr   PROTO FAR PASCAL \
  737.                 hf:HFILE, lOffset:SDWORD, fsMethod:WORD, pulNewOffset:PDWORD
  738.  
  739. DosSetFilePtr   PROTO FAR PASCAL \
  740.                 hf:HFILE, lOffset:SDWORD, fsMethod:WORD, pulNewOffset:PDWORD
  741.  
  742. DosFileLocks    PROTO FAR PASCAL \
  743.                 hf:HFILE, pUnlock:PFILELOCK, pLock:PFILELOCK
  744.  
  745. DosMove         PROTO FAR PASCAL \
  746.                 pszOld:PSZ, pszNew:PSZ, ulReserved:DWORD
  747.  
  748. DosCopy         PROTO FAR PASCAL \
  749.                 pszSrc:PSZ, pszDst:PSZ, usOpt:WORD, ulReserved:DWORD
  750.  
  751. DosEditName     PROTO FAR PASCAL \
  752.                 usEditLevel:WORD, pszSrc:PSZ, pszEdit:PSZ, pszDst:PSZ,
  753.                 cbDst:WORD
  754.  
  755.  
  756. DosFileIO       PROTO FAR PASCAL \
  757.                 hf:HFILE, pbCmd:PBYTE, cbCmd:WORD, pusErr:PWORD
  758.  
  759. DosMkDir        PROTO FAR PASCAL \
  760.                 pszDirName:PSZ, usReserved:DWORD
  761.  
  762. DosMkDir2       PROTO FAR PASCAL \
  763.                 pszDir:PSZ, pBuf:PEAOP, ulReserved:DWORD
  764.  
  765. DosRmDir        PROTO FAR PASCAL \
  766.                 pszDir:PSZ, ulReserved:DWORD
  767.  
  768. DosSelectDisk   PROTO FAR PASCAL \
  769.                 usDrvNum:WORD
  770.  
  771. DosQCurDisk     PROTO FAR PASCAL \
  772.                 pusDrvNum:PWORD, pulLogDrvMap:PDWORD
  773.  
  774. DosChDir        PROTO FAR PASCAL \
  775.                 pszDir:PSZ, ulReserved:DWORD
  776.  
  777. DosQCurDir      PROTO FAR PASCAL \
  778.                 usDrvNum:WORD, pszPathBuf:PSZ, pcbPathBuf:PWORD
  779.  
  780. DosQFSInfo      PROTO FAR PASCAL \
  781.                 usDrvNum:WORD, usInfoLevel:WORD, pbInfo:PBYTE, cbInfo:WORD
  782.  
  783. DosSetFSInfo    PROTO FAR PASCAL \
  784.                 usDrvNum:WORD, usInfoLevel:WORD, pBuf:FAR PTR BYTE, cbBuf:WORD
  785.  
  786. DosQVerify      PROTO FAR PASCAL \
  787.                 pfVerifyOn:FAR PTR WORD
  788.  
  789. DosSetVerify    PROTO FAR PASCAL \
  790.                 fVerify:WORD
  791.  
  792. DosSetMaxFH     PROTO FAR PASCAL \
  793.                 usHandles:WORD
  794.  
  795. DosQFileInfo    PROTO FAR PASCAL \
  796.                 hf:HFILE, usInfoLevel:WORD, pInfoBuf:PVOID, cbInfoBuf:WORD
  797.  
  798. DosSetFileInfo  PROTO FAR PASCAL \
  799.                 hf:HFILE, usInfoLevel:WORD, pInfoBuf:PBYTE, cbInfoBuf:WORD
  800.  
  801. DosQPathInfo    PROTO FAR PASCAL \
  802.                 pszPath:PSZ, usInfoLevel:WORD, pInfoBuf:PBYTE,
  803.                 cbInfoBuf:WORD, ulReserved:DWORD
  804.  
  805. DosSetPathInfo  PROTO FAR PASCAL \
  806.                 pszPath:PSZ, usInfoLevel:WORD, pInfoBuf:FAR PTR BYTE, cbInfoBuf:WORD, usFlags:WORD, ulReserved:DWORD
  807.  
  808.  
  809. ; defines for DosSetPathInfo -fsOptions flag
  810.  
  811. DSPI_WRTTHRU    EQU     0010h       ; write through
  812. DosQFileMode    PROTO FAR PASCAL \
  813.                 pszFName:PSZ, pusAttr:PWORD, ulReserved:DWORD
  814.  
  815. DosSetFileMode  PROTO FAR PASCAL \
  816.                 pszFName:PSZ, usAttr:WORD, ulReserved:DWORD
  817.  
  818. ; constants for DosEnumAttribute
  819. ENUMEA_REFTYPE_FHANDLE  EQU     0
  820. ENUMEA_REFTYPE_PATH     EQU     1
  821. ENUMEA_LEVEL_NO_VALUE   EQU     1
  822.  
  823. DosEnumAttribute PROTO FAR PASCAL \
  824.                 usRefType:WORD, pvFile:PVOID, ulEntry:DWORD, pvBuf:PVOID,
  825.                 cbBuf:DWORD, pulCount:PDWORD, ulInfoLevel:DWORD,
  826.                 ulReserved:DWORD
  827.  
  828. ; ENUMEA_LEVEL_NO_VALUE info returned from DosEnumAttribute
  829. DENA1           STRUCT  2               ; dena
  830. reserved_       BYTE    0               ; 0
  831. cbName_         BYTE    0               ; length of name exculding NULL
  832. cbValue_        WORD    0               ; length of value
  833. szName_         BYTE    1 DUP (0)       ; variable length asciiz name
  834. DENA1           ENDS
  835. PDENA1          TYPEDEF FAR PTR DENA1
  836.  
  837. ENDIF ; common INCL_DOSFILEMGR
  838.  
  839. IF DEFINED( INCL_DOSMEMMGR ) OR NOT DEFINED( INCL_NOCOMMON )
  840. ; Memory management
  841.  
  842. DosAllocSeg     PROTO FAR PASCAL \
  843.                 cbSize:WORD, pselector:PSEL, fsAlloc:WORD
  844.  
  845. DosReallocSeg   PROTO FAR PASCAL \
  846.                 cbNewSize:WORD, selector:SEL
  847.  
  848. DosFreeSeg      PROTO FAR PASCAL \
  849.                 selector:SEL
  850.  
  851. DosGiveSeg      PROTO FAR PASCAL \
  852.                 selector:SEL, pidProcess:PID, pSelRecipient:PSEL
  853.  
  854. DosGetSeg       PROTO FAR PASCAL \
  855.                 selector:SEL
  856.  
  857. DosSizeSeg      PROTO FAR PASCAL \
  858.                 selector:SEL, pcbSize:PDWORD
  859.  
  860. ; Segment attribute flags (used with DosAllocSeg)
  861. SEG_NONSHARED   EQU     0000h
  862. SEG_GIVEABLE    EQU     0001h
  863. SEG_GETTABLE    EQU     0002h
  864. SEG_DISCARDABLE EQU     0004h
  865. SEG_SIZEABLE    EQU     0008h
  866.  
  867. ENDIF ; common INCL_DOSMEMMGR
  868.  
  869. IF DEFINED( INCL_DOSMEMMGR ) AND NOT DEFINED( INCL_DOSMEMMGR_INCLUDED )
  870. INCL_DOSMEMMGR_INCLUDED EQU 1
  871.  
  872. DosAllocHuge    PROTO FAR PASCAL \
  873.                 cSegs:WORD, cbPartialSeg:WORD, pselector:PSEL,
  874.                 cMaxSegs:WORD, fsAlloc:WORD
  875.  
  876. DosReallocHuge  PROTO FAR PASCAL \
  877.                 cSegs:WORD, cbPartialSeg:WORD, selector:SEL
  878.  
  879. DosGetHugeShift PROTO FAR PASCAL \
  880.                 pusShiftCount:PWORD
  881.  
  882. DosAllocShrSeg  PROTO FAR PASCAL \
  883.                 cbSeg:WORD, pszSegName:PSZ, pselector:PSEL
  884.  
  885. DosLockSeg      PROTO FAR PASCAL \
  886.                 selector:SEL
  887.  
  888. DosUnlockSeg    PROTO FAR PASCAL \
  889.                 selector:SEL
  890.  
  891. DosGetShrSeg    PROTO FAR PASCAL \
  892.                 pszSegName:PSZ, pselector:PSEL
  893.  
  894. DosMemAvail     PROTO FAR PASCAL \
  895.                 pcbFree:PDWORD
  896.  
  897. DosCreateCSAlias PROTO FAR PASCAL \
  898.                 selDS:SEL, pselCS:PSEL
  899.  
  900. DosSubAlloc     PROTO FAR PASCAL \
  901.                 selector:SEL, pusOffset:PWORD, cb:WORD
  902.  
  903. DosSubFree      PROTO FAR PASCAL \
  904.                 selector:SEL, offBlock:WORD, cb:WORD
  905.  
  906. DosSubSet       PROTO FAR PASCAL \
  907.                 selector:SEL, fFlags:WORD, cbNew:WORD
  908.  
  909. ENDIF ; INCL_DOSMEMMGR
  910.  
  911. IF DEFINED( INCL_DOSSEMAPHORES ) OR NOT DEFINED( INCL_NOCOMMON )
  912.  
  913. ; Semaphore support
  914.  
  915. SEM_INDEFINITE_WAIT     EQU     -1
  916. SEM_IMMEDIATE_RETURN    EQU     0
  917.  
  918. DosSemClear     PROTO FAR PASCAL \
  919.                 hsm:HSEM
  920.  
  921. DosSemSet       PROTO FAR PASCAL \
  922.                 hsm:HSEM
  923.  
  924. DosSemWait      PROTO FAR PASCAL \
  925.                 hsm:HSEM, lTimeOut:SDWORD
  926.  
  927. DosSemSetWait   PROTO FAR PASCAL \
  928.                 hsm:HSEM, lTimeOut:SDWORD
  929.  
  930. DosSemRequest   PROTO FAR PASCAL \
  931.                 hsm:HSEM, lTimeOut:SDWORD
  932.  
  933. ENDIF ; common INCL_DOSSEMAPHORES
  934.  
  935. IF DEFINED( INCL_DOSSEMAPHORES ) AND NOT \
  936.    DEFINED( INCL_DOSSEMAPHORES_INCLUDED )
  937. INCL_DOSSEMAPHORES_INCLUDED EQU 1
  938.  
  939. HSYSSEM         TYPEDEF FAR PTR ; hssm
  940. PHSYSSEM        TYPEDEF FAR PTR HSYSSEM
  941.  
  942. DosCreateSem    PROTO FAR PASCAL \
  943.                 fExclusive:WORD, phsem:PHSYSSEM, pszSemName:PSZ
  944.  
  945. CSEM_PRIVATE    EQU     0
  946. CSEM_PUBLIC     EQU     1
  947.  
  948. DosOpenSem      PROTO FAR PASCAL \
  949.                 phsm:PHSEM, pszSemName:PSZ
  950.  
  951. DosCloseSem     PROTO FAR PASCAL \
  952.                 hsm:HSEM
  953.  
  954. MUXSEM          STRUCT  2 ; mxs
  955. zero_           WORD    0
  956. hsem_           HSEM    0
  957. MUXSEM          ENDS
  958. PMUXSEM         TYPEDEF FAR PTR MUXSEM
  959.  
  960. MUXSEMLIST      STRUCT  2 ; mxsl
  961. cmxs_           WORD    0
  962. amxs_           MUXSEM  16 DUP (<>)
  963. MUXSEMLIST      ENDS
  964. PMUXSEMLIST     TYPEDEF FAR PTR MUXSEMLIST
  965.  
  966. ; Since a MUXSEMLIST structure is actually a variable length
  967. ; structure, the following macro may be used to define a MUXSEMLIST
  968. ; structure having size elements, named "name".
  969.  
  970.  
  971.  
  972. DEFINEMUXSEMLIST MACRO name_:REQ, size_:REQ ;???
  973. name_   STRUCT  2
  974. cmxs    WORD    0
  975. amxs    MUXSEM  size_ DUP (<>)
  976. name_   ENDS
  977. ENDM
  978.  
  979. ; This function actually takes a far pointer to a MUXSEMLIST structure
  980. ; as its second parameter, but in order to allow its use with the
  981. ; DEFINEMUXSEMLIST macro, it is declared here as PVOID.
  982. ;
  983. DosMuxSemWait   PROTO FAR PASCAL \
  984.                 pisemCleared:PWORD, pmsxl:PVOID, lTimeOut:SDWORD
  985.  
  986. ; Fast safe ram semaphores
  987. DOSFSRSEM       STRUCT  2 ; dosfsrs
  988. cb_             WORD    0
  989. pid_            PID     0
  990. tid_            TID     0
  991. cUsage_         WORD    0
  992. client_         WORD    0
  993. sem_            DWORD   0
  994. DOSFSRSEM       ENDS
  995. PDOSFSRSEM      TYPEDEF FAR PTR DOSFSRSEM
  996.  
  997. DosFSRamSemRequest PROTO FAR PASCAL \
  998.                 pdosfsrs:PDOSFSRSEM, lTimeOut:SDWORD
  999.  
  1000. DosFSRamSemClear PROTO FAR PASCAL \
  1001.                 pdosfsrs:PDOSFSRSEM
  1002.  
  1003. ENDIF ; INCL_DOSSEMAPHORES
  1004.  
  1005. IF DEFINED( INCL_DOSDATETIME ) OR NOT \
  1006.    DEFINED( INCL_NOCOMMON ) AND NOT \
  1007.    DEFINED( INCL_DOSDATETIME_INCLUDED )
  1008.  
  1009. ; Time support
  1010. DATETIME        STRUCT  2 ; date
  1011. hours_          BYTE    0
  1012. minutes_        BYTE    0
  1013. seconds_        BYTE    0
  1014. hundredths_     BYTE    0
  1015. day_            BYTE    0
  1016. month_          BYTE    0
  1017. year_           WORD    0
  1018. timezone_       SWORD   0
  1019. weekday_        BYTE    0
  1020. DATETIME        ENDS
  1021. PDATETIME       TYPEDEF FAR PTR DATETIME
  1022.  
  1023. DosGetDateTime  PROTO FAR PASCAL \
  1024.                 pdatetime:PDATETIME
  1025.  
  1026. DosSetDateTime  PROTO FAR PASCAL \
  1027.                 pdatetime:PDATETIME
  1028.  
  1029. ENDIF ; common INCL_DOSDATETIME
  1030.  
  1031. IF DEFINED( INCL_DOSDATETIME ) AND NOT DEFINED( INCL_DOSDATETIME_INCLUDED )
  1032. INCL_DOSDATETIME_INCLUDED EQU 1
  1033.  
  1034. HTIMER          TYPEDEF         WORD
  1035. PHTIMER         TYPEDEF         FAR PTR HTIMER
  1036.  
  1037. DosTimerAsync   PROTO FAR PASCAL \
  1038.                 ulTime:DWORD, hsm:HSEM, phtime:PHTIMER
  1039.  
  1040. DosTimerStart   PROTO FAR PASCAL \
  1041.                 ulTime:DWORD, hsm:HSEM, phtime:PHTIMER
  1042.  
  1043. DosTimerStop    PROTO FAR PASCAL \
  1044.                 htimer:HTIMER
  1045.  
  1046. ENDIF ; INCL_DOSDATETIME
  1047.  
  1048. ; Module manager
  1049.  
  1050. IF DEFINED( INCL_DOSMODULEMGR ) AND NOT DEFINED( INCL_DOSMODULEMGR_INCLUDED )
  1051.  
  1052. INCL_DOSMODULEMGR_INCLUDED EQU 1
  1053.  
  1054. DosLoadModule   PROTO FAR PASCAL \
  1055.                 pszFailName:PSZ, cbFileName:WORD, pszModName:PSZ,
  1056.                 phmod:PHMODULE
  1057.  
  1058. DosFreeModule   PROTO FAR PASCAL \
  1059.                 hmod:HMODULE
  1060.  
  1061. DosGetProcAddr  PROTO FAR PASCAL \
  1062.                 hmod:HMODULE, pszProcName:PSZ, ppfnProcAddr:PPFN
  1063.  
  1064. DosGetModHandle PROTO FAR PASCAL \
  1065.                 pszModName:PSZ, phMod:PHMODULE
  1066.  
  1067. DosGetModName   PROTO FAR PASCAL \
  1068.                 hmod:HMODULE, cbBuf:WORD, pchBuf:PCHAR
  1069.  
  1070. ENDIF ; INCL_DOSMODULEMGR
  1071.  
  1072. IF DEFINED( INCL_DOSRESOURCES ) AND NOT DEFINED( INCL_NOCOMMON )
  1073.  
  1074. ; Resource support
  1075. ; Predefined resource types
  1076.  
  1077. RT_POINTER      EQU     1       ; mouse pointer shape
  1078. RT_BITMAP       EQU     2       ; bitmap
  1079. RT_MENU         EQU     3       ; menu template
  1080. RT_DIALOG       EQU     4       ; dialog template
  1081. RT_STRING       EQU     5       ; string tables
  1082. RT_FONTDIR      EQU     6       ; font directory
  1083. RT_FONT         EQU     7       ; font
  1084. RT_ACCELTABLE   EQU     8       ; accelerator tables
  1085. RT_RCDATA       EQU     9       ; binary data
  1086. RT_MESSAGE      EQU     10      ; error mesage tables
  1087. RT_DLGINCLUDE   EQU     11      ; dialog include file name
  1088. RT_VKEYTBL      EQU     12      ; key to vkey tables
  1089. RT_KEYTBL       EQU     13      ; key to UGL tables
  1090. RT_CHARTBL      EQU     14
  1091. RT_DISPLAYINFO  EQU     15      ; screen display information
  1092. RT_FKASHORT     EQU     16      ; function key area short form
  1093. RT_FKALONG      EQU     17      ; function key area long form
  1094. RT_HELPTABLE    EQU     18
  1095. RT_HELPSUBTABLE EQU     19
  1096. RT_FDDIR        EQU     20
  1097. RT_FD           EQU     21
  1098. RT_MAX          EQU     22      ; 1st unused Resource Type
  1099.  
  1100. ENDIF ; common INCL_DOSRESOURCES
  1101.  
  1102. IF DEFINED( INCL_DOSRESOURCES ) AND NOT DEFINED( INCL_DOSRESOURCES_INCLUDED )
  1103. INCL_DOSRESOURCES_INCLUDED EQU 1
  1104.  
  1105. DosGetResource  PROTO FAR PASCAL \
  1106.                 hmod:HMODULE, idType:WORD, idName:WORD, pselector:PSEL
  1107.  
  1108. DosGetResource2 PROTO FAR PASCAL \
  1109.                 hmod:HMODULE, idType:WORD, idName:WORD, ppData:FAR PTR PVOID
  1110.  
  1111. DosFreeResource PROTO FAR PASCAL \
  1112.                 pData:PVOID
  1113.  
  1114. ENDIF ; INCL_DOSRESOURCES
  1115.  
  1116.  
  1117. ; NLS Support
  1118.  
  1119. IF DEFINED( INCL_DOSNLS ) AND NOT DEFINED( INCL_DOSNLS_INCLUDED )
  1120. INCL_DOSNLS_INCLUDED EQU 1
  1121.  
  1122. COUNTRYCODE     STRUCT  2 ; ctryc
  1123. country_        WORD    0
  1124. codepage_       WORD    0
  1125. COUNTRYCODE     ENDS
  1126. PCOUNTRYCODE    TYPEDEF FAR PTR COUNTRYCODE
  1127.  
  1128. ; fsDateFmt
  1129.  
  1130. DATEFMT_MM_DD_YY        EQU     0000h
  1131. DATEFMT_DD_MM_YY        EQU     0001h
  1132. DATEFMT_YY_MM_DD        EQU     0002h
  1133.  
  1134. ; fsCurrencyFmt
  1135. CURRENCY_FOLLOW         EQU     0001h
  1136. CURRENCY_SPACE          EQU     0002h
  1137. CURRENCY_DECIMAL        EQU     0004h
  1138.  
  1139. COUNTRYINFO             STRUCT  2 ; ctryi
  1140. country_                WORD    0
  1141. codepage_               WORD    0
  1142. fsDateFmt_              WORD    0
  1143. szCurrency_             SBYTE   5 DUP (0)
  1144. szThousandsSeparator_   SBYTE   2 DUP (0)
  1145. szDecimal_              SBYTE   2 DUP (0)
  1146. szDateSeparator_        SBYTE   2 DUP (0)
  1147. szTimeSeparator_        SBYTE   2 DUP (0)
  1148. fsCurrencyFmt_          BYTE    0
  1149. cDecimalPlace_          BYTE    0
  1150. fsTimeFmt_              BYTE    0
  1151. abReserved1_            WORD    2 DUP (0)
  1152. szDataSeparator_        SBYTE   2 DUP (0)
  1153. abReserved2_            WORD    5 DUP (0)
  1154. COUNTRYINFO             ENDS
  1155. PCOUNTRYINFO    TYPEDEF FAR PTR COUNTRYINFO
  1156.  
  1157. DosGetCtryInfo  PROTO FAR PASCAL \
  1158.                 cbBuf:WORD, pctryc:PCOUNTRYCODE, pctryi:PCOUNTRYINFO,
  1159.                 pcbCtryInfo:PWORD
  1160.  
  1161. DosGetDBCSEv    PROTO FAR PASCAL \
  1162.                 cbBuf:WORD, pctryc:PCOUNTRYCODE, pchBuf:PCHAR
  1163.  
  1164. DosCaseMap      PROTO FAR PASCAL \
  1165.                 usLen:WORD, pctryc:PCOUNTRYCODE, pchStr:PCHAR
  1166.  
  1167. DosGetCollate   PROTO FAR PASCAL \
  1168.                 cbBuf:WORD, pctryc:PCOUNTRYCODE, pchBuf:PCHAR, pcbTable:PWORD
  1169.  
  1170. DosGetCp        PROTO FAR PASCAL \
  1171.                 cbBuf:WORD, pBuf:PWORD, pcbCodePgLst:PWORD
  1172.  
  1173. DosSetCp        PROTO FAR PASCAL \
  1174.                 usCodePage:WORD, usReserved:WORD
  1175.  
  1176. DosSetProcCp    PROTO FAR PASCAL \
  1177.                 usCodePage:WORD, usReserved:WORD
  1178.  
  1179. ENDIF ; INCL_DOSNLS
  1180.  
  1181.  
  1182. ; Signal support
  1183.  
  1184. IF DEFINED( INCL_DOSSIGNALS ) AND NOT DEFINED( INCL_DOSSIGNALS_INCLUDED )
  1185. INCL_DOSSIGNALS_INCLUDED EQU 1
  1186.  
  1187. ; Signal Numbers for DosSetSigHandler
  1188. SIG_CTRLC               EQU     1       ; Control C
  1189. ;                               2       ; Undefined
  1190. SIG_KILLPROCESS         EQU     3       ; Program Termination
  1191. SIG_CTRLBREAK           EQU     4       ; Control Break
  1192. SIG_PFLG_A              EQU     5       ; Process Flag A
  1193. SIG_PFLG_B              EQU     6       ; Process Flag B
  1194. SIG_PFLG_C              EQU     7       ; Process Flag C
  1195. SIG_CSIGNALS            EQU     8       ; number of signals plus one
  1196.  
  1197. ; Flag Numbers for DosFlagProcess
  1198. PFLG_A                  EQU     0       ; Process Flag A
  1199. PFLG_B                  EQU     1       ; Process Flag B
  1200. PFLG_C                  EQU     2       ; Process Flag C
  1201.  
  1202. ; Signal actions
  1203. SIGA_KILL               EQU     0
  1204. SIGA_IGNORE             EQU     1
  1205. SIGA_ACCEPT             EQU     2
  1206. SIGA_ERROR              EQU     3
  1207. SIGA_ACKNOWLEDGE        EQU     4
  1208.  
  1209. ; DosHoldSignal constants
  1210. HLDSIG_ENABLE           EQU     0
  1211. HLDSIG_DISABLE          EQU     1
  1212.  
  1213. ; DosFlagProcess codes
  1214. FLGP_SUBTREE            EQU     0
  1215. FLGP_PID                EQU     1
  1216.  
  1217. PFSIGHANDLER    TYPEDEF PROTO FAR PASCAL :WORD, :WORD
  1218. PFNSIGHANDLER   TYPEDEF PTR PFSIGHANDLER
  1219.  
  1220. DosSetSigHandler PROTO FAR PASCAL \
  1221.                 pfnHandler:PFNSIGHANDLER, ppfnPrev:FAR PTR PFNSIGHANDLER,
  1222.                 pfAction:PWORD, fAction:WORD, usSigNum:WORD
  1223.  
  1224. DosFlagProcess  PROTO FAR PASCAL \
  1225.                 pidProcess:PID, fScope:WORD, usFlagNum:WORD, usFlagArg:WORD
  1226.  
  1227. DosHoldSignal   PROTO FAR PASCAL \
  1228.                 fDisable:WORD
  1229.  
  1230. DosSendSignal   PROTO FAR PASCAL \
  1231.                 idProcess:WORD, usSigNumber:WORD
  1232.  
  1233. ENDIF ; INCL_DOSSIGNALS
  1234.  
  1235.  
  1236. ; Monitor support
  1237.  
  1238. IF DEFINED( INCL_DOSMONITORS ) AND NOT DEFINED( INCL_DOSMONITORS_INCLUDED )
  1239. INCL_DOSMONITORS_INCLUDED EQU 1
  1240.  
  1241. MONITOR_DEFAULT EQU     0000h
  1242. MONITOR_BEGIN   EQU     0001h
  1243. MONITOR_END     EQU     0002h
  1244.  
  1245. HMONITOR        TYPEDEF WORD    ; hmon
  1246. PHMONITOR       TYPEDEF FAR PTR HMONITOR
  1247.  
  1248. MONIN           STRUCT  2 ; mnin
  1249. cb_             WORD    0
  1250. abReserved_     BYTE    18 DUP (0)
  1251. abBuffer_       BYTE    108 DUP (0)
  1252. MONIN           ENDS
  1253. PMONIN          TYPEDEF FAR PTR MONIN
  1254.  
  1255. MONOUT          STRUCT  2 ; mnout
  1256. cb_             WORD    0
  1257. abReserved_     BYTE    18 DUP (0)
  1258. abBuffer_       BYTE    108 DUP (0)
  1259. MONOUT          ENDS
  1260. PMONOUT         TYPEDEF FAR PTR MONOUT
  1261.  
  1262. DosMonOpen      PROTO FAR PASCAL \
  1263.                 pszDevName:PSZ, phmon:PHMONITOR
  1264.  
  1265. DosMonClose     PROTO FAR PASCAL \
  1266.                 hmon:HMONITOR
  1267.  
  1268. DosMonReg       PROTO FAR PASCAL \
  1269.                 hmon:HMONITOR, pbInBuf:PBYTE, pbOutBuf:PBYTE,
  1270.                 fPosition:WORD, usIndex:WORD
  1271.  
  1272. DosMonRead      PROTO FAR PASCAL \
  1273.                 pbInBuf:PBYTE, fWaitFor:WORD, pbDataBuf:PBYTE, pcbData:PWORD
  1274.  
  1275. DosMonWrite     PROTO FAR PASCAL \
  1276.                 pbOutBuf:PBYTE, pbDataBuf:PBYTE, cbData:WORD
  1277.  
  1278. ENDIF ; INCL_DOSMONITORS
  1279.  
  1280. ; Pipe and queue support
  1281.  
  1282. if DEFINED( INCL_DOSQUEUES ) AND NOT DEFINED( INCL_DOSQUEUES_INCLUDED )
  1283. INCL_DOSQUEUES_INCLUDED EQU 1
  1284.  
  1285. ; DosCreateQueue priority
  1286.  
  1287. QUE_FIFO        EQU     0000h
  1288. QUE_LIFO        EQU     0001h
  1289. QUE_PRIORITY    EQU     0002h
  1290.  
  1291. HQUEUE          TYPEDEF WORD    ; hq
  1292. PHQUEUE         TYPEDEF FAR PTR HQUEUE
  1293.  
  1294. QUEUERESULT     STRUCT  2 ; qresc
  1295. pidProcess_     WORD    0
  1296. usEventCode_    WORD    0
  1297. QUEUERESULT     ENDS
  1298. PQUEUERESULT    TYPEDEF FAR PTR QUEUERESULT
  1299.  
  1300. DosMakePipe     PROTO FAR PASCAL \
  1301.                 phfRead:PHFILE, phfWrite:PHFILE, cb:WORD
  1302.  
  1303. DosCloseQueue   PROTO FAR PASCAL \
  1304.                 hq:HQUEUE
  1305.  
  1306. DosCreateQueue  PROTO FAR PASCAL \
  1307.                 phq:PHQUEUE, fQueueOrder:WORD, pszQueueName:PSZ
  1308.  
  1309. DosOpenQueue    PROTO FAR PASCAL \
  1310.                 ppidOwner:FAR PTR WORD, phq:PHQUEUE, pszQueueName:PSZ
  1311.  
  1312.  
  1313. DosPeekQueue    PROTO FAR PASCAL \
  1314.                 hq:HQUEUE, pqresc:PQUEUERESULT, pcbElement:PWORD,
  1315.                 ppBuf:PVOID, pElemCode:PWORD, fWaitFor:BYTE,
  1316.                 pbElemPrty:PBYTE, hsem:DWORD
  1317.  
  1318. DosPurgeQueue   PROTO FAR PASCAL \
  1319.                 hq:HQUEUE
  1320.  
  1321. DosQueryQueue   PROTO FAR PASCAL \
  1322.                 hq:HQUEUE, pcElem:PWORD
  1323.  
  1324. DosReadQueue    PROTO FAR PASCAL \
  1325.                 hq:HQUEUE, pqresc:PQUEUERESULT, pcbElem:PWORD,
  1326.                 ppv:FAR PTR PVOID, usElem:WORD, fWaitFor:BYTE,
  1327.                 pbElemPrty:PBYTE, hsm:HSEM
  1328.  
  1329. DosWriteQueue   PROTO FAR PASCAL \
  1330.                 hq:HQUEUE, usRequest:WORD, cbBuf:WORD,
  1331.                 pBuf:PBYTE, fPriority:BYTE
  1332.  
  1333. ENDIF ; INCL_DOSQUEUES
  1334.  
  1335. IF DEFINED( INCL_DOSMISC ) AND NOT DEFINED( INCL_DOSMISC_INCLUDED )
  1336. INCL_DOSMISC_INCLUDED EQU 1
  1337.  
  1338. ; DosQSysInfo index
  1339.  
  1340. Q_MAX_PATH_LENGTH       EQU     0       ; index for query max path length
  1341.  
  1342. ; DosError error-handling types
  1343. HARDERROR_ENABLE        EQU     0001h
  1344. HARDERROR_DISABLE       EQU     0000h
  1345. EXCEPTION_ENABLE        EQU     0000h
  1346. EXCEPTION_DISABLE       EQU     0002h
  1347.  
  1348. ; DosSetVec vectors
  1349. VECTOR_DIVIDE_BY_ZERO   EQU     0000h
  1350. VECTOR_OVERFLOW         EQU     0004h
  1351. VECTOR_OUTOFBOUNDS      EQU     0005h
  1352. VECTOR_INVALIDOPCODE    EQU     0006h
  1353. VECTOR_NO_EXTENSION     EQU     0007h
  1354. VECTOR_EXTENSION_ERROR  EQU     0010h
  1355.  
  1356. ; DosGetMachineMode machine modes
  1357. MODE_REAL               EQU     0000h
  1358. MODE_PROTECTED          EQU     0001h
  1359.  
  1360. DosError        PROTO FAR PASCAL \
  1361.                 fEnable:WORD
  1362.  
  1363. DosSetVec       PROTO FAR PASCAL \
  1364.                 usVecNum:WORD, pfnFun:PFN, ppfnPrev:PPFN
  1365.  
  1366. DosGetMessage   PROTO FAR PASCAL \
  1367.                 ppchVTable:FAR PTR PCHAR, usVCount:WORD, pchBuf:PCHAR,
  1368.                 cbBuf:WORD, usMsgNum:WORD, pszFileName:PSZ, pcbMsg:PWORD
  1369.  
  1370. DosErrClass     PROTO FAR PASCAL \
  1371.                 usErrCode:WORD, pusClass:PWORD, pfsAction:PWORD,
  1372.                 pusLocus:PWORD
  1373.  
  1374. DosInsMessage   PROTO FAR PASCAL \
  1375.                 ppchVTable:FAR PTR PCHAR, usVCount:WORD, pszMsg:PSZ,
  1376.                 cbMsg:WORD, pchBuf:PCHAR, cbBuf:WORD, pcbMsg:PWORD
  1377.  
  1378. DosPutMessage   PROTO FAR PASCAL \
  1379.                 hf:HFILE, cbMsg:WORD, pchMsg:PCHAR
  1380.  
  1381. DosQSysInfo     PROTO FAR PASCAL \
  1382.                 index:WORD, pBuf:PBYTE, cbBuf:WORD
  1383.  
  1384. DosGetEnv       PROTO FAR PASCAL \
  1385.                 pselEnv:PWORD, pOffsetCmd:PWORD
  1386.  
  1387. DosScanEnv      PROTO FAR PASCAL \
  1388.                 pszVarName:PSZ, ppszResult:FAR PTR PSZ
  1389.  
  1390. DosGetVersion   PROTO FAR PASCAL \
  1391.                 pVer:PWORD
  1392.  
  1393. DosGetMachineMode PROTO FAR PASCAL \
  1394.                 pMachMode:PBYTE
  1395.  
  1396. ENDIF ; INCL_DOSMISC
  1397.  
  1398. ; Session manager support
  1399.  
  1400. IF DEFINED( INCL_DOSSESMGR ) AND NOT DEFINED( INCL_DOSSESMGR_INCLUDED )
  1401. INCL_DOSSESMGR_INCLUDED EQU 1
  1402.  
  1403. ; DosQAppType application types
  1404.  
  1405. NOTSPECIFIED    EQU     0000h
  1406. NOTWINDOCOMPAT  EQU     0001h
  1407. WINDOWCOMPAT    EQU     0002h
  1408. WINDOWAPI       EQU     0003h
  1409. BOUNDTYPE       EQU     0004h   ; Called BOUND in OS/2 documentation
  1410. DYNAMICLINK     EQU     0008h
  1411. DOSFORMAT       EQU     0010h
  1412.  
  1413. STARTDATA       STRUCT  2 ; stdata
  1414. Length_         WORD    0
  1415. Related_        WORD    0
  1416. FgBg_           WORD    0
  1417. TraceOpt_       WORD    0
  1418. PgmTitle_       PSZ     0
  1419. PgmName_        PSZ     0
  1420. PgmInputs_      PBYTE   0
  1421. TermQ_          PBYTE   0
  1422. Environment_    PBYTE   0
  1423. InheritOpt_     WORD    0
  1424. SessionType_    WORD    0
  1425. IconFile_       PSZ     0
  1426. PgmHandle_      DWORD   0
  1427. PgmControl_     WORD    0
  1428. InitXPos_       WORD    0
  1429. InitYPos_       WORD    0
  1430. InitXSize_      WORD    0
  1431. InitYSize_      WORD    0
  1432. STARTDATA       ENDS
  1433. PSTARTDATA      TYPEDEF FAR PTR STARTDATA
  1434.  
  1435. ; STATUSDATA.SelectInd constants
  1436.  
  1437. TARGET_UNCHANGED        EQU     0000h
  1438. TARGET_SELECTABLE       EQU     0001h
  1439. TARGET_NOT_SELECTABLE   EQU     0002h
  1440.  
  1441. ; STATUSDATA.BondInd constants
  1442. BOND_UNCHANGED          EQU     0000h
  1443. BOND_CHILD              EQU     0001h
  1444. BOND_NONE               EQU     0002h
  1445.  
  1446. STATUSDATA      STRUCT  2 ; stsdata
  1447. Length_         WORD    0
  1448. SelectInd_      WORD    0
  1449. BondInd_        WORD    0
  1450. STATUSDATA      ENDS
  1451. PSTATUSDATA     TYPEDEF FAR PTR STATUSDATA
  1452.  
  1453. DosStartSession PROTO FAR PASCAL \
  1454.                 pstdata:PSTARTDATA, pidSession:PWORD, ppid:PWORD
  1455.  
  1456. DosSetSession   PROTO FAR PASCAL \
  1457.                 idSession:WORD, pstsdata:PSTATUSDATA
  1458.  
  1459. DosSelectSession PROTO FAR PASCAL \
  1460.                 idSession:WORD, ulReserved:DWORD
  1461.  
  1462. DosStopSession  PROTO FAR PASCAL \
  1463.                 fScope:WORD, idSession:WORD, ulReserved:DWORD
  1464.  
  1465. DosQAppType     PROTO FAR PASCAL \
  1466.                 pszPrgName:PSZ, pusType:PWORD
  1467.  
  1468. ENDIF ; INCL_DOSSESMGR
  1469.  
  1470. ; Device support
  1471.  
  1472. IF DEFINED( INCL_DOSDEVICES ) AND NOT DEFINED( INCL_DOSDEVICES_INCLUDED )
  1473. INCL_DOSDEVICES_INCLUDED EQU 1
  1474.  
  1475. ; DosPhysicalDisk physical disk information
  1476.  
  1477. INFO_COUNT_PARTITIONABLE_DISKS  EQU     0001h
  1478. INFO_GETIOCTLHANDLE             EQU     0002h
  1479. INFO_FREEIOCTLHANDLE            EQU     0003h
  1480.  
  1481. ; DosDevConfig information requests
  1482.  
  1483. DEVINFO_PRINTER                 EQU     0000h
  1484. DEVINFO_RS232                   EQU     0001h
  1485. DEVINFO_FLOPPY                  EQU     0002h
  1486. DEVINFO_COPROCESSOR             EQU     0003h
  1487. DEVINFO_SUBMODEL                EQU     0004h
  1488. DEVINFO_MODEL                   EQU     0005h
  1489. DEVINFO_ADAPTER                 EQU     0006h
  1490.  
  1491. DosDevConfig    PROTO FAR PASCAL \
  1492.                 pDevInfo:PVOID, usItem:WORD, usReserved:WORD
  1493.  
  1494. DosDevIOCtl     PROTO FAR PASCAL \
  1495.                 pData:PVOID, pParms:PVOID, usFun:WORD,
  1496.                 usCategory:WORD, hDev:HFILE
  1497.  
  1498. DosDevIOCtl2    PROTO FAR PASCAL \
  1499.                 pData:PVOID, cbData:WORD, pParm:PVOID, cbParm:WORD,
  1500.                 usFun:WORD, usCategory:WORD, hDev:HFILE
  1501.  
  1502. DosCLIAccess    PROTO FAR PASCAL
  1503.  
  1504. DosPortAccess   PROTO FAR PASCAL \
  1505.                 usReserved:WORD, fRelease:WORD, usFirstPort:WORD,
  1506.                 usLastPort:WORD
  1507.  
  1508. DosPhysicalDisk PROTO FAR PASCAL \
  1509.                 usFun:WORD, pOut:PBYTE, cbOut:WORD, pParm:PBYTE, cbParm:WORD
  1510.  
  1511. DosR2StackRealloc PROTO FAR PASCAL \
  1512.                 cbStack:WORD
  1513.  
  1514. DosCallback     PROTO FAR PASCAL \
  1515.                 pfunc:PFN
  1516.  
  1517. ENDIF ; INCL_DOSDEVICES
  1518.  
  1519. ; DosNamedPipes API Support
  1520.  
  1521. IF DEFINED( INCL_DOSNMPIPES ) AND NOT DEFINED( INCL_DOSNMPIPES_INCLUDED )
  1522. INCL_DOSNMPIPES_INCLUDED EQU 1
  1523.  
  1524. HPIPE           TYPEDEF WORD    ; hp
  1525. PHPIPE          TYPEDEF FAR PTR WORD
  1526.  
  1527. ; Data structures and equates used with named pipes
  1528.  
  1529. PIPEINFO        STRUCT  2 ; nmpinf
  1530. cbOut_          WORD    0
  1531. cbIn_           WORD    0
  1532. cbMaxInst_      BYTE    0
  1533. cbCurInst_      BYTE    0
  1534. cbName_         BYTE    0
  1535. szName_         SBYTE   1 DUP (0)
  1536. PIPEINFO        ENDS
  1537. PPIPEINFO       TYPEDEF FAR PTR PIPEINFO
  1538.  
  1539.  
  1540. PIPESEMSTATE    STRUCT  2 ; nmpsmst
  1541. fStatus_        BYTE    0
  1542. fFlag_          BYTE    0
  1543. usKey_          WORD    0
  1544. usAvail_        WORD    0
  1545. PIPESEMSTATE    ENDS
  1546. PPIPESEMSTATE   TYPEDEF FAR PTR PIPESEMSTATE
  1547.  
  1548. ; values in npss_status
  1549. NPSS_EOI        EQU     0       ; End Of Information
  1550. NPSS_RDATA      EQU     1       ; read data available
  1551. NPSS_WSPACE     EQU     2       ; write space available
  1552. NPSS_CLOSE      EQU     3       ; pipe in CLOSING state
  1553.  
  1554. ; values in npss_flag
  1555. NPSS_WAIT       EQU     0001h   ; waiting thread on end of pipe
  1556.  
  1557. ; defined bits in pipe mode
  1558. NP_NBLK         EQU     8000h   ; non-blocking read/write
  1559. NP_SERVER       EQU     4000h   ; set if server end
  1560. NP_WMESG        EQU     0400h   ; write messages
  1561. NP_RMESG        EQU     0100h   ; read as messages
  1562. NP_ICOUNT       EQU     00ffh   ; instance count field
  1563.  
  1564. ; Named pipes may be in one of several states depending on the actions
  1565. ; that have been taken on it by the server end and client end.  The
  1566. ; following state/action table summarizes the valid state transitions:
  1567. ;
  1568. ; Current state           Action                  Next state
  1569. ;
  1570. ;  <none>             server DosMakeNmPipe        DISCONNECTED
  1571. ;  DISCONNECTED       server connect              LISTENING
  1572. ;  LISTENING          client open                 CONNECTED
  1573. ;  CONNECTED          server disconn              DISCONNECTED
  1574. ;  CONNECTED          client close                CLOSING
  1575. ;  CLOSING            server disconn              DISCONNECTED
  1576. ;  CONNECTED          server close                CLOSING
  1577. ;  <any other>        server close                <pipe deallocated>
  1578. ;
  1579. ; If a server disconnects his end of the pipe, the client end will enter a
  1580. ; special state in which any future operations (except close) on the file
  1581. ; descriptor associated with the pipe will return an error.
  1582.  
  1583. ; Values for named pipe state
  1584. NP_DISCONNECTED         EQU     1       ; after pipe creation or Disconnect
  1585. NP_LISTENING            EQU     2       ; after DosNmPipeConnect
  1586. NP_CONNECTED            EQU     3       ; after Client open
  1587. NP_CLOSING              EQU     4       ; after Client or Server close
  1588.  
  1589. ; DosMakeNmPipe open modes
  1590. NP_ACCESS_INBOUND       EQU     0000h
  1591. NP_ACCESS_OUTBOUND      EQU     0001h
  1592. NP_ACCESS_DUPLEX        EQU     0002h
  1593. NP_INHERIT              EQU     0000h
  1594. NP_NOINHERIT            EQU     0080h
  1595. NP_WRITEBEHIND          EQU     0000h
  1596. NP_NOWRITEBEHIND        EQU     4000h
  1597.  
  1598. ; DosMakeNmPipe and DosQNmPHandState state
  1599. NP_READMODE_BYTE        EQU     0000h
  1600. NP_READMODE_MESSAGE     EQU     0100h
  1601. NP_TYPE_BYTE            EQU     0000h
  1602. NP_TYPE_MESSAGE         EQU     0400h
  1603. NP_END_CLIENT           EQU     0000h
  1604. NP_END_SERVER           EQU     4000h
  1605. NP_WAIT                 EQU     0000h
  1606. NP_NOWAIT               EQU     8000h
  1607. NP_UNLIMITED_INSTANCES  EQU     00ffh
  1608.  
  1609. AVAILDATA       STRUCT  2       ; PeekNMPipe Bytes Available record
  1610. cbpipe_         WORD    0       ; bytes left in the pipe
  1611. cbmessage_      WORD    0       ; bytes left in current message
  1612. AVAILDATA       ENDS
  1613. PAVAILDATA      TYPEDEF FAR PTR AVAILDATA
  1614.  
  1615. DosCallNmPipe   PROTO FAR PASCAL \
  1616.                 pszName:PSZ, pInBuf:PBYTE, cbInBuf:WORD, pbOutBuf:PBYTE,
  1617.                 cbOutBuf:WORD, pcbRead:PWORD, ulTimeOut:DWORD
  1618.  
  1619. DosConnectNmPipe PROTO FAR PASCAL \
  1620.                 hp:HPIPE
  1621.  
  1622. DosDisConnectNmPipe     PROTO FAR PASCAL \
  1623.                 hp:HPIPE
  1624.  
  1625. DosMakeNmPipe   PROTO FAR PASCAL \
  1626.                 pszName:PSZ, php:PHPIPE, fsOpenMode:WORD, fsPipeMode:WORD,
  1627.                 cbOutBuf:WORD, cbInBuf:WORD, ulTimeOut:DWORD
  1628.  
  1629. DosPeekNmPipe   PROTO FAR PASCAL \
  1630.                 hp:HPIPE, pBuf:PBYTE, cbBuf:WORD, pcbRead:PWORD,
  1631.                 pAvail:PAVAILDATA, pfsState:PWORD
  1632.  
  1633. DosQNmPHandState PROTO FAR PASCAL \
  1634.                 hp:HPIPE, pfsState:PWORD
  1635.  
  1636. DosQNmPipeInfo  PROTO FAR PASCAL \
  1637.                 hp:HPIPE, usInfoLevel:WORD, pBuf:PBYTE, cb:WORD
  1638.  
  1639. DosQNmPipeSemState PROTO FAR PASCAL \
  1640.                 hsm:HSEM, pnmpsmst:PPIPESEMSTATE, cb:WORD
  1641.  
  1642. DosSetNmPHandState PROTO FAR PASCAL \
  1643.                 hp:HPIPE, fsState:WORD
  1644.  
  1645. DosSetNmPipeSem PROTO FAR PASCAL \
  1646.                 hp:HPIPE, hsm:HSEM, usKeyVal:WORD
  1647.  
  1648. DosTransactNmPipe PROTO FAR PASCAL \
  1649.                 hp:HPIPE, pbOutBuf:PBYTE, cbOut:WORD, pInBuf:PBYTE,
  1650.                 cbIn:WORD, pcbRead:PWORD
  1651.  
  1652. DosWaitNmPipe   PROTO FAR PASCAL \
  1653.                 pszName:PSZ, ulTimeOut:DWORD
  1654.  
  1655. ENDIF ; INCL_DOSNMPIPES
  1656.  
  1657. ; Trace support
  1658.  
  1659. IF DEFINED( INCL_DOSTRACE ) AND NOT DEFINED( INCL_DOSTRACE_INCLUDED )
  1660. INCL_DOSTRACE_INCLUDED EQU 1
  1661.  
  1662. PTRACEBUF       STRUCT  2 ; ptrcbf
  1663. pid_            PID     0
  1664. tid_            TID     0
  1665. cmd_            WORD    0
  1666. value_          WORD    0
  1667. offv_           WORD    0
  1668. segv_           WORD    0
  1669. mte_            WORD    0
  1670. rAX_            WORD    0
  1671. rBX_            WORD    0
  1672. rCX_            WORD    0
  1673. rDX_            WORD    0
  1674. rSI_            WORD    0
  1675. rDI_            WORD    0
  1676. rBP_            WORD    0
  1677. rDS_            WORD    0
  1678. rES_            WORD    0
  1679. rIP_            WORD    0
  1680. rCS_            WORD    0
  1681. rF_             WORD    0
  1682. rSP_            WORD    0
  1683. rSS_            WORD    0
  1684. PTRACEBUF       ENDS
  1685. PPTRACEBUF      TYPEDEF FAR PTR PTRACEBUF
  1686.  
  1687.  
  1688. DosPTrace       PROTO FAR PASCAL \
  1689.                 pPtraceBuf:FAR PTR BYTE
  1690.  
  1691. ENDIF ; INCL_DOSTRACE
  1692.