home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
High Voltage Shareware
/
high1.zip
/
high1
/
DIR24
/
EDMI5.ZIP
/
IFSR0.ZIP
/
R0STUBS.C
< prev
Wrap
C/C++ Source or Header
|
1993-10-04
|
48KB
|
1,209 lines
/******************************************************************************
*******************************************************************************
**
** EXR0R3 - A ring 0/ring 3 IFS skeleton
** Copyright (C) 1993 by Andre Asselin
**
** R0STUBS.C - Ring 0 stubs
**
** History:
** 5/25/93 - created
**
*******************************************************************************
******************************************************************************/
#include "r0inc.h"
#if defined(__cplusplus)
extern "C" {
#endif
/******************************************************************************
** Name of IFS
******************************************************************************/
char pascal FS_NAME[] = "EXR0R3";
/******************************************************************************
** Attributes of IFS
******************************************************************************/
#define SUP_REMOTE
//#define SUP_UNC
//#define SUP_LOCK
//#define SUP_LVL7
//#define SUP_FILEIO
//#define SUP_PAGEIO
unsigned long int pascal FS_ATTRIBUTE = 0
#if defined(SUP_REMOTE)
| FSA_REMOTE /* If file system is remote */
#endif
#if defined(SUP_UNC)
| FSA_UNC /* If IFS supports UNC */
#endif
#if defined(SUP_LOCK)
| FSA_LOCK /* If IFS supports file locking */
#endif
#if defined(SUP_LVL7)
| FSA_LVL7 /* If IFS supports QPathInfo level 7 */
#endif
;
#if defined(__cplusplus)
}
#endif
/******************************************************************************
*******************************************************************************
**
** Primary entry points
**
*******************************************************************************
******************************************************************************/
/*-----------------------------------------------------------------------------
--
-- Volume management
--
-----------------------------------------------------------------------------*/
/******************************************************************************
**
** FS_ATTACH - Attach or detach a drive or device
**
** Parameters
** ----------
** unsigned short flag indicates attaching/detaching
** values:
** FSA_ATTACH attach drive/device
** FSA_DETACH detach drive/device
** FSA_ATTACH_INFO return info on attached drive/device
** char far *pDev drive or device that is being attached/detached
** struct vpfsd far *pvpfsd pointer to FSD dependant volume parameters
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** void far *pParm UNVERIFIED pointer to FSD dependant attachment info
** unsigned short far *pLen length of area pointed to by pParm
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_ATTACH(unsigned short flag,
char far *pDev,
struct vpfsd far *pvpfsd,
struct cdfsd far *pcdfsd,
void far *pParm,
unsigned short far *pLen) {
unsigned short rc;
// If control program isn't attached, immediately return
if (!CPAttached)
return (ERROR_NOT_READY);
// Make sure this thread can change the buffers
rc = FSH_SEMREQUEST(&CPData.BufLock, MAXCPRDYWAIT);
if (rc == ERROR_SEM_TIMEOUT) {
return (ERROR_NOT_READY);
} else if (rc != NO_ERROR) {
return rc;
}
// And make sure the control program isn't changing them
rc = FSH_SEMWAIT(&CPData.CmdComplete, MAXCPRDYWAIT);
if (rc == ERROR_SEM_TIMEOUT) {
FSH_SEMCLEAR(&CPData.BufLock);
return (ERROR_NOT_READY);
} else if (rc != NO_ERROR) {
FSH_SEMCLEAR(&CPData.BufLock);
return rc;
}
// Verify parameters
if (flag == FSA_ATTACH || flag == FSA_DETACH) {
rc = FSH_PROBEBUF(PB_OPREAD, pParm, *pLen);
} else if (flag == FSA_ATTACH_INFO) {
rc = FSH_PROBEBUF(PB_OPWRITE, pParm, *pLen);
} else {
return ERROR_INVALID_PARAMETER;
}
if (rc != NO_ERROR)
return rc;
// Make sure the control program is still attached (this is how we
// know our buffers are still valid)
if (!CPAttached) {
FSH_SEMCLEAR(&CPData.BufLock);
return (ERROR_NOT_READY);
}
// From here to the FSH_SEMSET(&CPData.CmdComplete), we MUST NOT block
CPData.OpData->funccode = CPFC_ATTACH;
CPData.OpData->attach.flag = flag;
strncpy(CPData.OpData->attach.Dev, pDev, sizeof(CPData.OpData->attach.Dev));
CPData.OpData->attach.vpfsd = *pvpfsd;
CPData.OpData->attach.cdfsd = *pcdfsd;
CPData.OpData->attach.Len = *pLen;
memcpy(CPData.Buf, pParm, *pLen);
// Set sem that we'll wait on
rc = FSH_SEMSET(&CPData.CmdComplete);
if (rc != NO_ERROR) {
FSH_SEMCLEAR(&CPData.CmdComplete);
FSH_SEMCLEAR(&CPData.BufLock);
return rc;
}
// Tell the control program to do the operation
rc = FSH_SEMCLEAR(&CPData.CmdReady);
// Wait until the CP is done
rc = FSH_SEMWAIT(&CPData.CmdComplete, MAXCPRESWAIT);
if (!CPAttached || rc == ERROR_SEM_TIMEOUT) {
// If we got a timeout, abort
FSH_SEMCLEAR(&CPData.BufLock);
return (ERROR_NOT_READY);
} else if (rc != NO_ERROR) {
// Some other error occurred, abort
FSH_SEMCLEAR(&CPData.BufLock);
return (rc);
}
// Copy results
*pvpfsd = CPData.OpData->attach.vpfsd;
*pcdfsd = CPData.OpData->attach.cdfsd;
*pLen = CPData.OpData->attach.Len;
if (flag == FSA_ATTACH_INFO)
memcpy(pParm, CPData.Buf, *pLen);
rc = CPData.OpData->rc;
// We CANNOT access the buffers after this line
FSH_SEMCLEAR(&CPData.BufLock);
return rc;
}
/******************************************************************************
**
** FS_MOUNT - Examine a volume to determine if the IFS knows its format
**
** Parameters
** ----------
** unsigned short flag indicates function to perform
** values:
** MOUNT_MOUNT mount or accept the volume
** MOUNT_VOL_REMOVED volume has been removed
** MOUNT_RELEASE release all resources associated with the volume
** MOUNT_ACCEPT accept the volume in preparation for formatting
** struct vpfsi far *pvpfsi pointer to FSD independant volume parameters
** struct vpfsd far *pvpfsd pointer to FSD dependant volume parameters
** unsigned short hVPB volume handle
** char far *pBoot pointer to sector 0 data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_MOUNT(unsigned short flag, struct vpfsi far *pvpfsi,
struct vpfsd far *pvpfsd, unsigned short hVPB, char far *pBoot)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FSINFO - Get/Set file system information
**
** Parameters
** ----------
** unsigned short flag indicates function to perform
** values:
** INFO_RETREIVE retrieve information
** INFO_SET set information
** unsigned short hVPB volume handle
** char far *pData UNVERIFIED pointer to data buffer
** unsigned short cbData length of data buffer
** unsigned short level type of information to return
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FSINFO(unsigned short flag, unsigned short hVPB,
char far *pData, unsigned short cbData,
unsigned short level)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FLUSHBUF - Flush buffers for a specified volume
**
** Parameters
** ----------
** unsigned short hVPB handle to volume to flush
** unsigned short flag indicates whether to discard or retain cache
** values:
** FLUSH_RETAIN retain cached information
** FLUSH_DISCARD discard cached information
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FLUSHBUF(unsigned short hVPB, unsigned short flag)
{
return ERROR_NOT_SUPPORTED;
}
/*-----------------------------------------------------------------------------
--
-- Directory management
--
-----------------------------------------------------------------------------*/
/******************************************************************************
**
** FS_CHDIR - Change current directory
**
** Parameters
** ----------
** unsigned short flag indicates flavor of call
** values:
** CD_EXPLICIT creating a new current directory
** CD_VERIFY verifying a current directory
** CD_FREE freeing an instance of a current directory
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pDir pointer to directory to change to
** unsigned short iCurDirEnd offset to the end of the current directory in pDir
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_CHDIR(unsigned short flag, struct cdfsi far *pcdfsi,
struct cdfsd far *pcdfsd, char far *pDir,
unsigned short iCurDirEnd)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_MKDIR - Make a new directory
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to directory name to create
** unsigned short iCurDirEnd offset to the end of the current directory
** in pName
** char *pEABuf UNVERIFIED pointer to EAs to attach
** to new directory
** unsigned short flags 0x40 = directory is non 8.3 filename
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_MKDIR(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pName, unsigned short iCurDirEnd,
char far *pEABuf, unsigned short flags)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_RMDIR - Delete directory
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to directory name to delete
** unsigned short iCurDirEnd offset to the end of the current directory in pName
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_RMDIR(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pName, unsigned short iCurDirEnd)
{
return ERROR_NOT_SUPPORTED;
}
/*-----------------------------------------------------------------------------
--
-- File management
--
-----------------------------------------------------------------------------*/
/******************************************************************************
**
** FS_CHGFILEPTR - Change current location in file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** long offset signed offset
** unsigned short type indicates seek type
** values:
** CFP_RELBEGIN move pointer relative to begining of file
** CFP_RELCUR move pointer relative to current position in file
** CFP_RELEND move pointer relative to end of file
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_CHGFILEPTR(struct sffsi far *psffsi, struct sffsd far *psffsd,
long offset, unsigned short type, unsigned short IOflag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_CLOSE - Close an open file
**
** Parameters
** ----------
** unsigned short type indicates close type
** values:
** FS_CL_ORDINARY this is not the final close of the file
** FS_CL_FORPROC this is the final close of the file for the process
** FS_CL_FORSYS this is the final close of the file for the whole system
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_CLOSE(unsigned short type, unsigned short IOflag,
struct sffsi far *psffsi, struct sffsd far *psffsd)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_COMMIT - Commit a file to disk
**
** Parameters
** ----------
** unsigned short type indicates commit type
** values:
** FS_COMMIT_ONE commit this one file
** FS_COMMIT_ALL commit all files
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_COMMIT(unsigned short type, unsigned short IOflag,
struct sffsi far *psffsi, struct sffsd far *psffsd)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_COPY - Copy a file
**
** Parameters
** ----------
** unsigned short flag indicates flavor of call
** values:
** DCPY_EXISTING if destination file exists, replace it
** DCPY_APPEND source file should be appended to destination file
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pSrc pointer to source filename
** unsigned short iSrcCurDirEnd offset to the end of the current directory in pSrc
** char far *pDst pointer to destination filename
** unsigned short iDstCurDirEnd offset to the end of the current directory in pDst
** unsigned short nameType 0x40 = destination is non 8.3 filename
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_COPY(unsigned short flag, struct cdfsi far *pcdfsi,
struct cdfsd far *pcdfsd, char far *pSrc,
unsigned short iSrcCurDirEnd, char far *pDst,
unsigned short iDstCurDirEnd, unsigned short nameType)
{
return ERROR_CANNOT_COPY;
}
/******************************************************************************
**
** FS_DELETE - Delete a file
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pFile pointer to filename to delete
** unsigned short iCurDirEnd offset to the end of the current directory in pFile
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_DELETE(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pFile, unsigned short iCurDirEnd)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FILEATTRIBUTE - Get/Set DOS file attributes
**
** Parameters
** ----------
** unsigned short flag indicates flavor of call
** values:
** FA_RETRIEVE retrieve attribute
** FA_SET set attribute
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to filename
** unsigned short iCurDirEnd offset to the end of the current directory in pName
** unsigned short far *pAttr pointer to the attribute
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FILEATTRIBUTE(unsigned short flag, struct cdfsi far *pcdfsi,
struct cdfsd far *pcdfsd, char far *pName,
unsigned short iCurDirEnd, unsigned short far *pAttr)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FILEINFO - Get/Set file information
**
** Parameters
** ----------
** unsigned short flag indicates flavor of call
** values:
** FI_RETRIEVE retrieve information
** FI_SET set information
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** unsigned short level level of information to get/set
** char far *pData UNVERIFIED? pointer to information area
** unsigned short cbData size of area pointed to by pData
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FILEINFO(unsigned short flag, struct sffsi far *psffsi,
struct sffsd far *psffsd, unsigned short level,
char far *pData, unsigned short cbData,
unsigned short IOflag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FILEIO - Atomic I/O operations
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** char far *pCmdList UNVERIFIED pointer to information area
** unsigned short cbCmdList size of area pointed to by pCmdList
** unsigned short far *poError UNVERIFIED pointer to offset within
** pCmdList of command that caused an error
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FILEIO(struct sffsi far *psffsi, struct sffsd far *psffsd,
char far *pCmdList, unsigned short cbCmdList,
unsigned short far *poError, unsigned short IOflag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_MOVE - Move/rename a file
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pSrc pointer to source filename
** unsigned short iSrcCurDirEnd offset to the end of the current directory in pSrc
** char far *pDst pointer to destination filename
** unsigned short iDstCurDirEnd offset to the end of the current directory in pDst
** unsigned short flags 0x40 = destination is non 8.3 filename
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_MOVE(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pSrc, unsigned short iSrcCurDirEnd,
char far *pDst, unsigned short iDstCurDirEnd,
unsigned short flags)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_NEWSIZE - Change size of file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** unsigned long len new length of file
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_NEWSIZE(struct sffsi far *psffsi, struct sffsd far *psffsd,
unsigned long len, unsigned short IOflag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_OPENCREATE - Open or create a new file
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to filename
** unsigned short iCurDirEnd offset to the end of the current directory in pName
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** unsigned long openmode sharing and access mode
** unsigned short openflag action to take when file exists/doesn't exist
** unsigned short far *pAction returns the action that the IFS took
** unsigned short attr OS/2 file attributes
** char *pEABuf UNVERIFIED pointer to EAs to attach to new file
** unsigned short fat *pfgenFlag flags returned by the IFS
** values:
** FOC_NEEDEAS indicates there are critical EAs associated with the file
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_OPENCREATE(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pName, unsigned short iCurDirEnd,
struct sffsi far *psffsi, struct sffsd far *psffsd,
unsigned long openmode, unsigned short openflag,
unsigned short far *pAction, unsigned short attr,
char far *pEABuf, unsigned short far *pfgenFlag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_PATHINFO - get/set file information by filename
**
** Parameters
** ----------
** unsigned short flag indicates flavor of call
** values:
** PI_RETRIEVE retrieve information
** PI_SET set information
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to filename
** unsigned short iCurDirEnd offset to the end of the current directory in pName
** unsigned short level level of information to get/set
** char far *pData UNVERIFIED pointer to information area
** unsigned short cbData size of area pointed to by pData
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_PATHINFO(unsigned short flag, struct cdfsi far *pcdfsi,
struct cdfsd far *pcdfsd, char far *pName,
unsigned short iCurDirEnd, unsigned short level,
char far *pData, unsigned short cbData)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_READ - read data from a file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** char far *pData UNVERIFIED pointer to buffer
** unsigned short far *pLen length of buffer
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_READ(struct sffsi far *psffsi, struct sffsd far *psffsd,
char far *pData, unsigned short far *pLen,
unsigned short IOflag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_WRITE - write data to a file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** char far *pData UNVERIFIED pointer to buffer
** unsigned short far *pLen length of buffer
** unsigned short IOflag bitfield of I/O suggestions
** values:
** IOFL_WRITETHRU write all updated data before returning
** IOFL_NOCACHE don't cache any new data
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_WRITE(struct sffsi far *psffsi, struct sffsd far *psffsd,
char far *pData, unsigned short far *pLen,
unsigned short IOflag)
{
return ERROR_NOT_SUPPORTED;
}
/*-----------------------------------------------------------------------------
--
-- Directory management
--
-----------------------------------------------------------------------------*/
/******************************************************************************
**
** FS_FINDCLOSE - End a directory search
**
** Parameters
** ----------
** struct fsfsi far *pfsfsi pointer to FSD independant search record
** struct fsfsd far *pfsfsd pointer to FSD dependant search record
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDCLOSE(struct fsfsi far *pfsfsi, struct fsfsd far *pfsfsd)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FINDFIRST - Begin a new directory search
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to filename mask
** unsigned short iCurDirEnd offset to the end of the current directory in pName
** unsigned short attr attribute mask
** struct fsfsi far *pfsfsi pointer to FSD independant search record
** struct fsfsd far *pfsfsd pointer to FSD dependant search record
** char far *pData UNVERIFIED pointer to information area
** unsigned short cbData size of area pointed to by pData
** unsigned short far *pcMatch maximum number of entries to return*
** number of entries actually returned
** unsigned short level level of information to return
** unsigned short flags indicates whether to return position information
** values:
** FF_NOPOS don't return any position information
** FF_GETPOS return position information in buffer
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDFIRST(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pName, unsigned short iCurDirEnd,
unsigned short attr, struct fsfsi far *pfsfsi,
struct fsfsd far *pfsfsd, char far *pData,
unsigned short cbData, unsigned short far *pcMatch,
unsigned short level, unsigned short flags)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FINDFROMNAME - Restart directory search
**
** Parameters
** ----------
** struct fsfsi far *pfsfsi pointer to FSD independant search record
** struct fsfsd far *pfsfsd pointer to FSD dependant search record
** char far *pData UNVERIFIED pointer to information area
** unsigned short cbData size of area pointed to by pData
** unsigned short far *pcMatch maximum number of entries to return*
** number of entries actually returned
** unsigned short level level of information to return
** unsigned long position position in directory to restart search from
** char far *pName pointer to filename to restart search from
** unsigned short flags indicates whether to return position information
** values:
** FF_NOPOS don't return any position information
** FF_GETPOS return position information in buffer
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDFROMNAME(struct fsfsi far *pfsfsi, struct fsfsd far *pfsfsd,
char far *pData, unsigned short cbData,
unsigned short far *pcMatch, unsigned short level,
unsigned long position, char far *pName,
unsigned short flags)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FINDNEXT - Continue directory search
**
** Parameters
** ----------
** struct fsfsi far *pfsfsi pointer to FSD independant search record
** struct fsfsd far *pfsfsd pointer to FSD dependant search record
** char far *pData UNVERIFIED pointer to information area
** unsigned short cbData size of area pointed to by pData
** unsigned short far *pcMatch maximum number of entries to return*
** number of entries actually returned
** unsigned short level level of information to return
** unsigned short flag indicates whether to return position information
** values:
** FF_NOPOS don't return any position information
** FF_GETPOS return position information in buffer
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDNEXT(struct fsfsi far *pfsfsi, struct fsfsd far *pfsfsd,
char far *pData, unsigned short cbData,
unsigned short far *pcMatch, unsigned short level,
unsigned short flag)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FINDNOTIFYCLOSE - End a directory update request
**
** Parameters
** ----------
** unsigned short handle handle of update request to close
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDNOTIFYCLOSE(unsigned short handle)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FINDNOTIFYFIRST - Begin a new directory update request
**
** Parameters
** ----------
** struct cdfsi far *pcdfsi pointer to FSD independant current directory
** struct cdfsd far *pcdfsd pointer to FSD dependant current directory
** char far *pName pointer to filename mask
** unsigned short iCurDirEnd offset to the end of the current directory in pName
** unsigned short attr attribute mask
** unsigned short far *pHandle pointer to place where FSD stores its handle
** char far *pData UNVERIFIED pointer to information area
** unsigned short cbData size of area pointed to by pData
** unsigned short far *pcMatch maximum number of entries to return*
** number of entries actually returned
** unsigned short level level of information to return
** unsigned long timeout timeout in milliseconds
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDNOTIFYFIRST(struct cdfsi far *pcdfsi, struct cdfsd far *pcdfsd,
char far *pName, unsigned short iCurDirEnd,
unsigned short attr, unsigned short far *pHandle,
char far *pData, unsigned short cbData,
unsigned short far *pcMatch, unsigned short level,
unsigned long timeout)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FINDNOTIFYNEXT - Continue directory update request
**
** Parameters
** ----------
** unsigned short handle directory update handle
** char far *pData UNVERIFIED pointer to information area
** unsigned short cbData size of area pointed to by pData
** unsigned short far *pcMatch maximum number of entries to return*
** number of entries actually returned
** unsigned short level level of information to return
** unsigned long timeout timeout in milliseconds
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FINDNOTIFYNEXT(unsigned short handle, char far *pData,
unsigned short cbData, unsigned short far *pcMatch,
unsigned short level, unsigned long timeout)
{
return ERROR_NOT_SUPPORTED;
}
/*-----------------------------------------------------------------------------
--
-- FSD Extended Interface
--
-----------------------------------------------------------------------------*/
/******************************************************************************
**
** FS_IOCTL - Perform an IOCTL on the IFS
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** unsigned short cat function category
** unsigned short func function to perform
** char far *pParm UNVERIFIED pointer to parameter area
** unsigned short lenParm size of area pointed to by pParm
** unsigned short far *pParmLenInOut length of parameters passed in pParm
** char far *pData UNVERIFIED pointer to information area
** unsigned short lenData size of area pointed to by pData
** unsigned short far *pDataLenInOut length of parameters passed in pData
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_IOCTL(struct sffsi far *psffsi, struct sffsd far *psffsd,
unsigned short cat, unsigned short func,
char far *pParm, unsigned short lenParm,
unsigned far *pParmLenInOut, char far *pData,
unsigned short lenData, unsigned far *pDataLenInOut)
{
return ERROR_NOT_SUPPORTED;
}
/*-----------------------------------------------------------------------------
--
-- Miscellaneous Functions
--
-----------------------------------------------------------------------------*/
/******************************************************************************
**
** FS_NMPIPE - Perform a named pipe operation
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** unsigned short OpType operation to perform
** values:
** NMP_GetPHandState
** NMP_SetPHandState
** NMP_PipeQInfo
** NMP_PeekPipe
** NMP_ConnectPipe
** NMP_DisconnectPipe
** NMP_TransactPipe
** NMP_READRAW
** NMP_WRITERAW
** NMP_WAITPIPE
** NMP_CALLPIPE
** NMP_QNmPipeSemState
** union npoper far *pOpRec data for operation
** char far *pData pointer to user data
** char far *pName pointer to remote named pipe
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_NMPIPE(struct sffsi far *psffsi, struct sffsd far *psffsd,
unsigned short OpType, union npoper far *pOpRec,
char far *pData, char far *pName)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_PROCESSNAME - Canonicalize a filename
**
** Parameters
** ----------
** char far *pNameBuf filename to canonicalize
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_PROCESSNAME(char far *pNameBuf)
{
return NO_ERROR;
}
/******************************************************************************
**
** FS_SETSWAP - Inform IFS that it owns the swap file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_SETSWAP(struct sffsi far *psffsi,
struct sffsd far *psffsd)
{
return NO_ERROR;
}
/******************************************************************************
*******************************************************************************
**
** Locking support entry points
**
*******************************************************************************
******************************************************************************/
#if defined(SUP_FILEIO)
/******************************************************************************
**
** FS_CANCELLOCKREQUEST - Unlock a range in a file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** void far *pLockRange range to unlock
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_CANCELLOCKREQUEST(struct sffsi far *psffsi, struct sffsd far *psffsd,
void far *pLockRange)
{
return ERROR_NOT_SUPPORTED;
}
/******************************************************************************
**
** FS_FILELOCKS - Lock a range in a file
**
** Parameters
** ----------
** struct sffsi far *psffsi pointer to FSD independant file instance
** struct sffsd far *psffsd pointer to FSD dependant file instance
** void far *pUnLockRange range to unlock
** void far *pLockRange range to lock
** unsigned long timeout time in milliseconds to wait
** unsigned long flags flags
** values:
** 0x01 sharing of this file region is allowed
** 0x02 atomic lock request
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_FILELOCKS(struct sffsi far *psffsi, struct sffsd far *psffsd,
void far *pUnLockRange, void far *pLockRange,
unsigned long timeout, unsigned long flags)
{
return ERROR_NOT_SUPPORTED;
}
#endif
/******************************************************************************
*******************************************************************************
**
** UNC entry point
**
*******************************************************************************
******************************************************************************/
#if defined(SUP_UNC)
/******************************************************************************
**
** FS_VERIFYUNCNAME - Check if the IFS controls the server in question
**
** Parameters
** ----------
** unsigned long far *pFlag flags
** values:
** VUN_PASS1 pass 1 poll
** VUN_PASS2 pass 2 poll
** char far *pName pointer to server in UNC format
**
******************************************************************************/
#pragma argsused
short int far pascal _export _loadds FS_VERIFYUNCNAME(unsigned short flag, char far *pName)
{
return ERROR_NOT_SUPPORTED;
}
#endif
#if defined(SUP_PAGEIO)
#pragma argsused
short int far pascal _export _loadds FS_ALLOCATEPAGESPACE(
struct sffsi far *psffsi, /* ptr to fs independent SFT */
struct sffsd far *psffsd, /* ptr to fs dependent SFT */
unsigned long lSize, /* new size */
unsigned long lWantContig /* contiguous chunk size */
)
{
return ERROR_NOT_SUPPORTED;
}
#pragma argsused
short int far pascal _export _loadds FS_DOPAGEIO(
struct sffsi far * psffsi, /* ptr to fs independent SFT */
struct sffsd far * psffsd, /* ptr to fs dependent SFT */
struct PageCmdHeader far * pPageCmdList /* ptr to list of page commands */
)
{
return ERROR_NOT_SUPPORTED;
}
#pragma argsused
short int far pascal _export _loadds FS_OPENPAGEFILE (
unsigned long far *pFlags, /* pointer to Flags */
unsigned long far *pcMaxReq, /* max # of reqs packed in list */
char far * pName, /* name of paging file */
struct sffsi far * psffsi, /* ptr to fs independent SFT */
struct sffsd far * psffsd, /* ptr to fs dependent SFT */
unsigned short OpenMode, /* sharing, ... */
unsigned short OpenFlag, /* open flag for action */
unsigned short Attr, /* file attribute */
unsigned long Reserved /* reserved, must be zero */
)
{
return ERROR_NOT_SUPPORTED;
}
#endif