2020-09-30 17:12:29 +02:00

919 lines
36 KiB
C

/*static char *SCCSID = "@(#)doscalls.hwc 12.26 89/07/06";*/
#define MAXPATHLEN 260
#define MAXCOMPLEN 255
struct DateTime {
unsigned char hour; /* current hour */
unsigned char minutes; /* current minute */
unsigned char seconds; /* current second */
unsigned char hundredths; /* current hundredths of a second */
unsigned char day; /* current day */
unsigned char month; /* current month */
unsigned year; /* current year */
int timezone; /* minutes of time west of GMT */
unsigned char day_of_week; /* current day of week */
};
struct FileFindBuf {
unsigned create_date; /* date of file creation */
unsigned create_time; /* time of file creation */
unsigned access_date; /* date of last access */
unsigned access_time; /* time of last access */
unsigned write_date; /* date of last write */
unsigned write_time; /* time of last write */
unsigned long file_size; /* file size (end of data) */
unsigned long falloc_size; /* file allocated size */
unsigned attributes; /* attributes of the file */
unsigned char string_len; /* returned length of ascii name str. */
/* length does not include null byte */
char file_name[MAXCOMPLEN+1]; /* name string + NULL */
};
struct FileFind2Buf {
unsigned create_date; /* date of file creation */
unsigned create_time; /* time of file creation */
unsigned access_date; /* date of last access */
unsigned access_time; /* time of last access */
unsigned write_date; /* date of last write */
unsigned write_time; /* time of last write */
unsigned long file_size; /* file size (end of data) */
unsigned long falloc_size; /* file allocated size */
unsigned attributes; /* attributes of the file */
unsigned long cblist; /* length of FEAlist for file */
unsigned char string_len; /* returned length of ascii name str. */
/* length does not include null byte */
char file_name[MAXCOMPLEN+1]; /* name string + NULL */
};
struct FileStatus {
unsigned create_date; /* date of file creation */
unsigned create_time; /* time of file creation */
unsigned access_date; /* date of last access */
unsigned access_time; /* time of last access */
unsigned write_date; /* date of last write */
unsigned write_time; /* time of last write */
unsigned long file_size; /* file size (end of data) */
unsigned long falloc_size; /* file allocated size */
unsigned attributes; /* attributes of the file */
unsigned long cblist; /* length of FEAlist for file */
};
struct FSAllocate {
unsigned long filsys_id; /* file system ID */
unsigned long sec_per_unit; /* number sectors per allocation unit */
unsigned long num_units; /* number of allocation units */
unsigned long avail_units; /* avaliable allocation units */
unsigned bytes_sec; /* bytes per sector */
};
struct ProcIDsArea {
unsigned procid_cpid; /* current process' process ID */
unsigned procid_ctid; /* current process' thread ID */
unsigned procid_ppid; /* process ID of the parent */
};
struct ResultCodes {
unsigned TermCode_PID ; /* Termination Code -or- Process ID */
unsigned ExitCode ; /* Exit Code */
};
struct countrycode { /* changes for NLSAPI */
unsigned country; /* changes for NLSAPI */
unsigned codepage; /* changes for NLSAPI */
}; /* changes for NLSAPI */
struct CountryInfo {
unsigned country; /* country code */
unsigned codepage; /* code page */
unsigned date_fmt; /* date format */
char currency[5]; /* currency indicator */
char thousands[2]; /* thousands separator */
char decimal[2]; /* decimal separator */
char date_sep[2]; /* date separator */
char time_sep[2]; /* time separator */
unsigned char curr_fmt; /* bit fields for currency format */
unsigned char curr_places; /* currency decimal places */
unsigned char time_fmt; /* Time format (AM/PM or 24 hr) */
unsigned reserv_2[2]; /* reserved (0) */
char data_sep[2]; /* Data list separator */
unsigned reserv_3[5]; /* reserved (0) */
};
struct StartData {
unsigned Length;
unsigned Related;
unsigned FgBg;
unsigned TraceOpt;
char far * PgmTitle;
char far * PgmName;
char far * PgmInputs;
char far * TermQ;
char far * Environment;
unsigned InheritOpt;
unsigned SessionType;
char far * IconFile;
unsigned long PgmHandle;
unsigned PgmControl;
unsigned InitXPos;
unsigned InitYPos;
unsigned InitXSize;
unsigned InitYSize;
};
struct StatusData {
unsigned Length;
unsigned SelectInd;
unsigned BindInd;
};
struct RegisterData {
unsigned Length;
unsigned NotifType;
char far *DDName;
};
struct FEA { /* Attribute name & value pair */
unsigned char fea_fEA;
unsigned char fea_cbName;
unsigned short fea_cbValue;
/*
* Following fea_cbValue is fea_szName and fea_aValue with no
* padding in-between.
*
*/
};
#define FEA_NEEDEA 0x80 /* need EA bit */
#define FEA_szNameFromFEA(fea) (((char *)&(fea))+sizeof(struct FEA))
#define FEA_AValueFromFEA(fea) (((char *)&(fea))+sizeof(struct FEA)+(fea).fea_cbName+1)
#define FEA_szNameFromFEAFar(fea) (((char far *)&(fea))+sizeof(struct FEA))
#define FEA_AValueFromFEAFar(fea) (((char far *)&(fea))+sizeof(struct FEA)+(fea).fea_cbName+1)
struct FEAList { /* List of attribute/name pairs */
unsigned long feal_cbList;
struct FEA feal_list[1];
};
struct GEA { /* Attribute name structure */
unsigned char gea_cbName;
unsigned char gea_szName[1];
};
struct GEAList { /* List of names */
unsigned long geal_cbList;
struct GEA geal_list[1];
};
struct EAOP {
struct GEAList far * fpGEAList;
struct FEAList far * fpFEAList;
unsigned long offError;
};
struct EASizeBuf {
unsigned short easb_MaxEASize;
unsigned long easb_MaxEAListSize;
};
extern unsigned far pascal DOSCREATETHREAD (
void (far *)(void), /* Starting Address for new thread */
unsigned far *, /* Address to put new thread ID */
unsigned char far * ); /* Address of stack for new thread */
extern unsigned far pascal DOSRESUMETHREAD (
unsigned ); /* Thread ID */
extern unsigned far pascal DOSSUSPENDTHREAD (
unsigned ); /* Thread ID */
extern unsigned far pascal DOSCWAIT (
unsigned, /* Action (execution) codes */
unsigned, /* Wait options */
struct ResultCodes far *, /* Address to put return codes */
unsigned far *, /* Address to put process ID */
unsigned ); /* ProcessID of process to wait for */
extern unsigned far pascal DOSENTERCRITSEC (void);
extern unsigned far pascal DOSEXECPGM (
char far *, /* Object name buffer (address) */
unsigned, /* Object name buffer length */
unsigned, /* 0=synchronous, 1=asynchronous with */
/* return code discarded, 2=async */
/* with return code saved, 3=trace */
char far *, /* Address of argument strings */
char far *, /* Address of environment strings */
struct ResultCodes far *, /* Address to put return codes */
char far * ); /* Address of program filename */
extern void far pascal DOSEXIT (
unsigned, /* 0=end current thread, 1=end all */
unsigned ); /* Result Code to save for DosCwait */
extern unsigned far pascal DOSEXITCRITSEC (void);
extern unsigned far pascal DOSEXITLIST (
unsigned, /* Function request code */
void (far *)(void) ); /* Address of routine to be executed */
extern unsigned far pascal DOSGETPID (
struct ProcIDsArea far *); /* ProcID structure */
extern unsigned far pascal DOSGETPRTY (
unsigned, /* Indicate thread or process ID */
unsigned far *, /* Address to put priority */
unsigned ); /* PID of process/thread of interest */
extern unsigned far pascal DOSSETPRTY (
unsigned, /* Indicate scope of change */
unsigned, /* Priority class to set */
unsigned, /* Priority delta to apply */
unsigned ); /* Process or Thread ID of target */
extern unsigned far pascal DOSKILLPROCESS (
unsigned, /* 0=kill child processes also, */
/* 1=kill only indicated process */
unsigned ); /* Process ID of process to end */
extern unsigned far pascal DOSHOLDSIGNAL (
unsigned ); /* 0=enable signal, 1=disable signal */
extern unsigned far pascal DOSFLAGPROCESS (
unsigned, /* Process ID to signal */
unsigned, /* 0=notify entire subtree, 1=notify */
/* only the indicated process */
unsigned, /* Flag number */
unsigned ); /* Flag argument */
extern unsigned far pascal DOSSETSIGHANDLER (
void (far pascal *)(), /* Signal handler address */
unsigned long far *, /* Address of previous handler */
unsigned far *, /* Address of previous action */
unsigned, /* Indicate request type */
unsigned ); /* Signal number */
extern unsigned far pascal DOSSENDSIGNAL (
unsigned,
unsigned);
extern unsigned far pascal DOSMAKEPIPE (
unsigned far *, /* Addr to place the read handle */
unsigned far *, /* Addr to place the write handle */
unsigned ); /* Size to reserve for the pipe */
extern unsigned far pascal DOSCLOSEQUEUE (
unsigned ) ; /* queue handle */
extern unsigned far pascal DOSCREATEQUEUE (
unsigned far *, /* queue handle */
unsigned, /* queue priority */
char far * ) ; /* queue name */
extern unsigned far pascal DOSOPENQUEUE (
unsigned far *, /* PID of queue owner */
unsigned far *, /* queue handle */
char far * ) ; /* queue name */
extern unsigned far pascal DOSPEEKQUEUE (
unsigned, /* queue handle */
unsigned long far *, /* pointer to request */
unsigned far *, /* length of datum returned */
unsigned long far *, /* pointer to address of datum */
unsigned far *, /* indicator of datum returned */
unsigned char, /* wait indicator for empty queue */
unsigned char far *, /* priority of element */
unsigned long ) ; /* semaphore handle */
extern unsigned far pascal DOSPURGEQUEUE (
unsigned ) ; /* queue handle */
extern unsigned far pascal DOSQUERYQUEUE (
unsigned, /* queue handle */
unsigned far * ); /* pointer for number of elements */
extern unsigned far pascal DOSREADQUEUE (
unsigned, /* queue handle */
unsigned long far *, /* pointer to request */
unsigned far *, /* length of datum returned */
unsigned long far *, /* pointer to address of datum */
unsigned, /* indicator of datum returned */
unsigned char, /* wait indicator for empty queue */
unsigned char far *, /* priority of element */
unsigned long ) ; /* semaphore handle */
extern unsigned far pascal DOSWRITEQUEUE (
unsigned, /* queue handle */
unsigned, /* request */
unsigned, /* length of datum */
unsigned char far *, /* address of datum */
unsigned char ); /* priority of element */
extern unsigned far pascal DOSSEMCLEAR (
unsigned long ); /* semaphore handle */
extern unsigned far pascal DOSSEMREQUEST (
unsigned long, /* semaphore handle */
long ); /* Timeout, -1=no timeout, */
/* 0=immediate timeout, >1=number ms */
extern unsigned far pascal DOSSEMSET (
unsigned long ); /* semaphore handle */
extern unsigned far pascal DOSSEMSETWAIT (
unsigned long, /* semaphore handle */
long ); /* Timeout, -1=no timeout, */
/* 0=immediate timeout, >1=number ms */
extern unsigned far pascal DOSSEMWAIT (
unsigned long, /* semaphore handle */
long ); /* Timeout, -1=no timeout, */
/* 0=immediate timeout, >1=number ms */
extern unsigned far pascal DOSMUXSEMWAIT (
unsigned far *, /* address for event index number */
unsigned far *, /* list of semaphores */
long ); /* Timeout, -1=no timeout, */
/* 0=immediate timeout, >1=number ms */
extern unsigned far pascal DOSCLOSESEM (
unsigned long ); /* semaphore handle */
extern unsigned far pascal DOSCREATESEM (
unsigned, /* =0 indicates exclusive ownership */
unsigned long far *, /* address for semaphore handle */
char far * ); /* name of semaphore */
extern unsigned far pascal DOSOPENSEM (
unsigned long far *, /* address for semaphore handle */
char far * ); /* name of semaphore */
extern unsigned far pascal DOSGETDATETIME (
struct DateTime far * );
extern unsigned far pascal DOSSETDATETIME (
struct DateTime far * );
extern unsigned far pascal DOSSLEEP (
unsigned long ); /* TimeInterval - interval size */
extern unsigned far pascal DOSTIMERASYNC (
unsigned long, /* Interval size */
unsigned long, /* handle of semaphore */
unsigned far * ); /* handle of timer */
extern unsigned far pascal DOSTIMERSTART (
unsigned long, /* Interval size */
unsigned long, /* handle of semaphore */
unsigned far * ); /* handle of timer */
extern unsigned far pascal DOSTIMERSTOP (
unsigned ); /* Handle of the timer */
extern unsigned far pascal DOSALLOCSEG (
unsigned, /* Number of bytes requested */
unsigned far *, /* Selector allocated (returned) */
unsigned ); /* Indicator for sharing */
extern unsigned far pascal DOSALLOCSHRSEG (
unsigned, /* Number of bytes requested */
char far *, /* Name string */
unsigned far * ); /* Selector allocated (returned) */
extern unsigned far pascal DOSGETSHRSEG (
char far *, /* Name string */
unsigned far * ); /* Selector (returned) */
extern unsigned far pascal DOSGIVESEG (
unsigned, /* Caller's segment handle */
unsigned, /* Process ID of recipient */
unsigned far * ); /* Recipient's segment handle */
extern unsigned far pascal DOSGETSEG (
unsigned ); /* selector of shared memory segment */
extern unsigned far pascal DOSLOCKSEG (
unsigned ); /* selector segment to be locked */
extern unsigned far pascal DOSUNLOCKSEG (
unsigned ); /* selector segment to be unlocked */
extern unsigned far pascal DOSMEMAVAIL (
unsigned long far * ); /* size of largest block (returned) */
extern unsigned far pascal DOSREALLOCSEG (
unsigned, /* New size requested in bytes */
unsigned ); /* Selector */
extern unsigned far pascal DOSFREESEG (
unsigned ); /* Selector */
extern unsigned far pascal DOSFREERESOURCE (
unsigned long); /* Far Pointer to Resource */
extern unsigned far pascal DOSALLOCHUGE (
unsigned, /* Number of 65536 byte segments */
unsigned, /* Number of bytes in last segment */
unsigned far *, /* Selector allocated (returned) */
unsigned, /* Max number of 65536-byte segments */
unsigned ); /* Sharing Flags */
extern unsigned far pascal DOSGETHUGESHIFT (
unsigned far *); /* Shift Count (returned) */
extern unsigned far pascal DOSREALLOCHUGE (
unsigned, /* Number of 65536 byte segments */
unsigned, /* Number of bytes in last segment */
unsigned ); /* Selector */
extern unsigned far pascal DOSCREATECSALIAS (
unsigned, /* Data segment selector */
unsigned far * ); /* Code segment selector (returned) */
extern unsigned far pascal DOSSUBALLOC (
unsigned, /* Segment selector */
unsigned far *, /* Address of block offset */
unsigned ); /* Size of requested block */
extern unsigned far pascal DOSSUBFREE (
unsigned, /* Segment selector */
unsigned, /* Offset of memory block to free */
unsigned ); /* Size of block in bytes */
extern unsigned far pascal DOSSUBSET (
unsigned, /* Segment selector */
unsigned, /* Parameter flags */
unsigned ); /* New size of the block */
extern unsigned far pascal DOSLOADMODULE (
char far *, /* Object name buffer (address) */
unsigned, /* Object name buffer length */
char far *, /* Module name string */
unsigned far * ); /* Module handle (returned) */
extern unsigned far pascal DOSFREEMODULE (
unsigned ); /* Module handle */
extern unsigned far pascal DOSGETPROCADDR (
unsigned, /* Module handle */
char far *, /* Module name string */
unsigned long far * ); /* Procedure address (returned) */
extern unsigned far pascal DOSGETMODHANDLE (
char far *, /* Module name string */
unsigned far *); /* Module handle (returned) */
extern unsigned far pascal DOSGETMODNAME (
unsigned, /* Module handle */
unsigned, /* Maximum buffer length */
char far * ); /* Buffer (returned) */
extern unsigned far pascal DOSBEEP (
unsigned, /* Hertz (25H-7FFFH) */
unsigned ); /* Length of sound in ms */
extern unsigned far pascal DOSCLIACCESS (void);
extern unsigned far pascal DOSDEVCONFIG (
unsigned char far *, /* Returned information */
unsigned, /* Item number */
unsigned ); /* Reserved */
extern unsigned far pascal DOSDEVIOCTL (
char far *, /* Data area */
char far *, /* Command-specific argument list */
unsigned, /* Device-specific function code */
unsigned, /* Device category */
unsigned ); /* Device handle returned by Open */
extern unsigned far pascal DOSDEVIOCTL2 (
char far *, /* Data area */
unsigned, /* Length of data area */
char far *, /* Command-specific argument list */
unsigned, /* Length of argument list */
unsigned, /* Device-specific function code */
unsigned, /* Device category */
unsigned ); /* Device handle returned by Open */
extern unsigned far pascal DOSPORTACCESS (
unsigned, /* Reserved = 0 */
unsigned, /* TypeOfAccess */
unsigned, /* First_Port */
unsigned ); /* Last_Port */
extern unsigned far pascal DOSSGSWITCH (
unsigned ); /* Number of screen group */
extern unsigned far pascal DOSSGSWITCHME (
unsigned ); /* Number of screen groups */
extern unsigned far pascal DOSMONOPEN (
char far *, /* Ascii string of device name */
unsigned far * ); /* Address for handle return value */
extern unsigned far pascal DOSMONCLOSE (
unsigned ); /* Handle from DosMonOpen */
extern unsigned far pascal DOSMONREG (
unsigned, /* Handle from DosMonOpen */
unsigned char far *, /* Address of monitor input buffer */
unsigned char far *, /* Address of monitor output buffer */
unsigned, /* Position flag - 0=no positional */
/* preference, 1=front of list, */
/* 2=back of the list */
unsigned ); /* Index */
extern unsigned far pascal DOSMONREAD (
unsigned char far *, /* Address of monitor input buffer */
unsigned char, /* Block/Run indicator - 0=block */
/* input ready, 1=return */
unsigned char far *, /* Address of data buffer */
unsigned far * ); /* Number of bytes in the data record */
extern unsigned far pascal DOSMONWRITE (
unsigned char far *, /* Address of monitor output buffer */
unsigned char far *, /* Address of data buffer */
unsigned ); /* Number of bytes in data record */
extern unsigned far pascal DOSBUFRESET (
unsigned ); /* File handle */
extern unsigned far pascal DOSCHDIR (
char far *, /* Directory path name */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSCHGFILEPTR (
unsigned, /* File handle */
long, /* Distance to move in bytes */
unsigned, /* Method of moving (0,1,2) */
unsigned long far * ); /* New pointer location */
extern unsigned far pascal DOSCLOSE (
unsigned ); /* File handle */
extern unsigned far pascal DOSDELETE (
char far *, /* Filename path */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSDUPHANDLE (
unsigned, /* Existing file handle */
unsigned far * ); /* New file handle */
extern unsigned far pascal DOSENUMATTRIBUTE (
unsigned, /* RefType - indicates handle or path */
void far *, /* Pointer to file handle or path */
unsigned long, /* Starting entry in EA list */
void far *, /* Data buffer */
unsigned long, /* Data buffer size */
unsigned long far *, /* Number of entries to return */
unsigned long, /* Info level */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSFILEIO (
unsigned, /* File handle */
char far *, /* Pointer to command list buffer */
unsigned, /* Command list length */
unsigned far * ); /* Pointer to error offset */
extern unsigned far pascal DOSFILELOCKS (
unsigned, /* File handle */
long far *, /* Unlock Range */
long far * ); /* Lock Range */
extern unsigned far pascal DOSFINDCLOSE (
unsigned ); /* Directory search handle */
extern unsigned far pascal DOSFINDFIRST (
char far *, /* File path name */
unsigned far *, /* Directory search handle */
unsigned, /* Search attribute */
struct FileFindBuf far *, /* Result buffer */
unsigned, /* Result buffer length */
unsigned far *, /* Number of entries to find */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSFINDFIRST2 (
char far *, /* File path name */
unsigned far *, /* Directory search handle */
unsigned, /* Search attribute */
void far *, /* Result buffer */
unsigned, /* Result buffer length */
unsigned far *, /* Number of entries to find */
unsigned, /* Request level */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSFINDNEXT (
unsigned, /* Directory handle */
void far *, /* Result buffer */
unsigned, /* Result buffer length */
unsigned far * ); /* Number of entries to find */
extern unsigned far pascal DOSFINDNOTIFYCLOSE (
unsigned ); /* Directory watch handle */
extern unsigned far pascal DOSFINDNOTIFYFIRST (
char far *, /* Path spec */
unsigned far *, /* Directory search handle */
unsigned, /* Search attribute */
char far *, /* Result buffer */
unsigned, /* Result buffer length */
unsigned far *, /* Number of changes required */
unsigned, /* Request level */
unsigned long, /* Timeout or Duration of call */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSFINDNOTIFYNEXT (
unsigned, /* Directory handle */
char far *, /* Result buffer */
unsigned, /* Result buffer length */
unsigned far *, /* Number of required */
unsigned long ); /* Timeout or Duration of call */
extern unsigned far pascal DOSFSATTACH (
char far *, /* device name or 'd:' */
char far *, /* FSD name */
char far *, /* attach argument data */
unsigned, /* buffer length */
unsigned, /* opflag (attach or detach) */
unsigned long ); /* reserved area (must be zero) */
extern unsigned far pascal DOSFSCTL (
char far *, /* data area */
unsigned, /* data area length */
unsigned short far *, /* ptr to data area length out */
char far *, /* parameter list */
unsigned, /* parameter list length */
unsigned short far *, /* ptr to param. list length out */
unsigned, /* function code */
char far *, /* path or FSD name */
unsigned, /* file handle */
unsigned, /* route method */
unsigned long ); /* reserved area (must be zero) */
extern unsigned far pascal DOSGETINFOSEG (
unsigned far *, /* Selector for Global Info Seg */
unsigned far * ); /* Selector for Process Info Seg */
extern unsigned far pascal DOSMKDIR (
char far *, /* New directory name */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSMKDIR2 (
char far *, /* New directory name */
struct EAOP far *, /* EA structure pointer */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSMOVE (
char far *, /* Old path name */
char far *, /* New path name */
unsigned long ); /* Reserved (must be 0) */
extern unsigned far pascal DOSNEWSIZE (
unsigned, /* File handle */
unsigned long ); /* File's new size */
extern unsigned far pascal DOSOPEN (
char far *, /* File path name */
unsigned far *, /* New file's handle */
unsigned far *, /* Action taken - 1=file existed, */
/* 2=file was created */
unsigned long, /* File primary allocation */
unsigned, /* File attributes */
unsigned, /* Open function type */
unsigned, /* Open mode of the file */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSOPEN2 (
char far *, /* File path name */
unsigned far *, /* New file's handle */
unsigned far *, /* Action taken - 1=file existed, */
/* 2=file was created */
unsigned long, /* File primary allocation */
unsigned, /* File attributes */
unsigned, /* Open function type */
unsigned long, /* Open mode of the file */
struct EAOP far *, /* EA structure pointer */
unsigned long ); /* Reserved (must be zero) */
extern void far pascal DOSOPLOCKRELEASE (
unsigned long, /* kernel's oplock key */
unsigned ); /* flags indicating success or failure */
extern void far pascal DOSOPLOCKSHUTDOWN (
);
extern unsigned far pascal DOSOPLOCKWAIT (
unsigned long far *, /* kernel's oplock key */
unsigned long far * ); /* server's per-file cookie */
extern unsigned far pascal DOSSHUTDOWN (
unsigned long ); /* reserved dword */
extern unsigned far pascal DOSQCURDIR (
unsigned, /* Drive number - 1=A, etc */
char far *, /* Directory path buffer */
unsigned far * ); /* Directory path buffer length */
extern unsigned far pascal DOSQCURDISK (
unsigned far *, /* Default drive number */
unsigned long far * ); /* Drive-map area */
extern unsigned far pascal DOSQFHANDSTATE (
unsigned, /* File Handle */
unsigned far * ); /* File handle state */
extern unsigned far pascal DOSQFILEINFO (
unsigned, /* File handle */
unsigned, /* File info data required */
void far *, /* File info buffer */
unsigned ); /* File info buffer size */
extern unsigned far pascal DOSQFILEMODE (
char far *, /* File path name */
unsigned far *, /* Data area */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSQFSATTACH (
char far *, /* device name or 'd: ' */
unsigned, /* ordinal of entry in list */
unsigned, /* type of data requested */
char far *, /* data buffer */
unsigned far *, /* data buffer length */
unsigned long ); /* reserved (must be zero) */
extern unsigned far pascal DOSQFSINFO (
unsigned, /* Drive number - 0=default, 1=A, etc */
unsigned, /* File system info required */
char far *, /* File system info buffer */
unsigned ); /* File system info buffer size */
extern unsigned far pascal DOSQHANDTYPE (
unsigned, /* File Handle */
unsigned far *, /* HandleType(0=file,1=device,2=pipe)*/
unsigned far * ); /* Device Driver Attribute Word */
extern unsigned far pascal DOSQPATHINFO (
char far *, /* Path string */
unsigned, /* Path data required */
void far *, /* Path data buffer */
unsigned, /* Path data buffer size */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSQVERIFY (
unsigned far * ); /* Verify setting - 0=verify mode */
/* not active, 1=verify mode active */
extern unsigned far pascal DOSREAD (
unsigned, /* File handle */
char far *, /* Address of user buffer */
unsigned, /* Buffer length */
unsigned far * ); /* Bytes read */
extern unsigned far pascal DOSREADASYNC (
unsigned, /* File handle */
unsigned long far *, /* Address of Ram semaphore */
unsigned far *, /* Address of I/O error return code */
char far *, /* Address of user buffer */
unsigned, /* Buffer length */
unsigned far * ); /* Number of bytes actually read */
extern unsigned far pascal DOSRMDIR (
char far *, /* Directory name */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSSELECTDISK (
unsigned ); /* Default drive number */
extern unsigned far pascal DOSSETFHANDSTATE (
unsigned, /* File handle */
unsigned); /* File handle state */
extern unsigned far pascal DOSSETFSINFO (
unsigned, /* Drive number - 0=default, 1=A, etc */
unsigned, /* File system info required */
char far *, /* File system info buffer */
unsigned ); /* File system info buffer size */
extern unsigned far pascal DOSSETFILEINFO (
unsigned, /* File handle */
unsigned, /* File info data required */
void far *, /* File info buffer */
unsigned ); /* File info buffer size */
extern unsigned far pascal DOSSETFILEMODE (
char far *, /* File path name */
unsigned, /* New attribute of file */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSSETMAXFH (
unsigned ); /* Number of file handles */
extern unsigned far pascal DOSSETPATHINFO (
char far *, /* Path string */
unsigned, /* Path info data required */
void far *, /* Path info buffer */
unsigned, /* Path info buffer size */
unsigned, /* Path info flags */
unsigned long ); /* Reserved (must be zero) */
extern unsigned far pascal DOSSETVERIFY (
unsigned ); /* New value of verify switch */
extern unsigned far pascal DOSWRITE (
unsigned, /* File handle */
char far *, /* Address of user buffer */
unsigned, /* Buffer length */
unsigned far * ); /* Bytes written */
extern unsigned far pascal DOSWRITEASYNC (
unsigned, /* File handle */
unsigned long far *, /* Address of RAM semaphore */
unsigned far *, /* Address of I/O error return code */
char far *, /* Address of user buffer */
unsigned, /* Buffer length */
unsigned far * ); /* Bytes written */
extern unsigned far pascal DOSERROR (
unsigned ); /* Action flag */
extern unsigned far pascal DOSSETVEC (
unsigned, /* Exception Vector */
void (far *)(void), /* Address of exception handler */
void (far * far *)(void) ); /* Address to store previous handler */
extern unsigned far pascal DOSGETMESSAGE (
char far * far *, /* Table of variables to insert */
unsigned, /* Number of variables */
char far *, /* Address of message buffer */
unsigned, /* Length of buffer */
unsigned, /* Number of the message */
char far *, /* Message file name */
unsigned far * ); /* Length of returned message */
extern unsigned far pascal DOSERRCLASS (
unsigned, /* error code to classify */
unsigned far *, /* Class */
unsigned far *, /* Action */
unsigned far * ); /* Locus */
extern unsigned far pascal DOSINSMESSAGE (
char far * far *, /* Table of variables to insert */
unsigned, /* Number of variables */
char far *, /* Address of input string */
unsigned, /* Length of input string */
char far *, /* Address of output buffer */
unsigned, /* Length of output buffer */
unsigned far * ); /* Length of returned message */
extern unsigned far pascal DOSPUTMESSAGE (
unsigned, /* Handle of output file/device */
unsigned, /* Length of message buffer */
char far * ); /* Message buffer */
extern unsigned far pascal DOSSYSTRACE (
unsigned, /* Major trace event code (0-255) */
unsigned, /* Length of area to be recorded */
unsigned, /* Minor trace event code (0-FFFFH) */
char far * ); /* Pointer to area to be traced */
extern unsigned far pascal DOSDYNAMICTRACE (
unsigned, /* 0=add, 1=remove, 2=clear all */
char far *, /* Request Packet */
char far * ); /* Reserved = 0 */
extern unsigned far pascal DOSGETENV (
unsigned far *,
unsigned far * );
extern unsigned far pascal DOSSCANENV (
char far *,
char far * far * );
extern unsigned far pascal DOSSEARCHPATH (
unsigned,
char far *,
char far *,
char far *,
unsigned );
#define DSP_IMPLIEDCUR 1
/* current dir will be searched first */
#define DSP_PATHREF 2
/* from env.variable */
#define DSP_IGNORENETERR 4
/* ignore net errs & continue search */
extern unsigned far pascal DOSGETVERSION (
unsigned far * ); /* Address to put version number */
extern unsigned far pascal DOSGETMACHINEMODE (
unsigned char far * ); /* Address to put mode number */
extern unsigned far pascal DOSGETCTRYINFO ( /*<NLS>*/
unsigned, /* Length of data area provided */
struct countrycode far *, /* Country Code */
struct CountryInfo far *, /* Memory buffer */
unsigned far * ); /* Length of returned data */
extern unsigned far pascal DOSGETDBCSEV ( /*<NLS>*/
unsigned, /* Length of data area provided */
struct countrycode far *, /* Country Code */
char far * ); /* Pointer to data area */
extern unsigned far pascal DOSCASEMAP ( /*<NLS>*/
unsigned, /* Length of string to case map */
struct countrycode far *, /* Country Code */
char far * ); /* Address of string of binary values */
extern unsigned far pascal DOSGETCOLLATE (
unsigned, /* Buffer Length */
struct countrycode far *, /* Country Code */
char far *, /* Buffer Address */
unsigned far *); /* return legnth */
extern unsigned far pascal DOSGETCP (
unsigned, /* length of list */
unsigned far *, /* List (returned) */
unsigned far *); /* Length of returned list */
extern unsigned far pascal DOSSETCP (
unsigned, /* code page identifier */
unsigned); /* Reserved set to zero */
extern unsigned far pascal DOSSETPROCCP (
unsigned, /* code page identifier */
unsigned); /* Reserved set to zero */
extern unsigned far pascal DOSPHYSICALDISK (
unsigned, /* Type of information */
char far *, /* Pointer to return buffer */
unsigned, /* Return buffer length */
char far *, /* Pointer to user supplied */
/* information */
unsigned); /* Length of user supplied */
/* information */
extern unsigned far pascal DOSSYSTEMSERVICE (
unsigned, /* service category 0,1,2 */
char far *, /* ptr to request packet */
char far *); /* ptr to request packet */
extern unsigned far pascal DOSSTARTSESSION (
struct StartData far *,
unsigned far *,
unsigned far * );
extern unsigned far pascal DOSSETSESSION (
unsigned,
struct StatusData far * );
extern unsigned far pascal DOSSELECTSESSION (
unsigned,
unsigned long );
extern unsigned far pascal DOSSTOPSESSION (
unsigned,
unsigned,
unsigned long );
extern unsigned far pascal DOSSMREGISTERDD (
struct RegisterData far *);
extern unsigned far pascal DOSPTRACE (
char far * ); /* Buffer */
struct FSRSem {
unsigned Length;
unsigned ProcID;
unsigned ThrdID;
unsigned Usage; /* number times current owner
currently owns */
unsigned Client;
unsigned long RAMSem;
};
extern unsigned far pascal DOSGETPPID (
unsigned , /* PID of process of interest */
unsigned far *); /* Address to put ID */
extern unsigned far pascal DOSSIZESEG (
unsigned, /* Selector */
unsigned long far * ); /* Size (returned) */
extern unsigned far pascal DOSGETRESOURCE (
unsigned, /* Module handle */
unsigned, /* Type ID */
unsigned, /* Name ID */
unsigned far * ); /* Selector (returned) */
extern unsigned far pascal DOSGETRESOURCE2 (
unsigned, /* Module handle */
unsigned, /* Type ID */
unsigned, /* Name ID */
unsigned long far * ); /* Far Pointer (returned) */
extern unsigned far pascal DOSFSRAMSEMREQUEST (
struct FSRSem far *, /* ptr to structure */
long); /* Timeout to wait */
extern unsigned far pascal DOSFSRAMSEMCLEAR (
struct FSRSem far *); /* ptr to structure */
extern void far pascal DOSCALLBACK (
void (far *)() ); /* Subroutine address */
extern unsigned far pascal DOSR2STACKREALLOC (
unsigned ); /* New ring 2 stack size */
extern unsigned far pascal DOSQAPPTYPE (
char far *, /* Pointer to file name */
unsigned far * ); /* Address of returned type */
extern unsigned far pascal DOSEDITNAME (
unsigned, /* Level of meta editing semantics */
char far *, /* String to transform */
char far *, /* Editing string */
char far *, /* Destination string buffer */
unsigned ); /* Destination string buffer length */
#define Q_MAX_PATH_LENGTH 0 /* index for query max path length */
extern unsigned far pascal DOSQSYSINFO (
unsigned, /* Index of constant requested */
char far *, /* Pointer to return buffer */
unsigned ); /* return buffer size */
extern unsigned far pascal DOSMAKENMPIPE (
char far *, /* Pipe file name */
int far *, /* File handle (returned) */
unsigned short, /* Open mode prototype */
unsigned short, /* Pipe mode */
unsigned short, /* Outgoing buffer size (advisory) */
unsigned short, /* Incoming buffer size (advisory) */
long); /* Timeout */
extern unsigned far pascal DOSQNMPIPEINFO (
int, /* File handle */
unsigned short, /* Information level */
char far *, /* Data buffer */
unsigned short); /* Data buffer size */
extern unsigned far pascal DOSCONNECTNMPIPE (
int); /* File handle */
extern unsigned far pascal DOSDISCONNECTNMPIPE (
int); /* File handle */
extern unsigned far pascal DOSQNMPHANDSTATE (
int, /* File handle */
unsigned short far *); /* Pipe mode (returned) */
extern unsigned far pascal DOSSETNMPHANDSTATE (
int, /* File handle */
unsigned short); /* Pipe mode */
struct AvailData {
unsigned short cbpipe;
unsigned short cbmessage;
};
extern unsigned far pascal DOSPEEKNMPIPE (
int, /* File handle */
char far *, /* Data buffer */
unsigned short, /* Data buffer length */
unsigned short far *,
struct AvailData far *, /* Avail. data (two words, returned) */
unsigned short far *);
extern unsigned far pascal DOSWAITNMPIPE (
char far *, /* Pipe file name */
long); /* Timeout */
extern unsigned far pascal DOSTRANSACTNMPIPE (
int, /* File handle */
char far *, /* Write buffer address */
unsigned short, /* Write buffer length */
char far *, /* Read buffer address */
unsigned short, /* Read buffer length */
unsigned short far *); /* Bytes read (returned) */
extern unsigned far pascal DOSCALLNMPIPE (
char far *, /* Pipe file name */
char far *, /* Write buffer address */
unsigned short, /* Write buffer length */
char far *, /* Read buffer address */
unsigned short, /* Read buffer length */
unsigned short far *, /* Bytes read (returned) */
long); /* Timeout */
extern unsigned far pascal DOSSETNMPIPESEM (
int, /* File handle */
unsigned long, /* Semaphore handle */
unsigned short); /* Key */
extern unsigned far pascal DOSQNMPIPESEMSTATE (
unsigned long, /* Semaphore handle */
char far *, /* Information buffer */
unsigned short); /* Information buffer length */
extern unsigned far pascal DOSCOPY (
char far *, /* source name */
char far *, /* destination name */
unsigned short, /* OpMode */
unsigned long); /* reserved */