/*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 ( /**/ 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 ( /**/ unsigned, /* Length of data area provided */ struct countrycode far *, /* Country Code */ char far * ); /* Pointer to data area */ extern unsigned far pascal DOSCASEMAP ( /**/ 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 */