Files
2ine-tms34010/native/doscalls.h
T
Ryan C. Gordon 20d2bfa3ff Split out OS2EXPORT from OS2API.
Otherwise, "SomeObj * OS2API FunctionName()" won't work.
2017-12-20 18:31:48 -05:00

459 lines
12 KiB
C

#ifndef _INCL_DOSCALLS_H_
#define _INCL_DOSCALLS_H_
#include "os2types.h"
#ifdef __cplusplus
extern "C" {
#endif
#define CCHMAXPATH 260
#define CCHMAXPATHCOMP 256
enum
{
EXIT_THREAD,
EXIT_PROCESS
};
enum
{
QSV_MAX_PATH_LENGTH = 1,
QSV_MAX_TEXT_SESSIONS,
QSV_MAX_PM_SESSIONS,
QSV_MAX_VDM_SESSIONS,
QSV_BOOT_DRIVE,
QSV_DYN_PRI_VARIATION,
QSV_MAX_WAIT,
QSV_MIN_SLICE,
QSV_MAX_SLICE,
QSV_PAGE_SIZE,
QSV_VERSION_MAJOR,
QSV_VERSION_MINOR,
QSV_VERSION_REVISION,
QSV_MS_COUNT,
QSV_TIME_LOW,
QSV_TIME_HIGH,
QSV_TOTPHYSMEM,
QSV_TOTRESMEM,
QSV_TOTAVAILMEM,
QSV_MAXPRMEM,
QSV_MAXSHMEM,
QSV_TIMER_INTERVAL,
QSV_MAX_COMP_LENGTH,
QSV_FOREGROUND_FS_SESSION,
QSV_FOREGROUND_PROCESS
};
#pragma pack(push, 1)
typedef struct TIB2
{
ULONG tib2_ultid;
ULONG tib2_ulpri;
ULONG tib2_version;
USHORT tib2_usMCCount;
USHORT tib2_fMCForceFlag;
} TIB2, *PTIB2;
typedef struct TIB
{
PVOID tib_pexchain;
PVOID tib_pstack;
PVOID tib_pstacklimit;
PTIB2 tib_ptib2;
ULONG tib_version;
ULONG tib_ordinal;
} TIB, *PTIB;
#pragma pack(pop)
typedef struct PIB
{
ULONG pib_ulpid;
ULONG pib_ulppid;
HMODULE pib_hmte;
PCHAR pib_pchcmd;
PCHAR pib_pchenv;
ULONG pib_flstatus;
ULONG pib_ultype;
} PIB, *PPIB;
typedef VOID APIENTRY FNEXITLIST(ULONG);
typedef FNEXITLIST *PFNEXITLIST;
enum
{
TC_EXIT,
TC_HARDERROR,
TC_TRAP,
TC_KILLPROCESS,
TC_EXCEPTION
};
enum
{
EXLST_ADD = 1,
EXLST_REMOVE,
EXLST_EXIT
};
typedef void *PEXCEPTIONREGISTRATIONRECORD; // !!! FIXME
typedef struct
{
UCHAR hours;
UCHAR minutes;
UCHAR seconds;
UCHAR hundredths;
UCHAR day;
UCHAR month;
USHORT year;
SHORT timezone;
UCHAR weekday;
} DATETIME, *PDATETIME;
typedef void *PEAOP2; // !!! FIXME
enum
{
FILE_EXISTED = 1,
FILE_CREATED,
FILE_TRUNCATED
};
enum
{
FILE_OPEN = 0x01,
FILE_TRUNCATE = 0x02,
FILE_CREATE = 0x10
};
enum
{
FILE_NORMAL = 0x00,
FILE_READONLY = 0x01,
FILE_HIDDEN = 0x02,
FILE_SYSTEM = 0x04,
FILE_DIRECTORY = 0x10,
FILE_ARCHIVED = 0x20
};
enum
{
OPEN_ACTION_FAIL_IF_EXISTS = 0x0000,
OPEN_ACTION_OPEN_IF_EXISTS = 0x0001,
OPEN_ACTION_REPLACE_IF_EXISTS = 0x0002,
OPEN_ACTION_FAIL_IF_NEW = 0x0000,
OPEN_ACTION_CREATE_IF_NEW = 0x0010,
};
enum
{
OPEN_ACCESS_READONLY = 0x0000,
OPEN_ACCESS_WRITEONLY = 0x0001,
OPEN_ACCESS_READWRITE = 0x0002,
OPEN_SHARE_DENYREADWRITE = 0x0010,
OPEN_SHARE_DENYWRITE = 0x0020,
OPEN_SHARE_DENYREAD = 0x0030,
OPEN_SHARE_DENYNONE = 0x0040,
OPEN_FLAGS_NOINHERIT = 0x0080,
OPEN_FLAGS_NO_LOCALITY = 0x0000,
OPEN_FLAGS_SEQUENTIAL = 0x0100,
OPEN_FLAGS_RANDOM = 0x0200,
OPEN_FLAGS_RANDOMSEQUENTIAL = 0x0300,
OPEN_FLAGS_NO_CACHE = 0x1000,
OPEN_FLAGS_FAIL_ON_ERROR = 0x2000,
OPEN_FLAGS_WRITE_THROUGH = 0x4000,
OPEN_FLAGS_DASD = 0x8000,
OPEN_FLAGS_NONSPOOLED = 0x00040000,
OPEN_FLAGS_PROTECTED_HANDLE = 0x40000000
};
enum
{
FILE_BEGIN,
FILE_CURRENT,
FILE_END
};
enum
{
FIL_STANDARD = 1,
FIL_QUERYEASIZE = 2,
FIL_QUERYEASFROMLIST = 3,
FIL_QUERYFULLNAME = 5
};
#pragma pack(push, 1)
typedef struct
{
USHORT day : 5;
USHORT month : 4;
USHORT year : 7;
} FDATE, *PFDATE;
typedef struct
{
USHORT twosecs : 5;
USHORT minutes : 6;
USHORT hours : 5;
} FTIME, *PFTIME;
#pragma pack(pop)
typedef struct
{
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
} FILESTATUS3, *PFILESTATUS3;
typedef struct
{
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
ULONG cbList;
} FILESTATUS4, *PFILESTATUS4;
enum
{
CREATE_READY,
CREATE_SUSPENDED
};
enum
{
STACK_SPARSE = 0,
STACK_COMMITTED = 2
};
typedef VOID APIENTRY FNTHREAD(ULONG);
typedef FNTHREAD *PFNTHREAD;
typedef struct
{
ULONG codeTerminate;
ULONG codeResult;
} RESULTCODES, *PRESULTCODES;
enum
{
EXEC_SYNC,
EXEC_ASYNC,
EXEC_ASYNCRESULT,
EXEC_TRACE,
EXEC_BACKGROUND,
EXEC_LOAD,
EXEC_ASYNCRESULTDB
};
enum
{
DC_SEM_SHARED = 1
};
enum
{
DCMW_WAIT_ANY = (1<<1),
DCMW_WAIT_ALL = (1<<2)
};
enum
{
SEM_INDEFINITE_WAIT = -1,
SEM_IMMEDIATE_RETURN = 0
};
enum
{
DCWW_WAIT,
DCWW_NOWAIT
};
enum
{
DCWA_PROCESS,
DCWA_PROCESSTREE
};
enum
{
DSPI_WRTTHRU = 0x10,
};
enum
{
HDIR_CREATE = -1,
HDIR_SYSTEM = 1
};
enum
{
MUST_HAVE_READONLY = ( (FILE_READONLY << 8) | FILE_READONLY ),
MUST_HAVE_HIDDEN = ( (FILE_HIDDEN << 8) | FILE_HIDDEN ),
MUST_HAVE_SYSTEM = ( (FILE_SYSTEM << 8) | FILE_SYSTEM),
MUST_HAVE_DIRECTORY = ( (FILE_DIRECTORY << 8) | FILE_DIRECTORY ),
MUST_HAVE_ARCHIVED = ( (FILE_ARCHIVED << 8) | FILE_ARCHIVED )
};
typedef struct
{
ULONG oNextEntryOffset;
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
UCHAR cchName;
CHAR achName[CCHMAXPATHCOMP];
} FILEFINDBUF3, *PFILEFINDBUF3;
typedef struct
{
ULONG oNextEntryOffset;
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
ULONG cbList;
UCHAR cchName;
CHAR achName[CCHMAXPATHCOMP];
} FILEFINDBUF4, *PFILEFINDBUF4;
enum
{
DEVINFO_PRINTER,
DEVINFO_RS232,
DEVINFO_FLOPPY,
DEVINFO_COPROCESSOR,
DEVINFO_SUBMODEL,
DEVINFO_MODEL,
DEVINFO_ADAPTER
};
enum
{
FAPPTYP_NOTSPEC = 0x0000,
FAPPTYP_NOTWINDOWCOMPAT = 0x0001,
FAPPTYP_WINDOWCOMPAT = 0x0002,
FAPPTYP_WINDOWAPI = 0x0003,
FAPPTYP_BOUND = 0x0008,
FAPPTYP_DLL = 0x0010,
FAPPTYP_DOS = 0x0020,
FAPPTYP_PHYSDRV = 0x0040,
FAPPTYP_VIRTDRV = 0x0080,
FAPPTYP_PROTDLL = 0x0100,
FAPPTYP_WINDOWSREAL = 0x0200,
FAPPTYP_WINDOWSPROT = 0x0400,
FAPPTYP_WINDOWSPROT31 =0x1000,
FAPPTYP_32BIT = 0x4000
};
enum
{
BEGIN_LIBPATH = 1,
END_LIBPATH = 2
};
typedef void *PCONTEXTRECORD; // !!! FIXME
// !!! FIXME: these should probably get sorted alphabetically and/or grouped
// !!! FIXME: into areas of functionality, but for now, I'm just listing them
// !!! FIXME: in the order I implemented them to get things running.
OS2EXPORT APIRET OS2API DosGetInfoBlocks(PTIB *pptib, PPIB *pppib);
OS2EXPORT APIRET OS2API DosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
OS2EXPORT APIRET OS2API DosQueryModuleName(HMODULE hmod, ULONG cbName, PCHAR pch);
OS2EXPORT APIRET OS2API DosScanEnv(PSZ pszName, PSZ *ppszValue);
OS2EXPORT APIRET OS2API DosWrite(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual);
OS2EXPORT VOID OS2API DosExit(ULONG action, ULONG result);
OS2EXPORT APIRET OS2API DosExitList(ULONG ordercode, PFNEXITLIST pfn);
OS2EXPORT APIRET OS2API DosCreateEventSem(PSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState);
OS2EXPORT APIRET OS2API DosCreateMutexSem(PSZ pszName, PHMTX phmtx, ULONG flAttr, BOOL32 fState);
OS2EXPORT APIRET OS2API DosSetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
OS2EXPORT ULONG OS2API DosFlatToSel(VOID);
OS2EXPORT APIRET OS2API DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes);
OS2EXPORT APIRET OS2API DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH);
OS2EXPORT APIRET OS2API DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag);
OS2EXPORT APIRET OS2API DosSubSetMem(PVOID pbBase, ULONG flag, ULONG cb);
OS2EXPORT APIRET OS2API DosSubAllocMem(PVOID pbBase, PPVOID ppb, ULONG cb);
OS2EXPORT APIRET OS2API DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr);
OS2EXPORT APIRET OS2API DosSetMem(PVOID pb, ULONG cb, ULONG flag);
OS2EXPORT APIRET OS2API DosGetDateTime(PDATETIME pdt);
OS2EXPORT APIRET OS2API DosOpen(PSZ pszFileName, PHFILE pHf, PULONG pulAction, ULONG cbFile, ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2);
OS2EXPORT APIRET OS2API DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
OS2EXPORT APIRET OS2API DosReleaseMutexSem(HMTX hmtx);
OS2EXPORT APIRET OS2API DosSetFilePtr(HFILE hFile, LONG ib, ULONG method, PULONG ibActual);
OS2EXPORT APIRET OS2API DosRead(HFILE hFile, PVOID pBuffer, ULONG cbRead, PULONG pcbActual);
OS2EXPORT APIRET OS2API DosClose(HFILE hFile);
OS2EXPORT APIRET OS2API DosEnterMustComplete(PULONG pulNesting);
OS2EXPORT APIRET OS2API DosExitMustComplete(PULONG pulNesting);
OS2EXPORT APIRET OS2API DosQueryPathInfo(PSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf);
OS2EXPORT APIRET OS2API DosQueryFileInfo(HFILE hf, ULONG ulInfoLevel, PVOID pInfo, ULONG cbInfoBuf);
OS2EXPORT APIRET OS2API DosCreateThread(PTID ptid, PFNTHREAD pfn, ULONG param, ULONG flag, ULONG cbStack);
OS2EXPORT APIRET OS2API DosExecPgm(PCHAR pObjname, LONG cbObjname, ULONG execFlag, PSZ pArg, PSZ pEnv, PRESULTCODES pRes, PSZ pName);
OS2EXPORT APIRET OS2API DosResetEventSem(HEV hev, PULONG pulPostCt);
OS2EXPORT APIRET OS2API DosPostEventSem(HEV hev);
OS2EXPORT APIRET OS2API DosCloseEventSem(HEV hev);
OS2EXPORT APIRET OS2API DosWaitEventSem(HEV hev, ULONG ulTimeout);
OS2EXPORT APIRET OS2API DosQueryEventSem(HEV hev, PULONG pulPostCt);
OS2EXPORT APIRET OS2API DosFreeMem(PVOID pb);
OS2EXPORT APIRET OS2API DosWaitChild(ULONG action, ULONG option, PRESULTCODES pres, PPID ppid, PID pid);
OS2EXPORT APIRET OS2API DosWaitThread(PTID ptid, ULONG option);
OS2EXPORT APIRET OS2API DosSleep(ULONG msec);
OS2EXPORT APIRET OS2API DosSubFreeMem(PVOID pbBase, PVOID pb, ULONG cb);
OS2EXPORT APIRET OS2API DosDelete(PSZ pszFile);
OS2EXPORT APIRET OS2API DosQueryCurrentDir(ULONG disknum, PBYTE pBuf, PULONG pcbBuf);
OS2EXPORT APIRET OS2API DosSetPathInfo(PSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf, ULONG flOptions);
OS2EXPORT APIRET OS2API DosQueryModuleHandle(PSZ pszModname, PHMODULE phmod);
OS2EXPORT APIRET OS2API DosQueryProcAddr(HMODULE hmod, ULONG ordinal, PSZ pszName, PFN* ppfn);
OS2EXPORT APIRET OS2API DosQueryCp(ULONG cb, PULONG arCP, PULONG pcCP);
OS2EXPORT APIRET OS2API DosOpenL(PSZ pszFileName, PHFILE pHf, PULONG pulAction, LONGLONG cbFile, ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2);
OS2EXPORT APIRET OS2API DosFindFirst(PSZ pszFileSpec, PHDIR phdir, ULONG flAttribute, PVOID pfindbuf, ULONG cbBuf, PULONG pcFileNames, ULONG ulInfoLevel);
OS2EXPORT APIRET OS2API DosFindNext(HDIR hDir, PVOID pfindbuf, ULONG cbfindbuf, PULONG pcFilenames);
OS2EXPORT APIRET OS2API DosFindClose(HDIR hDir);
OS2EXPORT APIRET OS2API DosQueryCurrentDisk(PULONG pdisknum, PULONG plogical);
OS2EXPORT APIRET OS2API DosDevConfig(PVOID pdevinfo, ULONG item);
OS2EXPORT APIRET OS2API DosLoadModule(PSZ pszName, ULONG cbName, PSZ pszModname, PHMODULE phmod);
OS2EXPORT APIRET OS2API DosResetBuffer(HFILE hFile);
OS2EXPORT APIRET OS2API DosQueryAppType(PSZ pszName, PULONG pFlags);
OS2EXPORT APIRET OS2API DosAllocThreadLocalMemory(ULONG cb, PULONG *p);
OS2EXPORT APIRET OS2API DosFreeThreadLocalMemory(ULONG *p);
OS2EXPORT APIRET OS2API DosQueryFHState(HFILE hFile, PULONG pMode);
OS2EXPORT APIRET OS2API DosQueryExtLIBPATH(PSZ pszExtLIBPATH, ULONG flags);
OS2EXPORT APIRET OS2API DosSetMaxFH(ULONG cFH);
OS2EXPORT APIRET OS2API DosQueryThreadContext(TID tid, ULONG level, PCONTEXTRECORD pcxt);
OS2EXPORT ULONG OS2API DosSelToFlat(VOID);
OS2EXPORT APIRET OS2API DosCloseMutexSem(HMTX hmtx);
#ifdef __cplusplus
}
#endif
#endif
// end of doscalls.h ...