|
|
1.1 ! root 1: /*static char *SCCSID = "@(#)bsedos.h 13.61 90/05/05";*/ ! 2: /***************************************************************************\ ! 3: * ! 4: * Module Name: BSEDOS.H ! 5: * ! 6: * OS/2 Base Include File ! 7: * ! 8: * Copyright (c) 1987 Microsoft Corporation ! 9: * Copyright (c) 1987 IBM Corporation ! 10: * ! 11: ***************************************************************************** ! 12: * ! 13: * Subcomponents marked with "+" are partially included by default ! 14: * ! 15: * #define: To include: ! 16: * ! 17: * + INCL_DOSPROCESS Process and thread support ! 18: * + INCL_DOSFILEMGR File Management ! 19: * + INCL_DOSMEMMGR Memory Management ! 20: * + INCL_DOSSEMAPHORES Semaphore support ! 21: * + INCL_DOSDATETIME Date/Time and Timer support ! 22: * INCL_DOSMODULEMGR Module manager ! 23: * + INCL_DOSRESOURCES Resource support ! 24: * INCL_DOSNLS National Language Support ! 25: * INCL_DOSSIGNALS Signals ! 26: * INCL_DOSMISC Miscellaneous ! 27: * INCL_DOSMONITORS Monitors ! 28: * INCL_DOSQUEUES Queues ! 29: * INCL_DOSSESMGR Session Manager Support ! 30: * INCL_DOSDEVICES Device specific, ring 2 support ! 31: * INCL_DOSNMPIPES Named Pipes Support ! 32: * INCL_DOSPROFILE DosProfile API ! 33: * INCL_DOSMVDM MVDM support ! 34: * ! 35: \***************************************************************************/ ! 36: ! 37: #define INCL_DOSINCLUDED ! 38: ! 39: #ifndef INCL_BASEINCLUDED ! 40: #if !(defined(INCL_32) || defined(INCL_16)) ! 41: #ifdef M_I386 ! 42: #define INCL_32 ! 43: #else /* not M_I386 */ ! 44: #define INCL_16 ! 45: #endif /* M_I386 */ ! 46: #endif /* INCL_32 || INCL_16 */ ! 47: ! 48: /* XLATOFF */ ! 49: #if defined(INCL_16) ! 50: #pragma message ("32-bit Base API included when using 16-bit compiler") ! 51: #endif /* INCL_32 */ ! 52: /* XLATON */ ! 53: #endif /* INCL_BASEINCLUDED */ ! 54: ! 55: #ifdef INCL_32 /* This #ifdef brackets the rest of this entire */ ! 56: /* file. It is used to include either the */ ! 57: /* 32-bit or 16-bit base definitions. No */ ! 58: /* definitions (other than 16/32-bit */ ! 59: /* determination) must be placed above this. */ ! 60: ! 61: #ifdef INCL_DOS ! 62: ! 63: #define INCL_DOSPROCESS ! 64: #define INCL_DOSFILEMGR ! 65: #define INCL_DOSMEMMGR ! 66: #define INCL_DOSSEMAPHORES ! 67: #define INCL_DOSDATETIME ! 68: #define INCL_DOSMODULEMGR ! 69: #define INCL_DOSRESOURCES ! 70: #define INCL_DOSNLS ! 71: #define INCL_DOSSIGNALS ! 72: #define INCL_DOSMISC ! 73: #define INCL_DOSMONITORS ! 74: #define INCL_DOSQUEUES ! 75: #define INCL_DOSSESMGR ! 76: #define INCL_DOSDEVICES ! 77: #define INCL_DOSNMPIPES ! 78: #define INCL_DOSPROFILE ! 79: #define INCL_DOSMVDM ! 80: ! 81: #endif /* INCL_DOS */ ! 82: ! 83: #ifdef INCL_ERRORS ! 84: #define INCL_DOSERRORS ! 85: #endif /* INCL_ERRORS */ ! 86: ! 87: #if (defined(INCL_DOSPROCESS) || !defined(INCL_NOCOMMON)) ! 88: ! 89: /*** General services */ ! 90: ! 91: APIRET APIENTRY DosBeep(ULONG freq, ULONG dur); ! 92: ! 93: /*** Process and Thread support */ ! 94: ! 95: VOID APIENTRY DosExit(ULONG action, ULONG result); ! 96: ! 97: /* DosExit codes */ ! 98: ! 99: #define EXIT_THREAD 0 ! 100: #define EXIT_PROCESS 1 ! 101: ! 102: #endif /* common INCL_DOSPROCESS stuff */ ! 103: ! 104: #ifdef INCL_DOSPROCESS ! 105: ! 106: /* XLATOFF */ ! 107: #define DosCwait DosWaitChild ! 108: #define DosSetPrty DosSetPriority ! 109: /* XLATON */ ! 110: ! 111: #include <bsetib.h> ! 112: ! 113: typedef VOID (*PFNTHREAD)(VOID); ! 114: ! 115: APIRET APIENTRY DosCreateThread(PTID ptid, PFNTHREAD pfn, ULONG param, ULONG flag, ULONG cbStack); ! 116: ! 117: APIRET APIENTRY DosResumeThread(TID tid); ! 118: ! 119: APIRET APIENTRY DosSuspendThread(TID tid); ! 120: ! 121: APIRET APIENTRY DosGetThreadInfo(PTIB *pptib,PPIB *pppib); ! 122: ! 123: /* Action code values */ ! 124: ! 125: #define DCWA_PROCESS 0 ! 126: #define DCWA_PROCESSTREE 1 ! 127: ! 128: /* Wait option values */ ! 129: ! 130: #define DCWW_WAIT 0 ! 131: #define DCWW_NOWAIT 1 ! 132: ! 133: typedef struct _RESULTCODES { /* resc */ ! 134: ULONG codeTerminate; ! 135: ULONG codeResult; ! 136: } RESULTCODES; ! 137: typedef RESULTCODES *PRESULTCODES; ! 138: ! 139: APIRET APIENTRY DosWaitChild(ULONG action, ULONG option, PRESULTCODES pres, PPID ppid, PID pid); ! 140: ! 141: APIRET APIENTRY DosWaitThread(PPID ppid, ULONG option); ! 142: ! 143: APIRET APIENTRY DosSleep(ULONG msec); ! 144: ! 145: APIRET APIENTRY DosDebug(PVOID pdbgbuf); ! 146: ! 147: ! 148: /* codeTerminate values (also passed to ExitList routines) */ ! 149: ! 150: #define TC_EXIT 0 ! 151: #define TC_HARDERROR 1 ! 152: #define TC_TRAP 2 ! 153: #define TC_KILLPROCESS 3 ! 154: ! 155: typedef VOID (*PFNEXITLIST)(ULONG); ! 156: ! 157: APIRET APIENTRY DosEnterCritSec(VOID); ! 158: ! 159: APIRET APIENTRY DosExitCritSec(VOID); ! 160: ! 161: APIRET APIENTRY DosExitList(ULONG ordercode, PFNEXITLIST pfn); ! 162: ! 163: /* DosExitList functions */ ! 164: ! 165: #define EXLST_ADD 1 ! 166: #define EXLST_REMOVE 2 ! 167: #define EXLST_EXIT 3 ! 168: ! 169: APIRET APIENTRY DosExecPgm(PCHAR pObjname, LONG cbObjname, ULONG execFlag, PSZ pArg, PSZ pEnv, PRESULTCODES pRes, PSZ pName); ! 170: ! 171: /* DosExecPgm functions */ ! 172: ! 173: #define EXEC_SYNC 0 ! 174: #define EXEC_ASYNC 1 ! 175: #define EXEC_ASYNCRESULT 2 ! 176: #define EXEC_TRACE 3 ! 177: #define EXEC_BACKGROUND 4 ! 178: #define EXEC_LOAD 5 ! 179: ! 180: ! 181: APIRET APIENTRY DosSetPriority(ULONG scope, ULONG class, LONG delta, ULONG PorTid); ! 182: ! 183: /* Priority scopes */ ! 184: ! 185: #define PRTYS_PROCESS 0 ! 186: #define PRTYS_PROCESSTREE 1 ! 187: #define PRTYS_THREAD 2 ! 188: ! 189: /* Priority classes */ ! 190: ! 191: #define PRTYC_NOCHANGE 0 ! 192: #define PRTYC_IDLETIME 1 ! 193: #define PRTYC_REGULAR 2 ! 194: #define PRTYC_TIMECRITICAL 3 ! 195: #define PRTYC_FOREGROUNDSERVER 4 ! 196: ! 197: /* Priority deltas */ ! 198: ! 199: #define PRTYD_MINIMUM -31 ! 200: #define PRTYD_MAXIMUM 31 ! 201: ! 202: APIRET APIENTRY DosKillProcess(ULONG action, PID pid); ! 203: ! 204: #define DKP_PROCESSTREE 0 ! 205: #define DKP_PROCESS 1 ! 206: ! 207: #endif /* INCL_DOSPROCESS */ ! 208: ! 209: #ifndef INCL_SAADEFS ! 210: ! 211: /* ! 212: * CCHMAXPATH is the maximum fully qualified path name length including ! 213: * the drive letter, colon, backslashes and terminating NULL. ! 214: */ ! 215: #define CCHMAXPATH 260 ! 216: ! 217: /* ! 218: * CCHMAXPATHCOMP is the maximum individual path component name length ! 219: * including a terminating NULL. ! 220: */ ! 221: #define CCHMAXPATHCOMP 256 ! 222: ! 223: #endif /* !INCL_SAADEFS */ ! 224: ! 225: #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON)) ! 226: ! 227: /*** File manager */ ! 228: ! 229: /* DosSetFilePtr() file position codes */ ! 230: ! 231: #define FILE_BEGIN 0x0000 /* Move relative to beginning of file */ ! 232: #define FILE_CURRENT 0x0001 /* Move relative to current fptr position */ ! 233: #define FILE_END 0x0002 /* Move relative to end of file */ ! 234: ! 235: /* DosFindFirst/Next Directory handle types */ ! 236: ! 237: #define HDIR_SYSTEM 1 /* Use system handle (1) */ ! 238: #define HDIR_CREATE (-1) /* Allocate a new, unused handle */ ! 239: ! 240: /* DosCopy control bits; may be or'ed together */ ! 241: #define DCPY_EXISTING 0x00001 /* Copy even if target exists */ ! 242: #define DCPY_APPEND 0x00002 /* Append to existing file, do not replace */ ! 243: #define DCPY_FAILEAS 0x00004 /* Fail if EAs not supported on target*/ ! 244: ! 245: /* DosOpen/DosQFHandState/DosQueryFileInfo et al file attributes; also */ ! 246: /* known as Dso File Mode bits... */ ! 247: #define FILE_NORMAL 0x0000 ! 248: #define FILE_READONLY 0x0001 ! 249: #define FILE_HIDDEN 0x0002 ! 250: #define FILE_SYSTEM 0x0004 ! 251: #define FILE_DIRECTORY 0x0010 ! 252: #define FILE_ARCHIVED 0x0020 ! 253: ! 254: /* DosOpen() actions */ ! 255: ! 256: #define FILE_EXISTED 0x0001 ! 257: #define FILE_CREATED 0x0002 ! 258: #define FILE_TRUNCATED 0x0003 ! 259: ! 260: /* DosOpen() open flags */ ! 261: #define FILE_OPEN 0x0001 ! 262: #define FILE_TRUNCATE 0x0002 ! 263: #define FILE_CREATE 0x0010 ! 264: ! 265: /* this nibble applies if file already exists xxxx */ ! 266: ! 267: #define OPEN_ACTION_FAIL_IF_EXISTS 0x0000 /* ---- ---- ---- 0000 */ ! 268: #define OPEN_ACTION_OPEN_IF_EXISTS 0x0001 /* ---- ---- ---- 0001 */ ! 269: #define OPEN_ACTION_REPLACE_IF_EXISTS 0x0002 /* ---- ---- ---- 0010 */ ! 270: ! 271: /* this nibble applies if file does not exist xxxx */ ! 272: ! 273: #define OPEN_ACTION_FAIL_IF_NEW 0x0000 /* ---- ---- 0000 ---- */ ! 274: #define OPEN_ACTION_CREATE_IF_NEW 0x0010 /* ---- ---- 0001 ---- */ ! 275: ! 276: /* DosOpen/DosSetFHandState flags */ ! 277: ! 278: #define OPEN_ACCESS_READONLY 0x0000 /* ---- ---- ---- -000 */ ! 279: #define OPEN_ACCESS_WRITEONLY 0x0001 /* ---- ---- ---- -001 */ ! 280: #define OPEN_ACCESS_READWRITE 0x0002 /* ---- ---- ---- -010 */ ! 281: #define OPEN_SHARE_DENYREADWRITE 0x0010 /* ---- ---- -001 ---- */ ! 282: #define OPEN_SHARE_DENYWRITE 0x0020 /* ---- ---- -010 ---- */ ! 283: #define OPEN_SHARE_DENYREAD 0x0030 /* ---- ---- -011 ---- */ ! 284: #define OPEN_SHARE_DENYNONE 0x0040 /* ---- ---- -100 ---- */ ! 285: #define OPEN_FLAGS_NOINHERIT 0x0080 /* ---- ---- 1--- ---- */ ! 286: #define OPEN_FLAGS_NO_LOCALITY 0x0000 /* ---- -000 ---- ---- */ ! 287: #define OPEN_FLAGS_SEQUENTIAL 0x0100 /* ---- -001 ---- ---- */ ! 288: #define OPEN_FLAGS_RANDOM 0x0200 /* ---- -010 ---- ---- */ ! 289: #define OPEN_FLAGS_RANDOMSEQUENTIAL 0x0300 /* ---- -011 ---- ---- */ ! 290: #define OPEN_FLAGS_NO_CACHE 0x1000 /* ---1 ---- ---- ---- */ ! 291: #define OPEN_FLAGS_FAIL_ON_ERROR 0x2000 /* --1- ---- ---- ---- */ ! 292: #define OPEN_FLAGS_WRITE_THROUGH 0x4000 /* -1-- ---- ---- ---- */ ! 293: #define OPEN_FLAGS_DASD 0x8000 /* 1--- ---- ---- ---- */ ! 294: ! 295: ! 296: /* DosSearchPath() constants */ ! 297: ! 298: #define SEARCH_PATH 0x0000 ! 299: #define SEARCH_CUR_DIRECTORY 0x0001 ! 300: #define SEARCH_ENVIRONMENT 0x0002 ! 301: #define SEARCH_IGNORENETERRS 0x0004 ! 302: ! 303: /************************************************************ ! 304: DosFileIO ! 305: ========================================= ! 306: ************************************************************/ ! 307: /* File IO command words */ ! 308: #define FIO_LOCK 0 /* Lock Files */ ! 309: #define FIO_UNLOCK 1 /* Unlock Files */ ! 310: #define FIO_SEEK 2 /* Seek (set file ptr) */ ! 311: #define FIO_READ 3 /* File Read */ ! 312: #define FIO_WRITE 4 /* File Write */ ! 313: ! 314: /* Lock Sharing Modes */ ! 315: #define FIO_NOSHARE 0 /* None */ ! 316: #define FIO_SHAREREAD 1 /* Read-Only */ ! 317: ! 318: typedef struct _FIOLOCKCMD { /* FLC File Lock Cmd prefix */ ! 319: USHORT usCmd; /* Cmd = FIO_LOCK */ ! 320: ULONG cTimeOut; /* in Msec */ ! 321: USHORT cLockCnt; /* Lock records that follow */ ! 322: } FIOLOCKCMD; ! 323: typedef FIOLOCKCMD FAR *PFIOLOCKCMD; ! 324: ! 325: ! 326: typedef struct _FIOLOCKREC { /* FLR File Lock Record */ ! 327: USHORT fShare; /* FIO_NOSHARE or FIO_SHAREREAD */ ! 328: ULONG cbStart; /* Starting offset for lock region */ ! 329: ULONG cbLength; /* Length of lock region */ ! 330: } FIOLOCKREC; ! 331: typedef FIOLOCKREC FAR *PIOLOCKREC; ! 332: ! 333: ! 334: typedef struct _FIOUNLOCKCMD { /* FUC File Unlock Cmd prefix */ ! 335: USHORT usCmd; /* Cmd = FIO_UNLOCK */ ! 336: USHORT cUnlockCnt; /* Unlock records that follow */ ! 337: } FIOUNLOCKCMD; ! 338: typedef FIOUNLOCKCMD FAR *PFIOUNLOCKCMD; ! 339: ! 340: ! 341: typedef struct _FIOUNLOCKREC { /* FUR File Unlock Record */ ! 342: ULONG cbStart; /* Starting offset for unlock region */ ! 343: ULONG cbLength; /* Length of unlock region */ ! 344: } FIOUNLOCKREC; ! 345: typedef FIOUNLOCKREC FAR *PFIOUNLOCKREC; ! 346: ! 347: ! 348: typedef struct _FIOSEEKCMD { /* FSC Seek command structure */ ! 349: USHORT usCmd; /* Cmd = FIO_SEEK */ ! 350: USHORT fsMethod; /* One of&gml FPM_BEGINNING, ! 351: FPM_CURRENT, or FPM_END */ ! 352: ULONG cbDistance; /* Byte offset for seek */ ! 353: ULONG cbNewPosition; /* Bytes from start of file after ! 354: seek */ ! 355: } FIOSEEKCMD; ! 356: typedef FIOSEEKCMD FAR *PFIOSEEKCMD; ! 357: ! 358: ! 359: typedef struct _FIOREADWRITE { /* RWC Read & Write command structure */ ! 360: USHORT usCmd; /* Cmd = FIO_READ or FIO_WRITE */ ! 361: PVOID pbBuffer; /* Pointer to data buffer */ ! 362: ULONG cbBufferLen; /* Bytes in buffer or max size */ ! 363: ULONG cbActualLen; /* Bytes actually read/written */ ! 364: } FIOREADWRITE; ! 365: typedef FIOREADWRITE FAR *PFIOREADWRITE; ! 366: ! 367: ! 368: /************************************************************ ! 369: EA Info Levels & Find First/Next ! 370: ========================================= ! 371: API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo, ! 372: DosSetPathInfo ! 373: ************************************************************/ ! 374: ! 375: /* File info levels&gml All listed API's */ ! 376: #define FIL_STANDARD 1 /* Info level 1, standard file info */ ! 377: #define FIL_QUERYEASIZE 2 /* Level 2, return Full EA size */ ! 378: #define FIL_QUERYEASFROMLIST 3 /* Level 3, return requested EA's */ ! 379: #define FIL_QUERYALLEAS 4 /* Level 4, return all EA's */ ! 380: ! 381: /* File info levels: Dos...PathInfo only */ ! 382: #define FIL_QUERYFULLNAME 5 /* Level 5, return fully qualified ! 383: name of file */ ! 384: #define FIL_NAMEISVALID 6 /* Level 6, check validity of file/path ! 385: name for this FSD */ ! 386: ! 387: ! 388: /* DosFsAttach() */ ! 389: /* Attact or detach */ ! 390: #define FS_ATTACH 0 /* Attach file server */ ! 391: #define FS_DETACH 1 /* Detach file server */ ! 392: ! 393: ! 394: /* DosFsCtl() */ ! 395: /* Routing type */ ! 396: #define FSCTL_HANDLE 1 /* File Handle directs req routing */ ! 397: #define FSCTL_PATHNAME 2 /* Path Name directs req routing */ ! 398: #define FSCTL_FSDNAME 3 /* FSD Name directs req routing */ ! 399: ! 400: ! 401: /* DosQueryFSAttach() */ ! 402: /* Information level types (defines method of query) */ ! 403: #define FSAIL_QUERYNAME 1 /* Return data for a Drive or Device */ ! 404: #define FSAIL_DEVNUMBER 2 /* Return data for Ordinal Device # */ ! 405: #define FSAIL_DRVNUMBER 3 /* Return data for Ordinal Drive # */ ! 406: ! 407: /* Item types (from data structure item "iType") */ ! 408: #define FSAT_CHARDEV 1 /* Resident character device */ ! 409: #define FSAT_PSEUDODEV 2 /* Pusedu-character device */ ! 410: #define FSAT_LOCALDRV 3 /* Local drive */ ! 411: #define FSAT_REMOTEDRV 4 /* Remote drive attached to FSD */ ! 412: ! 413: typedef struct _FSQBUFFER { /* fsqbuf Data structure for QFSAttach*/ ! 414: USHORT iType; /* Item type */ ! 415: USHORT cbName; /* Length of item name, sans NULL */ ! 416: UCHAR szName[1]; /* ASCIIZ item name */ ! 417: USHORT cbFSDName; /* Length of FSD name, sans NULL */ ! 418: UCHAR szFSDName[1]; /* ASCIIZ FSD name */ ! 419: USHORT cbFSAData; /* Length of FSD Attach data returned */ ! 420: UCHAR rgFSAData[1]; /* FSD Attach data from FSD */ ! 421: } FSQBUFFER; ! 422: typedef FSQBUFFER FAR *PFSQBUFFER; ! 423: ! 424: ! 425: /*********** ! 426: File System Drive Information&gml DosQueryFSInfo DosSetFSInfo ! 427: ***********/ ! 428: ! 429: /* FS Drive Info Levels */ ! 430: #define FSIL_ALLOC 1 /* Drive allocation info (Query only) */ ! 431: #define FSIL_VOLSER 2 /* Drive Volum/Serial info */ ! 432: ! 433: /* DosQueryFHType() */ ! 434: /* Handle classes (low 8 bits of Handle Type) */ ! 435: #define FHT_DISKFILE 0x0000 /* Disk file handle */ ! 436: #define FHT_CHRDEV 0x0001 /* Character device handle */ ! 437: #define FHT_PIPE 0x0002 /* Pipe handle */ ! 438: ! 439: /* Handle bits (high 8 bits of Handle Type) */ ! 440: #define FHB_DSKREMOTE 0x8000 /* Remote disk */ ! 441: #define FHB_CHRDEVREMOTE 0x8000 /* Remote character device */ ! 442: #define FHB_PIPEREMOTE 0x8000 /* Remote pipe */ ! 443: ! 444: #ifndef INCL_SAADEFS ! 445: ! 446: /* File time and date types */ ! 447: ! 448: typedef struct _FTIME { /* ftime */ ! 449: USHORT twosecs : 5; ! 450: USHORT minutes : 6; ! 451: USHORT hours : 5; ! 452: } FTIME; ! 453: typedef FTIME *PFTIME; ! 454: ! 455: typedef struct _FDATE { /* fdate */ ! 456: USHORT day : 5; ! 457: USHORT month : 4; ! 458: USHORT year : 7; ! 459: } FDATE; ! 460: typedef FDATE *PFDATE; ! 461: ! 462: #endif /* INCL_SAADEFS */ ! 463: ! 464: typedef struct _VOLUMELABEL { /* vol */ ! 465: BYTE cch; ! 466: CHAR szVolLabel[12]; ! 467: } VOLUMELABEL; ! 468: typedef VOLUMELABEL FAR *PVOLUMELABEL; ! 469: ! 470: typedef struct _FSINFO { /* fsinf */ ! 471: FDATE fdateCreation; ! 472: FTIME ftimeCreation; ! 473: VOLUMELABEL vol; ! 474: } FSINFO; ! 475: typedef FSINFO FAR *PFSINFO; ! 476: ! 477: /* HANDTYPE values */ ! 478: ! 479: #define HANDTYPE_FILE 0x0000 ! 480: #define HANDTYPE_DEVICE 0x0001 ! 481: #define HANDTYPE_PIPE 0x0002 ! 482: #define HANDTYPE_NETWORK 0x8000 ! 483: ! 484: typedef struct _FILELOCK { /* flock */ ! 485: LONG lOffset; ! 486: LONG lRange; ! 487: } FILELOCK; ! 488: typedef FILELOCK FAR *PFILELOCK; ! 489: ! 490: typedef SHANDLE HFILE; /* hf */ ! 491: typedef HFILE *PHFILE; ! 492: ! 493: #ifndef INCL_SAADEFS ! 494: ! 495: typedef struct _FILEFINDBUF { /* findbuf */ ! 496: FDATE fdateCreation; ! 497: FTIME ftimeCreation; ! 498: FDATE fdateLastAccess; ! 499: FTIME ftimeLastAccess; ! 500: FDATE fdateLastWrite; ! 501: FTIME ftimeLastWrite; ! 502: ULONG cbFile; ! 503: ULONG cbFileAlloc; ! 504: USHORT attrFile; ! 505: UCHAR cchName; ! 506: CHAR achName[CCHMAXPATHCOMP]; ! 507: } FILEFINDBUF; ! 508: typedef FILEFINDBUF *PFILEFINDBUF; ! 509: ! 510: #pragma pack(2) ! 511: ! 512: typedef struct _FILEFINDBUF2 { /* findbuf2 */ ! 513: FDATE fdateCreation; ! 514: FTIME ftimeCreation; ! 515: FDATE fdateLastAccess; ! 516: FTIME ftimeLastAccess; ! 517: FDATE fdateLastWrite; ! 518: FTIME ftimeLastWrite; ! 519: ULONG cbFile; ! 520: ULONG cbFileAlloc; ! 521: USHORT attrFile; ! 522: ULONG cbList; ! 523: UCHAR cchName; ! 524: CHAR achName[CCHMAXPATHCOMP]; ! 525: } FILEFINDBUF2; ! 526: ! 527: #pragma pack() ! 528: ! 529: typedef FILEFINDBUF2 *PFILEFINDBUF2; ! 530: ! 531: /* extended attribute structures */ ! 532: ! 533: typedef struct _GEA { /* gea */ ! 534: BYTE cbName; /* name length not including NULL */ ! 535: CHAR szName[1]; /* attribute name */ ! 536: } GEA; ! 537: typedef GEA *PGEA; ! 538: ! 539: typedef struct _GEALIST { /* geal */ ! 540: ULONG cbList; /* total bytes of structure including full list */ ! 541: GEA list[1]; /* variable length GEA structures */ ! 542: } GEALIST; ! 543: typedef GEALIST* PGEALIST; ! 544: ! 545: typedef struct _FEA { /* fea */ ! 546: BYTE fEA; /* flags */ ! 547: BYTE cbName; /* name length not including NULL */ ! 548: USHORT cbValue; /* value length */ ! 549: } FEA; ! 550: typedef FEA *PFEA; ! 551: ! 552: /* flags for _FEA.fEA */ ! 553: ! 554: #define FEA_NEEDEA 0x80 /* need EA bit */ ! 555: ! 556: typedef struct _FEALIST { /* feal */ ! 557: ULONG cbList; /* total bytes of structure including full list */ ! 558: FEA list[1]; /* variable length FEA structures */ ! 559: } FEALIST; ! 560: typedef FEALIST* PFEALIST; ! 561: ! 562: typedef struct _EAOP { /* eaop */ ! 563: PGEALIST fpGEAList; /* general EA list */ ! 564: PFEALIST fpFEAList; /* full EA list */ ! 565: ULONG oError; ! 566: } EAOP; ! 567: typedef EAOP* PEAOP; ! 568: ! 569: /* ! 570: * Equates for the types of EAs that follow the convention that we have ! 571: * established. ! 572: * ! 573: * Values 0xFFFE thru 0x8000 are reserved. ! 574: * Values 0x0000 thru 0x7fff are user definable. ! 575: * Value 0xFFFC is not used ! 576: */ ! 577: ! 578: #define EAT_BINARY 0xFFFE /* length preceeded binary */ ! 579: #define EAT_ASCII 0xFFFD /* length preceeded ASCII */ ! 580: #define EAT_BITMAP 0xFFFB /* length preceeded bitmap */ ! 581: #define EAT_METAFILE 0xFFFA /* length preceeded metafile */ ! 582: #define EAT_ICON 0xFFF9 /* length preceeded icon */ ! 583: #define EAT_EA 0xFFEE /* length preceeded ASCII */ ! 584: /* name of associated data (#include) */ ! 585: #define EAT_MVMT 0xFFDF /* multi-valued, multi-typed field */ ! 586: #define EAT_MVST 0xFFDE /* multi-valued, single-typed field */ ! 587: #define EAT_ASN1 0xFFDD /* ASN.1 field */ ! 588: ! 589: #endif /* !INCL_SAADEFS */ ! 590: ! 591: APIRET APIENTRY DosOpen(PSZ pszFile, PHFILE pHfile, PULONG pulAction, ULONG cbSize, ULONG attr, ULONG flag, ULONG mode, PEAOP peaop); ! 592: ! 593: APIRET APIENTRY DosClose(HFILE hFile); ! 594: ! 595: APIRET APIENTRY DosRead(HFILE hFile, PVOID pBuffer, ULONG cbRead, PULONG pcbActual); ! 596: ! 597: APIRET APIENTRY DosWrite(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual); ! 598: ! 599: /* File time and date types */ ! 600: ! 601: typedef struct _FILESTATUS { /* fsts */ ! 602: FDATE fdateCreation; ! 603: FTIME ftimeCreation; ! 604: FDATE fdateLastAccess; ! 605: FTIME ftimeLastAccess; ! 606: FDATE fdateLastWrite; ! 607: FTIME ftimeLastWrite; ! 608: ULONG cbFile; ! 609: ULONG cbFileAlloc; ! 610: USHORT attrFile; ! 611: } FILESTATUS; ! 612: typedef FILESTATUS *PFILESTATUS; ! 613: ! 614: #pragma pack(2) ! 615: ! 616: typedef struct _FILESTATUS2 { /* fsts2 */ ! 617: FDATE fdateCreation; ! 618: FTIME ftimeCreation; ! 619: FDATE fdateLastAccess; ! 620: FTIME ftimeLastAccess; ! 621: FDATE fdateLastWrite; ! 622: FTIME ftimeLastWrite; ! 623: ULONG cbFile; ! 624: ULONG cbFileAlloc; ! 625: USHORT attrFile; ! 626: ULONG cbList; ! 627: } FILESTATUS2; ! 628: ! 629: #pragma pack() ! 630: ! 631: typedef FILESTATUS2 *PFILESTATUS2; ! 632: ! 633: typedef struct _FSALLOCATE { /* fsalloc */ ! 634: ULONG idFileSystem; ! 635: ULONG cSectorUnit; ! 636: ULONG cUnit; ! 637: ULONG cUnitAvail; ! 638: USHORT cbSector; ! 639: } FSALLOCATE; ! 640: typedef FSALLOCATE *PFSALLOCATE; ! 641: ! 642: typedef SHANDLE HDIR; /* hdir */ ! 643: typedef HDIR *PHDIR; ! 644: ! 645: /* XLATOFF */ ! 646: #define DosOpen2 DosOpen ! 647: #define DosFindFirst2 DosFindFirst ! 648: #define DosQFHandState DosQueryFHState ! 649: #define DosSetFHandState DosSetFHState ! 650: #define DosQHandType DosQueryHType ! 651: #define DosQFSAttach DosQueryFSAttach ! 652: #define DosNewSize DosSetFileSize ! 653: #define DosBufReset DosResetBuffer ! 654: #define DosChgFilePtr DosSetFilePtr ! 655: #define DosFileLocks DosSetFileLocks ! 656: #define DosMkDir DosCreateDir ! 657: #define DosMkDir2 DosCreateDir ! 658: #define DosRmDir DosDeleteDir ! 659: #define DosSelectDisk DosSetDefaultDisk ! 660: #define DosQCurDisk DosQueryCurrentDisk ! 661: #define DosChDir DosSetCurrentDir ! 662: #define DosQCurDir DosQueryCurrentDir ! 663: #define DosQFSInfo DosQueryFSInfo ! 664: #define DosQVerify DosQueryVerify ! 665: #define DosQFileInfo DosQueryFileInfo ! 666: #define DosQPathInfo DosQueryPathInfo ! 667: /* XLATON */ ! 668: ! 669: APIRET APIENTRY DosDelete(PSZ pszFile); ! 670: ! 671: APIRET APIENTRY DosDupHandle(HFILE hFile, PHFILE pHfile); ! 672: ! 673: APIRET APIENTRY DosQueryFHState(HFILE hFile, PULONG pMode); ! 674: ! 675: APIRET APIENTRY DosSetFHState(HFILE hFile, ULONG mode); ! 676: ! 677: APIRET APIENTRY DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr); ! 678: ! 679: APIRET APIENTRY DosFindFirst(PSZ pszMatch, PHDIR pHdir, ULONG attr, PFILEFINDBUF pfindbuf, ULONG cbBuf, PULONG pcSearch, ULONG infolevel); ! 680: ! 681: APIRET APIENTRY DosFindNext(HDIR hDir, PFILEFINDBUF pFindbuf, ULONG cbBuf, PULONG pcSearch); ! 682: ! 683: APIRET APIENTRY DosFindClose(HDIR hDir); ! 684: ! 685: APIRET APIENTRY DosFSAttach(PSZ pszDevice, PSZ pszFilesystem, PVOID pData, ULONG cbData, ULONG flag); ! 686: ! 687: APIRET APIENTRY DosQueryFSAttach(PSZ pszDevice, ULONG ordinal, ULONG infolevel, PVOID pFSAttr, PULONG cbFSAttr); ! 688: ! 689: APIRET APIENTRY DosFSCtl(PVOID pData, ULONG cbData, PULONG pcbData, PVOID pParms, ULONG cbParms, PULONG pcbParms, ULONG function, PSZ pszRoute, HFILE hFile, ULONG method); ! 690: ! 691: APIRET APIENTRY DosSetFileSize(HFILE hFile, ULONG cbSize); ! 692: ! 693: APIRET APIENTRY DosResetBuffer(HFILE hFile); ! 694: ! 695: APIRET APIENTRY DosSetFilePtr(HFILE hFile, LONG ib, ULONG method, PULONG ibActual); ! 696: ! 697: APIRET APIENTRY DosSetFileLocks(HFILE hFile, PFILELOCK pflUnlock, PFILELOCK pflLock); ! 698: ! 699: APIRET APIENTRY DosMove(PSZ pszOld, PSZ pszNew); ! 700: ! 701: APIRET APIENTRY DosCopy(PSZ pszOld, PSZ pszNew, ULONG option); ! 702: ! 703: APIRET APIENTRY DosEditName(ULONG metalevel, PSZ pszSource, PSZ pszEdit, PBYTE pszTarget, ULONG cbTarget); ! 704: ! 705: APIRET APIENTRY DosFileIO(HFILE hFile, PVOID pCmd, ULONG cbCmd, PLONG ibError); ! 706: ! 707: APIRET APIENTRY DosCreateDir(PSZ pszDir, PEAOP peaop); ! 708: ! 709: APIRET APIENTRY DosDeleteDir(PSZ pszDir); ! 710: ! 711: APIRET APIENTRY DosSetDefaultDisk(ULONG disknum); ! 712: ! 713: APIRET APIENTRY DosQueryCurrentDisk(PULONG pdisknum, PULONG plogical); ! 714: ! 715: APIRET APIENTRY DosSetCurrentDir(PSZ pszDir); ! 716: ! 717: APIRET APIENTRY DosQueryCurrentDir(ULONG disknum, PBYTE pBuf, PULONG pcbBuf); ! 718: ! 719: APIRET APIENTRY DosQueryFSInfo(ULONG disknum, ULONG infolevel, PVOID pBuf, ULONG cbBuf); ! 720: ! 721: APIRET APIENTRY DosSetFSInfo(ULONG disknum, ULONG infolevel, PVOID pBuf, ULONG cbBuf); ! 722: ! 723: APIRET APIENTRY DosQueryVerify(PBOOL32 pBool); ! 724: ! 725: APIRET APIENTRY DosSetVerify(BOOL32); ! 726: ! 727: APIRET APIENTRY DosSetMaxFH(ULONG cFH); ! 728: ! 729: APIRET APIENTRY DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH); ! 730: ! 731: APIRET APIENTRY DosQueryFileInfo(HFILE hFile, ULONG infolevel, PVOID pBuf, ULONG cbBuf); ! 732: ! 733: APIRET APIENTRY DosSetFileInfo(HFILE hFile, ULONG infolevel, PVOID pBuf, ULONG cbBuf); ! 734: ! 735: APIRET APIENTRY DosQueryPathInfo(PSZ pszPath, ULONG infolevel, PVOID pBuf, ULONG cbBuf); ! 736: ! 737: APIRET APIENTRY DosSetPathInfo(PSZ pszPath, ULONG infolevel, PVOID pBuf, ULONG cbBuf, ULONG usFlags); ! 738: ! 739: /* defines for DosSetPathInfo -pathinfo flag */ ! 740: #define DSPI_WRTTHRU 0x10 /* write through */ ! 741: ! 742: ! 743: APIRET APIENTRY DosEnumAttribute(ULONG fRefType, PVOID pFileRef, ULONG iStartEntry, PVOID pEnumBuf, ULONG cbBuf, PULONG pcbActual, ULONG infoLevel); ! 744: ! 745: typedef struct _DENA1 { /* _dena1 level 1 info returned from DosEnumAttribute */ ! 746: UCHAR reserved; /* 0 */ ! 747: UCHAR cbName; /* length of name exculding NULL */ ! 748: USHORT cbValue; /* length of value */ ! 749: UCHAR szName[1]; /* variable length asciiz name */ ! 750: } DENA1; ! 751: typedef DENA1 FAR *PDENA1; ! 752: ! 753: /* Infolevels for DosEnumAttribute */ ! 754: #define ENUMEA_LEVEL_NO_VALUE 1L /* FEA without value */ ! 755: /* Reference types for DosEnumAttribute */ ! 756: #define ENUMEA_REFTYPE_FHANDLE 0 /* file handle */ ! 757: #define ENUMEA_REFTYPE_PATH 1 /* path name */ ! 758: #define ENUMEA_REFTYPE_MAX ENUMEA_REFTYPE_PATH ! 759: ! 760: #endif /* common INCL_DOSFILEMGR */ ! 761: ! 762: #if (defined(INCL_DOSMEMMGR) || !defined(INCL_NOCOMMON)) ! 763: /*** Memory management */ ! 764: ! 765: APIRET APIENTRY DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag); ! 766: ! 767: APIRET APIENTRY DosFreeMem(PVOID pb); ! 768: ! 769: APIRET APIENTRY DosSetMem(PVOID pb, ULONG cb, ULONG flag); ! 770: ! 771: APIRET APIENTRY DosGiveSharedMem(PVOID pb, PID pid, ULONG flag); ! 772: ! 773: APIRET APIENTRY DosGetSharedMem(PVOID pb, ULONG flag); ! 774: ! 775: APIRET APIENTRY DosGetNamedSharedMem(PPVOID ppb, PSZ pszName, ULONG flag); ! 776: ! 777: APIRET APIENTRY DosAllocSharedMem(PPVOID ppb, PSZ pszName, ULONG cb, ULONG flag); ! 778: ! 779: APIRET APIENTRY DosQueryMem(PVOID pb, PULONG pcb, PULONG pFlag); ! 780: ! 781: APIRET APIENTRY DosSubAlloc(PVOID pbBase, PPVOID ppb, ULONG cb); ! 782: ! 783: APIRET APIENTRY DosSubFree(PVOID pbBase, PVOID pb, ULONG cb); ! 784: ! 785: APIRET APIENTRY DosSubSet(PVOID pbBase, ULONG flag, ULONG cb); ! 786: ! 787: APIRET APIENTRY DosSubUnset(PVOID pbBase); ! 788: ! 789: #include <bsememf.h> /* get flags for API */ ! 790: ! 791: #endif /* INCL_DOSMEMMGR */ ! 792: ! 793: #if (defined(INCL_DOSSEMAPHORES) || !defined(INCL_NOCOMMON)) ! 794: ! 795: /* ! 796: * 32-bit Semaphore Support ! 797: */ ! 798: ! 799: /* Semaphore Attributes */ ! 800: ! 801: #define DC_SEM_SHARED 0x01 /* DosCreateMutex, DosCreateEvent, and */ ! 802: /* DosCreateMuxWait use it to indicate */ ! 803: /* whether the semaphore is shared or */ ! 804: /* private when the PSZ is null */ ! 805: #define DCMW_WAIT_ANY 0x02 /* DosCreateMuxWait option for wait on any */ ! 806: /* event/mutex to occur */ ! 807: #define DCMW_WAIT_ALL 0x04 /* DosCreateMuxWait option for wait on all */ ! 808: /* events/mutexs to occur */ ! 809: ! 810: #define SEM_INDEFINITE_WAIT -1L ! 811: #define SEM_IMMEDIATE_RETURN 0L ! 812: ! 813: typedef struct _PSEMRECORD { /* psr */ ! 814: HSEM hsemCur; ! 815: ULONG ulUser; ! 816: } SEMRECORD; ! 817: typedef SEMRECORD *PSEMRECORD; ! 818: ! 819: #endif /* common INCL_DOSSEMAPHORES */ ! 820: ! 821: #ifdef INCL_DOSSEMAPHORES ! 822: ! 823: typedef ULONG HMTX; /* hmtx */ ! 824: typedef HMTX *PHMTX; ! 825: typedef ULONG HEV; /* hev */ ! 826: typedef HEV *PHEV; ! 827: typedef ULONG HMUX; /* hmux */ ! 828: typedef HMUX *PHMUX; ! 829: typedef VOID FAR *HSEM; /* hsem */ ! 830: typedef HSEM FAR *PHSEM; ! 831: ! 832: APIRET APIENTRY DosCreateEventSem (PSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState); ! 833: APIRET APIENTRY DosOpenEventSem (PSZ pszName, PHEV phev); ! 834: APIRET APIENTRY DosCloseEventSem (HEV hev); ! 835: APIRET APIENTRY DosResetEventSem (HEV hev, PULONG pulPostCt); ! 836: APIRET APIENTRY DosPostEventSem (HEV hev); ! 837: APIRET APIENTRY DosWaitEventSem (HEV hev, ULONG ulTimeout); ! 838: APIRET APIENTRY DosQueryEventSem (HEV hev, PULONG pulPostCt); ! 839: ! 840: APIRET APIENTRY DosCreateMutexSem (PSZ pszName, PHMTX phmtx, ULONG flAttr, BOOL32 fState); ! 841: APIRET APIENTRY DosOpenMutexSem (PSZ pszName, PHMTX phmtx); ! 842: APIRET APIENTRY DosCloseMutexSem (HMTX hmtx); ! 843: APIRET APIENTRY DosRequestMutexSem (HMTX hmtx, ULONG ulTimeout); ! 844: APIRET APIENTRY DosReleaseMutexSem (HMTX hmtx); ! 845: APIRET APIENTRY DosQueryMutexSem (HMTX hmtx, PID *ppid, TID *ptid, PULONG pulCount); ! 846: ! 847: APIRET APIENTRY DosCreateMuxWaitSem (PSZ pszName, PHMUX phmux, ULONG cSemRec, PSEMRECORD pSemRec, ULONG flAttr); ! 848: APIRET APIENTRY DosOpenMuxWaitSem (PSZ pszName, PHMUX phmux); ! 849: APIRET APIENTRY DosCloseMuxWaitSem (HMUX hmux); ! 850: APIRET APIENTRY DosWaitMuxWaitSem (HMUX hmux, ULONG ulTimeout, PULONG pulUser); ! 851: APIRET APIENTRY DosAddMuxWaitSem (HMUX hmux, PSEMRECORD pSemRec); ! 852: APIRET APIENTRY DosDeleteMuxWaitSem (HMUX hmux, HSEM hSem); ! 853: APIRET APIENTRY DosQueryMuxWaitSem (HMUX hmux, PULONG pcSemRec, PSEMRECORD pSemRec, PULONG pflAttr); ! 854: ! 855: #endif /* INCL_DOSSEMAPHORES */ ! 856: ! 857: #if (defined(INCL_DOSDATETIME) || !defined(INCL_NOCOMMON)) ! 858: ! 859: /*** Time support */ ! 860: ! 861: typedef struct _DATETIME { /* date */ ! 862: UCHAR hours; ! 863: UCHAR minutes; ! 864: UCHAR seconds; ! 865: UCHAR hundredths; ! 866: UCHAR day; ! 867: UCHAR month; ! 868: USHORT year; ! 869: SHORT timezone; ! 870: UCHAR weekday; ! 871: } DATETIME; ! 872: typedef DATETIME *PDATETIME; ! 873: ! 874: APIRET APIENTRY DosGetDateTime(PDATETIME pdt); ! 875: ! 876: APIRET APIENTRY DosSetDateTime(PDATETIME pdt); ! 877: ! 878: #endif /* common INCL_DOSDATETIME */ ! 879: ! 880: #ifdef INCL_DOSDATETIME ! 881: ! 882: /* XLATOFF */ ! 883: #define DosTimerAsync DosAsyncTimer ! 884: #define DosTimerStart DosStartTimer ! 885: #define DosTimerStop DosStopTimer ! 886: /* XLATON */ ! 887: ! 888: typedef SHANDLE HTIMER; ! 889: typedef HTIMER *PHTIMER; ! 890: ! 891: APIRET APIENTRY DosAsyncTimer(ULONG msec, HSEM hsem, PHTIMER phtimer); ! 892: ! 893: APIRET APIENTRY DosStartTimer(ULONG msec, HSEM hsem, PHTIMER phtimer); ! 894: ! 895: APIRET APIENTRY DosStopTimer(HTIMER htimer); ! 896: ! 897: #endif /* INCL_DOSDATETIME */ ! 898: ! 899: ! 900: /*** Module manager */ ! 901: ! 902: #ifdef INCL_DOSMODULEMGR ! 903: ! 904: /* XLATOFF */ ! 905: #define DosGetProcAddr DosQueryProcAddr ! 906: #define DosGetModHandle DosQueryModuleHandle ! 907: #define DosGetModName DosQueryModuleName ! 908: /* XLATON */ ! 909: ! 910: APIRET APIENTRY DosLoadModule(PSZ pszName, ULONG cbName, PSZ pszModname, PHMODULE phmod); ! 911: ! 912: APIRET APIENTRY DosFreeModule(HMODULE hmod); ! 913: ! 914: APIRET APIENTRY DosQueryProcAddr(HMODULE hmod, ULONG ordinal, PSZ pszName,PFN* ppfn); ! 915: ! 916: APIRET APIENTRY DosQueryModuleHandle(PSZ pszModname, PHMODULE phmod); ! 917: ! 918: APIRET APIENTRY DosQueryModuleName(HMODULE hmod, ULONG cbName, PCHAR pch); ! 919: ! 920: #define PT_16BIT 0 ! 921: #define PT_32BIT 1 ! 922: ! 923: APIRET APIENTRY DosQueryProcType(HMODULE hmod, ULONG ordinal, PSZ pszName, PULONG pulproctype); ! 924: ! 925: #endif /* INCL_DOSMODULEMGR */ ! 926: ! 927: #if (defined(INCL_DOSRESOURCES) || !defined(INCL_NOCOMMON)) ! 928: ! 929: /*** Resource support */ ! 930: ! 931: /* Predefined resource types */ ! 932: ! 933: #define RT_POINTER 1 /* mouse pointer shape */ ! 934: #define RT_BITMAP 2 /* bitmap */ ! 935: #define RT_MENU 3 /* menu template */ ! 936: #define RT_DIALOG 4 /* dialog template */ ! 937: #define RT_STRING 5 /* string tables */ ! 938: #define RT_FONTDIR 6 /* font directory */ ! 939: #define RT_FONT 7 /* font */ ! 940: #define RT_ACCELTABLE 8 /* accelerator tables */ ! 941: #define RT_RCDATA 9 /* binary data */ ! 942: #define RT_MESSAGE 10 /* error msg tables */ ! 943: #define RT_DLGINCLUDE 11 /* dialog include file name */ ! 944: #define RT_VKEYTBL 12 /* key to vkey tables */ ! 945: #define RT_KEYTBL 13 /* key to UGL tables */ ! 946: #define RT_CHARTBL 14 /* glyph to character tables */ ! 947: #define RT_DISPLAYINFO 15 /* screen display information */ ! 948: ! 949: #define RT_FKASHORT 16 /* function key area short form */ ! 950: #define RT_FKALONG 17 /* function key area long form */ ! 951: ! 952: #define RT_HELPTABLE 18 /* Help table for Cary Help manager */ ! 953: #define RT_HELPSUBTABLE 19 /* Help subtable for Cary Help manager */ ! 954: ! 955: #define RT_FDDIR 20 /* DBCS uniq/font driver directory */ ! 956: #define RT_FD 21 /* DBCS uniq/font driver */ ! 957: ! 958: #define RT_MAX 22 /* 1st unused Resource Type */ ! 959: ! 960: ! 961: #define RF_ORDINALID 0x80000000L /* ordinal id flag in resource table */ ! 962: ! 963: #endif /* common INCL_DOSRESOURCES */ ! 964: ! 965: #ifdef INCL_DOSRESOURCES ! 966: ! 967: /* XLATOFF */ ! 968: #define DosGetResource2 DosGetResource ! 969: /* XLATON */ ! 970: ! 971: APIRET APIENTRY DosGetResource(HMODULE hmod, ULONG idType, ULONG idName, PPVOID ppb); ! 972: ! 973: APIRET APIENTRY DosFreeResource(PVOID pb); ! 974: ! 975: APIRET APIENTRY DosQueryResourceSize(HMODULE hmod, ULONG idt, ULONG idn, PULONG pulsize); ! 976: ! 977: #endif /* INCL_DOSRESOURCES */ ! 978: ! 979: ! 980: /*** NLS Support */ ! 981: ! 982: #ifdef INCL_DOSNLS ! 983: ! 984: typedef struct _COUNTRYCODE { /* ctryc */ ! 985: ULONG country; ! 986: ULONG codepage; ! 987: } COUNTRYCODE; ! 988: typedef COUNTRYCODE *PCOUNTRYCODE; ! 989: ! 990: typedef struct _COUNTRYINFO { /* ctryi */ ! 991: ULONG country; ! 992: ULONG codepage; ! 993: ULONG fsDateFmt; ! 994: CHAR szCurrency[5]; ! 995: CHAR szThousandsSeparator[2]; ! 996: CHAR szDecimal[2]; ! 997: CHAR szDateSeparator[2]; ! 998: CHAR szTimeSeparator[2]; ! 999: UCHAR fsCurrencyFmt; ! 1000: UCHAR cDecimalPlace; ! 1001: UCHAR fsTimeFmt; ! 1002: USHORT abReserved1[2]; ! 1003: CHAR szDataSeparator[2]; ! 1004: USHORT abReserved2[5]; ! 1005: } COUNTRYINFO; ! 1006: typedef COUNTRYINFO *PCOUNTRYINFO; ! 1007: ! 1008: /* XLATOFF */ ! 1009: #define DosGetCtryInfo DosQueryCtryInfo ! 1010: #define DosGetDBCSEv DosQueryDBCSEnv ! 1011: #define DosCaseMap DosMapCase ! 1012: #define DosGetCollate DosQueryCollate ! 1013: #define DosGetCp DosQueryCp ! 1014: #define DosSetProcCp DosSetProcessCp ! 1015: /* XLATON */ ! 1016: ! 1017: APIRET APIENTRY DosQueryCtryInfo(ULONG cb, PCOUNTRYCODE pcc, PCOUNTRYINFO pci, PULONG pcbActual); ! 1018: ! 1019: APIRET APIENTRY DosQueryDBCSEnv(ULONG cb, PCOUNTRYCODE pcc, PCHAR pBuf); ! 1020: ! 1021: APIRET APIENTRY DosMapCase(ULONG cb, PCOUNTRYCODE pcc, PCHAR pch); ! 1022: ! 1023: APIRET APIENTRY DosQueryCollate(ULONG cb, PCOUNTRYCODE pcc, PCHAR pch, PULONG pcch); ! 1024: ! 1025: APIRET APIENTRY DosQueryCp(ULONG cb, PULONG arCP, PULONG pcCP); ! 1026: ! 1027: APIRET APIENTRY DosSetProcessCp(ULONG cp); ! 1028: ! 1029: #endif /* INCL_DOSNLS */ ! 1030: ! 1031: ! 1032: /*** Signal support */ ! 1033: ! 1034: #ifdef INCL_DOSSIGNALS ! 1035: ! 1036: /* DosSetSigExceptionFocus codes */ ! 1037: ! 1038: #define SIG_UNSETFOCUS 0 ! 1039: #define SIG_SETFOCUS 1 ! 1040: ! 1041: #include <bsexcpt.h> ! 1042: ! 1043: APIRET APIENTRY DosSetExceptionHandler(PEHS phandler); ! 1044: ! 1045: APIRET APIENTRY DosUnsetExceptionHandler(PEHS phandler); ! 1046: ! 1047: APIRET APIENTRY DosRaiseException(PXCPT pexcept); ! 1048: ! 1049: APIRET APIENTRY DosSendSignalException(PID pid, ULONG exception); ! 1050: ! 1051: APIRET APIENTRY DosUnwindException(PEHS phandler); ! 1052: ! 1053: APIRET APIENTRY DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes); ! 1054: ! 1055: APIRET APIENTRY DosEnterMustComplete(PULONG pulNesting); ! 1056: ! 1057: APIRET APIENTRY DosExitMustComplete(PULONG pulNesting); ! 1058: ! 1059: #endif /* INCL_DOSSIGNALS */ ! 1060: ! 1061: ! 1062: /*** Pipe and queue support */ ! 1063: ! 1064: #ifdef INCL_DOSQUEUES ! 1065: #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON)) ! 1066: ! 1067: typedef SHANDLE HQUEUE; /* hq */ ! 1068: typedef HQUEUE *PHQUEUE; ! 1069: typedef struct _REQUESTDATA { /* reqqdata */ ! 1070: PID pid; ! 1071: ULONG ulData; ! 1072: } REQUESTDATA; ! 1073: typedef REQUESTDATA *PREQUESTDATA; ! 1074: ! 1075: #define QUE_FIFO 0L ! 1076: #define QUE_LIFO 1L ! 1077: #define QUE_PRIORITY 2L ! 1078: ! 1079: /* XLATOFF */ ! 1080: #define DosMakePipe DosCreatePipe ! 1081: /* XLATON */ ! 1082: ! 1083: APIRET APIENTRY DosCreatePipe(PHFILE phfRead, PHFILE phfWrite, ULONG cb); ! 1084: ! 1085: APIRET APIENTRY DosCloseQueue(HQUEUE hq); ! 1086: ! 1087: APIRET APIENTRY DosCreateQueue(PHQUEUE phq, ULONG priority, PSZ pszName); ! 1088: ! 1089: APIRET APIENTRY DosOpenQueue(PPID ppid, PHQUEUE phq, PSZ pszName); ! 1090: ! 1091: APIRET APIENTRY DosPeekQueue(HQUEUE hq, PREQUESTDATA pRequest, PULONG pcbData, PPVOID ppbuf, PULONG element, BOOL32 nowait, PBYTE ppriority, HSEM hsem); ! 1092: ! 1093: APIRET APIENTRY DosPurgeQueue(HQUEUE hq); ! 1094: ! 1095: APIRET APIENTRY DosQueryQueue(HQUEUE hq, PULONG pcbEntries); ! 1096: ! 1097: APIRET APIENTRY DosReadQueue(HQUEUE hq, PREQUESTDATA pRequest, PULONG pcbData, PPVOID ppbuf, ULONG element, BOOL32 wait, PBYTE ppriority, HSEM hsem); ! 1098: ! 1099: APIRET APIENTRY DosWriteQueue(HQUEUE hq, ULONG request, ULONG cbData, PVOID pbData, ULONG priority); ! 1100: ! 1101: #else /* INCL_DOSFILEMGR || !INCL_NOCOMMON */ ! 1102: #error PHFILE not defined - define INCL_DOSFILEMGR or undefine INCL_NOCOMMON ! 1103: #endif /* INCL_DOSFILEMGR || !INCL_NOCOMMON */ ! 1104: #endif /* INCL_DOSQUEUES */ ! 1105: ! 1106: #ifdef INCL_DOSMISC ! 1107: ! 1108: /* definitions for DosSearchPath control word */ ! 1109: #define DSP_IMPLIEDCUR 1 /* current dir will be searched first */ ! 1110: #define DSP_PATHREF 2 /* from env.variable */ ! 1111: #define DSP_IGNORENETERR 4 /* ignore net errs & continue search */ ! 1112: ! 1113: /* indices for DosQuerySysInfo */ ! 1114: #define QSV_MAX_PATH_LENGTH 1 ! 1115: #define Q_MAX_PATH_LENGTH QSV_MAX_PATH_LENGTH ! 1116: #define QSV_MAX_TEXT_SESSIONS 2 ! 1117: #define QSV_MAX_PM_SESSIONS 3 ! 1118: #define QSV_MAX_VDM_SESSIONS 4 ! 1119: #define QSV_BOOT_DRIVE 5 /* 1=A, 2=B, etc. */ ! 1120: #define QSV_DYN_PRI_VARIATION 6 /* 0=Absolute, 1=Dynamic */ ! 1121: #define QSV_MAX_WAIT 7 /* seconds */ ! 1122: #define QSV_MIN_SLICE 8 /* milli seconds */ ! 1123: #define QSV_MAX_SLICE 9 /* milli seconds */ ! 1124: #define QSV_PAGE_SIZE 10 ! 1125: #define QSV_VERSION_MAJOR 11 ! 1126: #define QSV_VERSION_MINOR 12 ! 1127: #define QSV_VERSION_REVISION 13 /* Revision letter */ ! 1128: #define QSV_MS_COUNT 14 /* Free running millisecond counter */ ! 1129: #define QSV_TIME_LOW 15 /* Low dword of time in seconds */ ! 1130: #define QSV_TIME_HIGH 16 /* High dword of time in seconds */ ! 1131: #define QSV_TOTPHYSMEM 17 /* Physical memory on system */ ! 1132: #define QSV_TOTRESMEM 18 /* Resident memory on system */ ! 1133: #define QSV_TOTAVAILMEM 19 /* Available memory for all processes */ ! 1134: #define QSV_MAXPRMEM 20 /* Avail private mem for calling proc */ ! 1135: #define QSV_MAXSHMEM 21 /* Avail shared mem for calling proc */ ! 1136: #define QSV_TIMER_INTERVAL 22 /* Timer interval in tenths of ms */ ! 1137: #define QSV_MAX QSV_TIMER_INTERVAL ! 1138: ! 1139: /* definitions for DosError - combine with | */ ! 1140: #define FERR_DISABLEHARDERR 0x00000000L /* disable hard error popups */ ! 1141: #define FERR_ENABLEHARDERR 0x00000001L /* enable hard error popups */ ! 1142: #define FERR_ENABLEEXCEPTION 0x00000000L /* enable exception popups */ ! 1143: #define FERR_DISABLEEXCEPTION 0x00000002L /* disable exception popups */ ! 1144: ! 1145: /* XLATOFF */ ! 1146: #define DosInsMessage DosInsertMessage ! 1147: #define DosQSysInfo DosQuerySysInfo ! 1148: /* XLATON */ ! 1149: ! 1150: APIRET APIENTRY DosError(ULONG error); ! 1151: ! 1152: APIRET APIENTRY DosGetMessage(PCHAR* pTable, ULONG cTable, PCHAR pBuf, ULONG cbBuf, ULONG msgnumber, PSZ pszFile, PULONG pcbMsg); ! 1153: ! 1154: APIRET APIENTRY DosErrClass(ULONG code, PULONG pClass, PULONG pAction, PULONG pLocus); ! 1155: ! 1156: APIRET APIENTRY DosInsertMessage(PCHAR* pTable, ULONG cTable, PSZ pszMsg, ULONG cbMsg, PCHAR pBuf, ULONG cbBuf, PULONG pcbMsg); ! 1157: ! 1158: APIRET APIENTRY DosPutMessage(HFILE hfile, ULONG cbMsg, PCHAR pBuf); ! 1159: ! 1160: APIRET APIENTRY DosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf); ! 1161: ! 1162: APIRET APIENTRY DosScanEnv(PSZ pszName, PSZ *ppszValue); ! 1163: ! 1164: APIRET APIENTRY DosSearchPath(ULONG flag, PSZ pszPathOrName, PSZ pszFilename, PBYTE pBuf, ULONG cbBuf); ! 1165: ! 1166: APIRET APIENTRY DosQueryMessageCP(PCHAR pb, ULONG cb, PSZ pszFilename, PULONG cbBuf); ! 1167: ! 1168: APIRET APIENTRY DosDynamicTrace(ULONG lCmd, PBYTE preqUser, PBYTE presUser); ! 1169: ! 1170: #endif /* INCL_DOSMISC */ ! 1171: ! 1172: ! 1173: /*** Session manager support */ ! 1174: ! 1175: #ifdef INCL_DOSSESMGR ! 1176: ! 1177: typedef struct _STARTDATA { /* stdata */ ! 1178: USHORT Length; ! 1179: USHORT Related; ! 1180: USHORT FgBg; ! 1181: USHORT TraceOpt; ! 1182: PSZ PgmTitle; ! 1183: PSZ PgmName; ! 1184: PBYTE PgmInputs; ! 1185: PBYTE TermQ; ! 1186: PBYTE Environment; ! 1187: USHORT InheritOpt; ! 1188: USHORT SessionType; ! 1189: PSZ IconFile; ! 1190: ULONG PgmHandle; ! 1191: USHORT PgmControl; ! 1192: USHORT InitXPos; ! 1193: USHORT InitYPos; ! 1194: USHORT InitXSize; ! 1195: USHORT InitYSize; ! 1196: USHORT Reserved; ! 1197: PSZ ObjectBuffer; ! 1198: ULONG ObjectBuffLen; ! 1199: } STARTDATA; ! 1200: typedef STARTDATA *PSTARTDATA; ! 1201: ! 1202: #define SSF_RELATED_INDEPENDENT 0 ! 1203: #define SSF_RELATED_CHILD 1 ! 1204: ! 1205: #define SSF_FGBG_FORE 0 ! 1206: #define SSF_FGBG_BACK 1 ! 1207: ! 1208: #define SSF_TRACEOPT_NONE 0 ! 1209: #define SSF_TRACEOPT_TRACE 1 ! 1210: #define SSF_TRACEOPT_TRACEALL 2 ! 1211: ! 1212: #define SSF_INHERTOPT_SHELL 0 ! 1213: #define SSF_INHERTOPT_PARENT 1 ! 1214: ! 1215: /* note that these types are identical to those in pmshl.h for PROG_* */ ! 1216: #define SSF_TYPE_DEFAULT 0 ! 1217: #define SSF_TYPE_FULLSCREEN 1 ! 1218: #define SSF_TYPE_WINDOWABLEVIO 2 ! 1219: #define SSF_TYPE_PM 3 ! 1220: #define SSF_TYPE_VDM 4 ! 1221: #define SSF_TYPE_GROUP 5 ! 1222: #define SSF_TYPE_DLL 6 ! 1223: #define SSF_TYPE_WINDOWEDVDM 7 ! 1224: #define SSF_TYPE_PDD 8 ! 1225: #define SSF_TYPE_VDD 9 ! 1226: ! 1227: /* note that these flags are identical to those in pmshl.h for SHE_* */ ! 1228: #define SSF_CONTROL_VISIBLE 0x0000 ! 1229: #define SSF_CONTROL_INVISIBLE 0x0001 ! 1230: #define SSF_CONTROL_MAXIMIZE 0x0002 ! 1231: #define SSF_CONTROL_MINIMIZE 0x0004 ! 1232: #define SSF_CONTROL_NOAUTOCLOSE 0x0008 ! 1233: #define SSF_CONTROL_SETPOS 0x8000 ! 1234: ! 1235: typedef struct _STATUSDATA { /* stsdata */ ! 1236: USHORT Length; ! 1237: USHORT SelectInd; ! 1238: USHORT BondInd; ! 1239: } STATUSDATA; ! 1240: typedef STATUSDATA *PSTATUSDATA; ! 1241: ! 1242: /* XLATOFF */ ! 1243: #define DosQAppType DosQueryAppType ! 1244: /* XLATON */ ! 1245: ! 1246: APIRET APIENTRY DosStartSession(PSTARTDATA psd, PULONG pidSession, PPID ppid); ! 1247: ! 1248: APIRET APIENTRY DosSetSession(ULONG idSession, PSTATUSDATA psd); ! 1249: ! 1250: APIRET APIENTRY DosSelectSession(ULONG idSession); ! 1251: ! 1252: APIRET APIENTRY DosStopSession(ULONG scope, ULONG idSession); ! 1253: ! 1254: APIRET APIENTRY DosQueryAppType(PSZ pszName, PULONG pFlags); ! 1255: ! 1256: #endif /* INCL_DOSSESMGR */ ! 1257: ! 1258: #if (defined(INCL_DOSSESMGR) || defined(INCL_DOSFILEMGR)) ! 1259: ! 1260: /* AppType returned in by DosQueryAppType in pFlags as follows */ ! 1261: #define FAPPTYP_NOTSPEC 0x0000 ! 1262: #define FAPPTYP_NOTWINDOWCOMPAT 0x0001 ! 1263: #define FAPPTYP_WINDOWCOMPAT 0x0002 ! 1264: #define FAPPTYP_WINDOWAPI 0x0003 ! 1265: #define FAPPTYP_BOUND 0x0008 ! 1266: #define FAPPTYP_DLL 0x0010 ! 1267: #define FAPPTYP_DOS 0x0020 ! 1268: #define FAPPTYP_PHYSDRV 0x0040 /* physical device driver */ ! 1269: #define FAPPTYP_VIRTDRV 0x0080 /* virtual device driver */ ! 1270: #define FAPPTYP_PROTDLL 0x0100 /* 'protected memory' dll */ ! 1271: #define FAPPTYP_32BIT 0x4000 ! 1272: #define FAPPTYP_EXETYPE FAPPTYP_WINDOWAPI ! 1273: ! 1274: #define FAPPTYP_RESERVED ~(FAPPTYP_WINDOWAPI | FAPPTYP_BOUND | FAPPTYP_DLL | FAPPTYP_DOS | FAPPTYP_PHYSDRV | FAPPTYP_VIRTDRV | FAPPTYP_PROTDLL | FAPPTYP_32BIT) ! 1275: ! 1276: #ifdef INCL_DOSFILEMGR ! 1277: ! 1278: #define EAT_APPTYP_PMAPI 0x00 /* Uses PM API */ ! 1279: #define EAT_APPTYP_DOS 0x01 /* DOS APP */ ! 1280: #define EAT_APPTYP_PMW 0x02 /* Window compatible */ ! 1281: #define EAT_APPTYP_NOPMW 0x03 /* Not Window compatible */ ! 1282: #define EAT_APPTYP_EXETYPE 0x03 /* EXE type mask */ ! 1283: #define EAT_APPTYP_RESERVED ~(EAT_APPTYP_EXETYPE) ! 1284: ! 1285: #endif /* INCL_DOSFILEMGR */ ! 1286: ! 1287: #endif /* INCL_DOSSESMGR || INCL_DOSFILEMGR */ ! 1288: ! 1289: ! 1290: /*** Device support */ ! 1291: ! 1292: #ifdef INCL_DOSDEVICES ! 1293: ! 1294: /* XLATOFF */ ! 1295: #define DosDevIOCtl2 DosDevIOCtl ! 1296: /* XLATON */ ! 1297: ! 1298: APIRET APIENTRY DosDevConfig(PVOID pdevinfo, ULONG item); ! 1299: #define DEVINFO_PRINTER 0 /* Number of printers attached */ ! 1300: #define DEVINFO_RS232 1 /* Number of RS232 ports */ ! 1301: #define DEVINFO_FLOPPY 2 /* Number of diskette drives */ ! 1302: #define DEVINFO_COPROCESSOR 3 /* Presence of math coprocessor */ ! 1303: #define DEVINFO_SUBMODEL 4 /* PC Submodel Type */ ! 1304: #define DEVINFO_MODEL 5 /* PC Model Type */ ! 1305: #define DEVINFO_ADAPTER 6 /* Primary display adapter type */ ! 1306: #define DEVINFO_COPROCESSORTYPE 7 /* Type of coprocessor functionality */ ! 1307: ! 1308: APIRET APIENTRY DosDevIOCtl(HFILE hDevice, ULONG category, ULONG function, PVOID pParams, ULONG cbParmLenMax, PULONG pcbParmLen, PVOID pData, ULONG cbDataLenMax, PULONG pcbDataLen); ! 1309: ! 1310: ! 1311: APIRET APIENTRY DosPhysicalDisk(ULONG function, PVOID pBuf, ULONG cbBuf, PVOID pParams, ULONG cbParams); ! 1312: #define INFO_COUNT_PARTITIONABLE_DISKS 1 /* # of partitionable disks */ ! 1313: #define INFO_GETIOCTLHANDLE 2 /* Obtain handle */ ! 1314: #define INFO_FREEIOCTLHANDLE 3 /* Release handle */ ! 1315: ! 1316: #endif /* INCL_DOSDEVICES */ ! 1317: ! 1318: ! 1319: /*** DosNamedPipes API Support */ ! 1320: ! 1321: #ifdef INCL_DOSNMPIPES ! 1322: ! 1323: /*** Data structures used with named pipes ***/ ! 1324: ! 1325: typedef SHANDLE HPIPE; /* hp */ ! 1326: typedef HPIPE *PHPIPE; ! 1327: ! 1328: typedef struct _AVAILDATA { /* AVAILDATA */ ! 1329: USHORT cbpipe; /* bytes left in the pipe */ ! 1330: USHORT cbmessage; /* bytes left in the current message */ ! 1331: } AVAILDATA; ! 1332: typedef AVAILDATA FAR *PAVAILDATA; ! 1333: ! 1334: typedef struct _PIPEINFO { /* nmpinf */ ! 1335: USHORT cbOut; /* length of outgoing I/O buffer */ ! 1336: USHORT cbIn; /* length of incoming I/O buffer */ ! 1337: BYTE cbMaxInst; /* maximum number of instances */ ! 1338: BYTE cbCurInst; /* current number of instances */ ! 1339: BYTE cbName; /* length of pipe name */ ! 1340: CHAR szName[1]; /* start of name */ ! 1341: } PIPEINFO; ! 1342: typedef PIPEINFO FAR *PPIPEINFO; ! 1343: ! 1344: typedef struct _PIPESEMSTATE { /* nmpsmst */ ! 1345: BYTE fStatus; /* type of record, 0 = EOI, 1 = read ok, */ ! 1346: /* 2 = write ok, 3 = pipe closed */ ! 1347: BYTE fFlag; /* additional info, 01 = waiting thread */ ! 1348: USHORT usKey; /* user's key value */ ! 1349: USHORT usAvail; /* available data/space if status = 1/2 */ ! 1350: } PIPESEMSTATE; ! 1351: typedef PIPESEMSTATE FAR *PPIPESEMSTATE; ! 1352: ! 1353: #define NP_INDEFINITE_WAIT -1 ! 1354: #define NP_DEFAULT_WAIT 0L ! 1355: ! 1356: /* DosPeekNmPipe() pipe states */ ! 1357: ! 1358: #define NP_STATE_DISCONNECTED 0x0001 ! 1359: #define NP_STATE_LISTENING 0x0002 ! 1360: #define NP_STATE_CONNECTED 0x0003 ! 1361: #define NP_STATE_CLOSING 0x0004 ! 1362: ! 1363: /* DosCreateNPipe open modes */ ! 1364: ! 1365: #define NP_ACCESS_INBOUND 0x0000 ! 1366: #define NP_ACCESS_OUTBOUND 0x0001 ! 1367: #define NP_ACCESS_DUPLEX 0x0002 ! 1368: #define NP_INHERIT 0x0000 ! 1369: #define NP_NOINHERIT 0x0080 ! 1370: #define NP_WRITEBEHIND 0x0000 ! 1371: #define NP_NOWRITEBEHIND 0x4000 ! 1372: ! 1373: /* DosCreateNPipe and DosQueryNPHState state */ ! 1374: ! 1375: #define NP_READMODE_BYTE 0x0000 ! 1376: #define NP_READMODE_MESSAGE 0x0100 ! 1377: #define NP_TYPE_BYTE 0x0000 ! 1378: #define NP_TYPE_MESSAGE 0x0400 ! 1379: #define NP_END_CLIENT 0x0000 ! 1380: #define NP_END_SERVER 0x4000 ! 1381: #define NP_WAIT 0x0000 ! 1382: #define NP_NOWAIT 0x8000 ! 1383: #define NP_UNLIMITED_INSTANCES 0x00FF ! 1384: ! 1385: /* XLATOFF */ ! 1386: #define DosCallNmPipe DosCallNPipe ! 1387: #define DosConnectNmPipe DosConnectNPipe ! 1388: #define DosDisConnectNmPipe DosDisConnectNPipe ! 1389: #define DosMakeNmPipe DosCreateNPipe ! 1390: #define DosPeekNmPipe DosPeekNPipe ! 1391: #define DosQNmPHandState DosQueryNPHState ! 1392: #define DosQNmPipeInfo DosQueryNPipeInfo ! 1393: #define DosQNmPipeSemState DosQueryNPipeSemState ! 1394: #define DosRawReadNmPipe DosRawReadNPipe ! 1395: #define DosRawWriteNmPipe DosRawWriteNPipe ! 1396: #define DosSetNmPHandState DosSetNPHState ! 1397: #define DosSetNmPipeSem DosSetNPipeSem ! 1398: #define DosTransactNmPipe DosTransactNPipe ! 1399: #define DosWaitNmPipe DosWaitNPipe ! 1400: /* XLATON */ ! 1401: ! 1402: APIRET APIENTRY DosCallNPipe(PSZ pszName, PVOID pInbuf, ULONG cbIn, PVOID pOutbuf, ULONG cbOut, PULONG pcbActual, ULONG msec); ! 1403: ! 1404: APIRET APIENTRY DosConnectNPipe(HPIPE hpipe); ! 1405: ! 1406: APIRET APIENTRY DosDisConnectNPipe(HPIPE hpipe); ! 1407: ! 1408: APIRET APIENTRY DosCreateNPipe(PSZ pszName, PHPIPE pHpipe, ULONG openmode, ULONG pipemode, ULONG cbInbuf, ULONG cbOutbuf, ULONG msec); ! 1409: ! 1410: APIRET APIENTRY DosPeekNPipe(HPIPE hpipe, PVOID pBuf, ULONG cbBuf, PULONG pcbActual, PAVAILDATA pAvail, PULONG pState); ! 1411: ! 1412: APIRET APIENTRY DosQueryNPHState(HPIPE hpipe, PULONG pState); ! 1413: ! 1414: APIRET APIENTRY DosQueryNPipeInfo(HPIPE hpipe, ULONG infolevel, PVOID pBuf, ULONG cbBuf); ! 1415: ! 1416: APIRET APIENTRY DosQueryNPipeSemState(HSEM hsem, PPIPESEMSTATE pnpss, ULONG cbBuf); ! 1417: ! 1418: APIRET APIENTRY DosRawReadNPipe(PSZ pszName, ULONG cb, PULONG pLen, PVOID pBuf); ! 1419: ! 1420: APIRET APIENTRY DosRawWriteNPipe(PSZ pszName, ULONG cb); ! 1421: ! 1422: APIRET APIENTRY DosSetNPHState(HPIPE hpipe, ULONG state); ! 1423: ! 1424: APIRET APIENTRY DosSetNPipeSem(HPIPE hpipe, HSEM hsem, ULONG key); ! 1425: ! 1426: APIRET APIENTRY DosTransactNPipe(HPIPE hpipe, PVOID pOutbuf, ULONG cbOut, PVOID pInbuf, ULONG cbIn, PULONG pcbRead); ! 1427: ! 1428: APIRET APIENTRY DosWaitNPipe(PSZ pszName, ULONG msec); ! 1429: ! 1430: /* values in fStatus */ ! 1431: #define NPSS_EOI 0 /* End Of Information */ ! 1432: #define NPSS_RDATA 1 /* read data available */ ! 1433: #define NPSS_WSPACE 2 /* write space available */ ! 1434: #define NPSS_CLOSE 3 /* pipe in CLOSING state */ ! 1435: ! 1436: /* values in npss_flag */ ! 1437: #define NPSS_WAIT 0x01 /* waiting thread on end of pipe */ ! 1438: ! 1439: /* defined bits in pipe mode */ ! 1440: #define NP_NBLK 0x8000 /* non-blocking read/write */ ! 1441: #define NP_SERVER 0x4000 /* set if server end */ ! 1442: #define NP_WMESG 0x0400 /* write messages */ ! 1443: #define NP_RMESG 0x0100 /* read as messages */ ! 1444: #define NP_ICOUNT 0x00FF /* instance count field */ ! 1445: ! 1446: ! 1447: /* Named pipes may be in one of several states depending on the actions ! 1448: * that have been taken on it by the server end and client end. The ! 1449: * following state/action table summarizes the valid state transitions: ! 1450: * ! 1451: * Current state Action Next state ! 1452: * ! 1453: * <none> server DosMakeNmPipe DISCONNECTED ! 1454: * DISCONNECTED server connect LISTENING ! 1455: * LISTENING client open CONNECTED ! 1456: * CONNECTED server disconn DISCONNECTED ! 1457: * CONNECTED client close CLOSING ! 1458: * CLOSING server disconn DISCONNECTED ! 1459: * CONNECTED server close CLOSING ! 1460: * <any other> server close <pipe deallocated> ! 1461: * ! 1462: * If a server disconnects his end of the pipe, the client end will enter a ! 1463: * special state in which any future operations (except close) on the file ! 1464: * descriptor associated with the pipe will return an error. ! 1465: */ ! 1466: ! 1467: /* ! 1468: * Values for named pipe state ! 1469: */ ! 1470: ! 1471: #define NP_DISCONNECTED 1 /* after pipe creation or Disconnect */ ! 1472: #define NP_LISTENING 2 /* after DosNmPipeConnect */ ! 1473: #define NP_CONNECTED 3 /* after Client open */ ! 1474: #define NP_CLOSING 4 /* after Client or Server close */ ! 1475: ! 1476: ! 1477: #endif /* INCL_DOSNMPIPES */ ! 1478: ! 1479: /*** DosProfile API support */ ! 1480: ! 1481: #ifdef INCL_DOSPROFILE ! 1482: ! 1483: /* DosProfile ordinal number */ ! 1484: ! 1485: #define PROF_ORDINAL 133 ! 1486: ! 1487: /* DosProfile usType */ ! 1488: ! 1489: #define PROF_SYSTEM 0 ! 1490: #define PROF_USER 1 ! 1491: #define PROF_USEDD 2 ! 1492: #define PROF_KERNEL 4 ! 1493: #define PROF_VERBOSE 8 ! 1494: #define PROF_ENABLE 16 ! 1495: ! 1496: /* DosProfile usFunc */ ! 1497: ! 1498: #define PROF_ALLOC 0 ! 1499: #define PROF_CLEAR 1 ! 1500: #define PROF_ON 2 ! 1501: #define PROF_OFF 3 ! 1502: #define PROF_DUMP 4 ! 1503: #define PROF_FREE 5 ! 1504: ! 1505: /* DosProfile tic count granularity (DWORD) */ ! 1506: ! 1507: #define PROF_SHIFT 2 ! 1508: ! 1509: /* DosProfile module name string length */ ! 1510: ! 1511: #define PROF_MOD_NAME_SIZE 10 ! 1512: ! 1513: /* DosProfile error code for end of data */ ! 1514: ! 1515: #define PROF_END_OF_DATA 13 ! 1516: ! 1517: #endif /* INCL_DOSPROFILE */ ! 1518: ! 1519: ! 1520: /*** Virtual DOS Machine API support */ ! 1521: ! 1522: #ifdef INCL_DOSMVDM ! 1523: ! 1524: typedef LHANDLE HVDD; /* hvdd */ ! 1525: typedef HVDD FAR *PHVDD; /* phvdd */ ! 1526: ! 1527: APIRET APIENTRY DosOpenVDD(PSZ pszVDD, PHVDD phvdd); ! 1528: ! 1529: APIRET APIENTRY DosRequestVDD(HVDD hvdd, SGID sgid, ULONG cmd, ! 1530: ULONG cbInput, PVOID pInput, ! 1531: ULONG cbOutput, PVOID pOutput); ! 1532: ! 1533: APIRET APIENTRY DosCloseVDD(HVDD hvdd); ! 1534: ! 1535: APIRET APIENTRY DosQueryDOSProperty(SGID sgid, PSZ pszName, ! 1536: ULONG cb, PSZ pch); ! 1537: ! 1538: APIRET APIENTRY DosSetDOSProperty(SGID sgid, PSZ pszName, ! 1539: ULONG cb, PSZ pch); ! 1540: #endif /* INCL_DOSMVDM */ ! 1541: ! 1542: ! 1543: /* The following #else/#endif corresponds to a #if near the top of this */ ! 1544: /* file. The next three lines include the 16-bit version of this file, */ ! 1545: /* hence these lines MUST be the last lines in this include file. */ ! 1546: #else /* not INCL_32 */ ! 1547: ! 1548: #ifdef INCL_16 ! 1549: #include <bsedos16.h> ! 1550: #endif /* INCL_16 */ ! 1551: ! 1552: #endif /* INCL_32 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.