/*static char *SCCSID = "@(#)ioexp.h	6.2 91/10/01";*/
/* SCCSID = @(#)ioexp.h	6.2 91/10/01    */
/*
 *  IBM/Microsoft Confidential
 *
 *  Copyright (c) IBM Corporation 1987, 1989
 *  Copyright (c) Microsoft Corporation 1987, 1989
 *
 *  All Rights Reserved
 */
/*XLATOFF*/
//@SEC  Modify ReadAT, WriteAT..nuke Read, Write
typedef short int SFN_t;      /* system file number   */
typedef ushort_t xfercnt_t;      /* transfer counts   */

unsigned IOSftOpen (vaddr_t fname, unsigned mode, unsigned flags, SFN_t * pSFN,  //@SEC
                    ulong_t TransPathBuf);                               //@SEC
unsigned IOSftClose   (SFN_t sfn);                                       //@SEC
unsigned IOSftSeek    (SFN_t sfn, ulong_t foffset);                      //@SEC
unsigned IOSftReadAt  (SFN_t sfn, xfercnt_t* pcb, char * addr32,vaddr_t addr,  ulong_t uOffset);  //@SEC
unsigned IOSftWriteAt (SFN_t sfn, xfercnt_t* pcb, char * addr32,vaddr_t addr,  ulong_t uOffset);  //@SEC
unsigned IOSftNewSize (SFN_t sfn, ulong_t newsize);
unsigned IOSftTransPath(vaddr_t fname);
unsigned FSD_SetSwap(SFN_t sfn);
unsigned SftFileSize(SFN_t sfn, ulong_t *pFileSize);

unsigned IOGetDiskSpaceInfo(unsigned DriveNumber, void *FSInfoBuf,
      unsigned FSInfoBufSize);

/*
    routine in macro.asm to perform (DBCS-aware) / => \ translation in
    a pathnme string.
*/
void PathCharTrans(char *pszPathName);


/*
 *  Routine in sftio.asm - C callable routine for w_canon for
 *  32-bit semaphore string validation.
 */
ulong_t Canon(SEL NameSel, void *NameOff, ulong_t BackLim, ulong_t BufEnd,
         ulong_t Flags);

unsigned IOGetMediaInfo(SFN_t sfn, uchar_t * pInfo);

/*
 * Global variables
 */
extern ushort_t IOShutdownState;

/*XLATON*/
/*
 * These bits are used in determining whether a file resides on
 * removable media, and whether the device driver for the media can
 * handle non-contiguous memory.
 */

#define MEDIA_NON_CONTIG_MEM  0x01  /* Device can handle non-contig mem */
#define MEDIA_NON_REMOVABLE   0x20  /* File is on non-removable media */
#define MEDIA_16M    0x02  /* must reside below 16 meg physical */
