home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / ramfs102.zip / src / fsd.h < prev    next >
C/C++ Source or Header  |  1996-01-03  |  19KB  |  735 lines

  1. /*static char *SCCSID = "@(#)fsd.h    6.5 91/12/16";*/
  2. /*  fsd.h   - File system driver entry point declarations */
  3.  
  4. /*  FS_ATTRIBUTE bit field values */
  5.  
  6. #define FSA_REMOTE  0x00000001    /* Set if REMOTE FSD              */
  7. #define FSA_UNC        0x00000002    /* Set if FSD implements UNC support  */
  8. #define FSA_LOCK    0x00000004    /* Set if FSD needs lock notification */
  9. #define FSA_LVL7    0x00000008    /* Set if FSD will accept Level 7     */
  10.      /* DosQueryPathInfo requests - These are requests for the case-  */
  11.      /* perserved "path" of the input file/path name.              */
  12. #define FSA_PSVR    0x00000010    /* Set if FSD manages Remote NmPipes  */
  13.  
  14. #define CDDWORKAREASIZE 8
  15. #define SFDWORKAREASIZE 30
  16. #define VPDWORKAREASIZE 36
  17.  
  18.  
  19. /* Volume Parameter structures */
  20.  
  21. #define VPBTEXTLEN 12
  22.  
  23. struct    vpfsi {
  24.     ULONG    vpi_vid;        /* 32 bit volume ID */
  25.     ULONG    vpi_hDEV;        /* handle to device driver */
  26.     USHORT    vpi_bsize;        /* sector size in bytes */
  27.     ULONG    vpi_totsec;        /* total number of sectors */
  28.     USHORT    vpi_trksec;        /* sectors / track */
  29.     USHORT    vpi_nhead;        /* number of heads */
  30.     CHAR    vpi_text[VPBTEXTLEN];    /* volume name */
  31.     PVOID    vpi_pDCS;        /* device capability struc */
  32.     PVOID    vpi_pVCS;        /* volume characteristics struc */
  33.     UCHAR    vpi_drive;        /* drive (0=A) */
  34.     UCHAR    vpi_unit;        /* unit code */
  35. };  /* vpfsi */
  36.  
  37.  
  38. /*
  39.  * Predefined volume IDs: [note - keep this list in sync with list in
  40.  * dos/dosinc/vpb.inc!]
  41.  */
  42. /* Unique ID for vpb_ID field for unreadable media. */
  43. #define UNREAD_ID  0x534E4A52L        /* Stored as (bytes) 0x52,4A,4E,53. */
  44.  
  45. /*
  46.  * Unique ID for vpb_ID field for damaged volume (recognized by IFS but cannot
  47.  * be normally mounted).
  48.  */
  49. #define DAMAGED_ID 0x0L            /* Stored as (bytes) 0,0,0,0. */
  50.  
  51. #define CCHMAXPATH    260
  52. #define CCHMAXPATHCOMP    256
  53.  
  54. /* Current Directory structures */
  55.  
  56. struct cdfsi {
  57.     USHORT    cdi_hVPB;        /* VPB handle for associated device */
  58.     USHORT    cdi_end;        /* end of root portion of curdir */
  59.     CHAR    cdi_flags;        /* flags indicating state of cdfsd */
  60.     CHAR    cdi_curdir[CCHMAXPATH];    /* text of current directory */
  61. };  /* cdfsi */
  62.  
  63.  
  64. /* bit values for cdi_flags (state of cdfsd structure */
  65.  
  66. #define CDI_ISVALID    0x80        /* format is known */
  67. #define CDI_ISROOT    0x40        /* cur dir == root */
  68. #define CDI_ISCURRENT    0x20
  69.  
  70.  
  71. /* Per open-instance (System File) structures */
  72.  
  73. struct    sffsi {
  74.     ULONG    sfi_mode;        /* access/sharing mode */
  75.     USHORT    sfi_hVPB;        /* volume info. */
  76.     USHORT    sfi_ctime;        /* file creation time */
  77.     USHORT    sfi_cdate;        /* file creation date */
  78.     USHORT    sfi_atime;        /* file access time */
  79.     USHORT    sfi_adate;        /* file access date */
  80.     USHORT    sfi_mtime;        /* file modification time */
  81.     USHORT    sfi_mdate;        /* file modification date */
  82.     ULONG    sfi_size;        /* size of file */
  83.     ULONG    sfi_position;        /* read/write pointer */
  84.     /* the following may be of use in sharing checks */
  85.     USHORT    sfi_UID;        /* user ID of initial opener */
  86.     USHORT    sfi_PID;        /* process ID of initial opener */
  87.     USHORT    sfi_PDB;        /* PDB (in 3.x box) of initial opener */
  88.     USHORT    sfi_selfsfn;        /* system file number of file instance */
  89.     UCHAR    sfi_tstamp;        /* update/propagate time stamp flags */
  90.                     /* use with ST_Sxxx and ST_Pxxx */
  91.     USHORT    sfi_type;        /* use with STYPE_ */
  92.     ULONG    sfi_pPVDBFil;        /* performance counter data block pointer */
  93.     UCHAR    sfi_DOSattr;        /* DOS file attributes  D/S/A/H/R  */
  94. };  /* sffsi */
  95.  
  96.  
  97. /* sfi_tstamps flags */
  98. #define ST_SCREAT     1        /* stamp creation time */
  99. #define ST_PCREAT     2        /* propagate creation time */
  100. #define ST_SWRITE     4        /* stamp last write time */
  101. #define ST_PWRITE     8        /* propagate last write time */
  102. #define ST_SREAD    16        /* stamp last read time */
  103. #define ST_PREAD    32        /* propagate last read time */
  104.  
  105. /* sfi_type flags */
  106. #define STYPE_FILE     0        /* file */
  107. #define STYPE_DEVICE     1        /* device */
  108. #define STYPE_NMPIPE     2        /* named pipe */
  109. #define STYPE_FCB     4        /* fcb sft */
  110.  
  111.  
  112. /* file system independent - file search parameters */
  113. struct fsfsi {
  114.     USHORT    fsi_hVPB;    /* volume info. */
  115. };  /* fsfsi */
  116.  
  117.  
  118.  
  119. /* file system dependent - device information */
  120. struct devfsd {
  121.     ULONG    FSDRef;    /* Reference obtained from FSD during ATTACH */
  122. };  /* devfsd */
  123.  
  124. struct filelock {
  125.     ULONG    FileOffset;        /* offset where the lock/unlock begins */
  126.     ULONG    RangeLength;        /* length of region locked/unlocked */
  127. };
  128.  
  129.  
  130. /*****
  131.  *
  132.  * union and structures for FS_FSCTL
  133.  */
  134. /* pArgType == 1, FileHandle directed case */
  135. struct SF {
  136.     struct sffsi FAR *psffsi;
  137.     struct sffsd FAR *psffsd;
  138. };  /* SF */
  139.  
  140. /* pArgType == 2, PathName directed case */
  141. struct CD {
  142.     struct cdfsi FAR *pcdfsi;
  143.     struct cdfsd FAR *pcdfsd;
  144.     PCHAR    pPath;
  145.     USHORT    iCurDirEnd;
  146. };  /* CD */
  147.  
  148. union argdat {
  149.     /* pArgType == 1, FileHandle directed case */
  150.     struct SF sf;
  151.  
  152.     /* pArgType == 2, PathName directed case */
  153.     struct CD cd;
  154.  
  155.     /* pArgType == 3, FSD Name directed case */
  156.     /* nothing */
  157. };  /* argdat */
  158.  
  159.  
  160. /*****
  161.  *
  162.  * Union and structures for FS_NMPIPE
  163.  *
  164.  */
  165.  
  166. /* Get/SetPHandState parameter block */
  167. struct    phs_param {
  168.     SHORT    phs_len;
  169.     SHORT    phs_dlen;
  170.     SHORT    phs_pmode;    /* pipe mode set or returned */
  171. };
  172.  
  173.  
  174. /* DosQNmPipeInfo parameter block,
  175.  * data is info. buffer addr */
  176. struct    npi_param {
  177.     SHORT    npi_len;
  178.     SHORT    npi_dlen;
  179.     SHORT    npi_level;    /* information level desired */
  180. };
  181.  
  182.  
  183. /* DosRawReadNmPipe parameters,
  184.  * data is buffer addr */
  185. struct    npr_param {
  186.     SHORT    npr_len;
  187.     SHORT    npr_dlen;
  188.     SHORT    npr_nbyt;    /* number of bytes read */
  189. };
  190.  
  191. /* DosRawWriteNmPipe parameters,
  192.  * data is buffer addr */
  193. struct    npw_param {
  194.     SHORT    npw_len;
  195.     SHORT    npw_dlen;
  196.     SHORT    npw_nbyt;    /* number of bytes written */
  197. };
  198.  
  199. /* NPipeWait parameters */
  200. struct    npq_param {
  201.     SHORT    npq_len;
  202.     SHORT    npq_dlen;
  203.     LONG    npq_timeo;    /* timeout in milliseconds */
  204.     SHORT    npq_prio;    /* priority of caller */
  205. };
  206.  
  207. /* DosCallNmPipe parameters,
  208.  * data is in-buffer addr */
  209. struct    npx_param {
  210.     SHORT    npx_len;
  211.     USHORT    npx_ilen;        /* length of in-buffer */
  212.     PCHAR    npx_obuf;        /* pointer to out-buffer */
  213.     USHORT    npx_olen;        /* length of out-buffer */
  214.     USHORT    npx_nbyt;        /* number of bytes read */
  215.     LONG    npx_timeo;        /* timeout in milliseconds */
  216. };
  217.  
  218. /* PeekPipe parameters, data is buffer addr */
  219. struct    npp_param {
  220.     SHORT    npp_len;
  221.     USHORT    npp_dlen;
  222.     USHORT    npp_nbyt;        /* number of bytes read */
  223.     USHORT    npp_avl0;        /* bytes left in pipe */
  224.     USHORT    npp_avl1;        /* bytes left in current msg */
  225.     USHORT    npp_state;        /* pipe state */
  226. };
  227.  
  228. /* DosTransactNmPipe parameters,
  229.  * data is in-buffer addr */
  230. struct    npt_param {
  231.     SHORT    npt_len;
  232.     USHORT    npt_ilen;        /* length of in-buffer */
  233.     PCHAR    npt_obuf;        /* pointer to out-buffer */
  234.     USHORT    npt_olen;        /* length of out-buffer */
  235.     USHORT    npt_nbyt;        /* number of bytes read */
  236. };
  237.  
  238. /* QNmpipeSemState parameter block,
  239.  * data is user data buffer */
  240. struct    qnps_param {
  241.     USHORT    qnps_len;        /* length of parameter block */
  242.     USHORT    qnps_dlen;        /* length of supplied data block */
  243.     LONG    qnps_semh;        /* system semaphore handle */
  244.     USHORT    qnps_nbyt;        /* number of bytes returned */
  245. };
  246.  
  247. /* ConnectPipe parameter block, no data block */
  248. struct    npc_param {
  249.     USHORT    npc_len;        /* length of parameter block */
  250.     USHORT    npc_dlen;        /* length of data block */
  251. };
  252.  
  253. /* DisconnectPipe parameter block, no data block */
  254. struct    npd_param {
  255.     USHORT    npd_len;        /* length of parameter block */
  256.     USHORT    npd_dlen;        /* length of data block */
  257. };
  258.  
  259. union npoper {
  260.     struct phs_param    phs;
  261.     struct npi_param    npi;
  262.     struct npr_param    npr;
  263.     struct npw_param    npw;
  264.     struct npq_param    npq;
  265.     struct npx_param    npx;
  266.     struct npp_param    npp;
  267.     struct npt_param    npt;
  268.     struct qnps_param   qnps;
  269.     struct npc_param    npc;
  270.     struct npd_param    npd;
  271. };    /* npoper */
  272.  
  273.  
  274. /*****
  275. *
  276. * Declarations for FS_DOPAGEIO entry point.
  277. *
  278. */
  279.  
  280. struct PageCmd {
  281.     UCHAR    Cmd;        /* Cmd code for Read, Write, WriteVerify */
  282.     UCHAR    Priority;    /* Same values as for request packets */
  283.     UCHAR    Status;        /* Status byte */
  284.     UCHAR    Error;        /* I24 error code */
  285.     ULONG    Addr;        /* Physical (32 bit) or Virtual (16:16) */
  286.     ULONG    FileOffset;    /* Byte offset in page file */
  287.                 /* (on page boundary) */
  288. };
  289.  
  290. struct PageCmdHeader {
  291.     UCHAR    InFlags;        /* Input flags */
  292.     UCHAR    OutFlags;        /* Output flags - must be 0 on entry */
  293.     UCHAR    OpCount;        /* Number of operations */
  294.     UCHAR    Pad;            /* Preserve DWORD alignment */
  295.     ULONG    Reserved1;        /* unused */
  296.     ULONG    Reserved2;        /* unused */
  297.     ULONG    Reserved3;        /* unused */
  298.     struct PageCmd PageCmdList [1];    /* The actual commands */
  299. };
  300.  
  301. /* FSD_DoPageIO InFlags values */
  302. #define PGIO_FI_ORDER   0x01    /* Force Order of operations */
  303.  
  304. /* FSD_DoPageIO OutFlags values */
  305. #define PGIO_FO_DONE    0x01    /* Operation done */
  306. #define PGIO_FO_ERROR   0x02    /* Operation failed */
  307.  
  308. /* FSD_DoPageIO Status values */
  309. #define PGIO_ATTEMPTED  0x0f    /* Operation attempted */
  310. #define PGIO_FAILED        0xf0    /* Operation failed */
  311.  
  312. /*****
  313.  *
  314.  * Declarations for the FSD entry points.
  315.  *
  316.  */
  317.  
  318. /* bit values for the IOflag parameter in various FS_ entry points */
  319. #define IOFL_WRITETHRU        0x10    /* Write through bit    */
  320. #define IOFL_NOCACHE        0x20    /* No Cache bit        */
  321.  
  322. /* values for flag in FS_ATTACH */
  323. #define FSA_ATTACH        0x00
  324. #define FSA_DETACH        0x01
  325. #define FSA_ATTACH_INFO        0x02
  326.  
  327. /* values for flag in FS_CHDIR */
  328. #define CD_EXPLICIT        0x00
  329. #define CD_VERIFY        0x01
  330. #define CD_FREE            0x02
  331.  
  332. /* values for type in FS_CHGFILEPTR */
  333. #define CFP_RELBEGIN        0x00
  334. #define CFP_RELCUR        0x01
  335. #define CFP_RELEND        0x02
  336.  
  337. /* values for type in FS_CLOSE */
  338. #define FS_CL_ORDINARY    0 /* ordinary close */
  339. #define FS_CL_FORPROC    1 /* final close for the process */
  340. #define FS_CL_FORSYS    2 /* final close for the system (for all processes) */
  341.  
  342. /* values for commit type in FS_COMMIT */
  343. #define FS_COMMIT_ONE    1    /* commit for a single file */
  344. #define FS_COMMIT_ALL    2    /* commit due to buf reset - for all files */
  345.  
  346. /* values for flag in FS_FILEATTRIBUTE */
  347. #define FA_RETRIEVE        0x00
  348. #define FA_SET            0x01
  349.  
  350. /* values for flag in FS_FILEINFO */
  351. #define FI_RETRIEVE        0x00
  352. #define FI_SET            0x01
  353.  
  354. /* values for flag in FS_FINDFIRST, FS_FINDFROMNAME, FS_FINDNEXT */
  355. #define FF_NOPOS        0x00
  356. #define FF_GETPOS        0X01
  357.  
  358. /* values for flag in FS_FLUSH */
  359. #define FLUSH_RETAIN        0x00
  360. #define FLUSH_DISCARD        0x01
  361.  
  362. /* values for iArgType in FS_FSCTL */
  363. #define FSCTL_ARG_FILEINSTANCE    0x01
  364. #define FSCTL_ARG_CURDIR    0x02
  365. #define FSCTL_ARG_NULL        0x03
  366.  
  367. /* values for func in FS_FSCTL */
  368. #define FSCTL_FUNC_NONE        0x00
  369. #define FSCTL_FUNC_NEW_INFO    0x01
  370. #define FSCTL_FUNC_EASIZE    0x02
  371.  
  372. /* values for flag in FS_FSINFO */
  373. #define INFO_RETREIVE        0x00
  374. #define INFO_SET        0x01
  375.  
  376. /* values for flag in FS_MOUNT */
  377. #define MOUNT_MOUNT        0x00
  378. #define MOUNT_VOL_REMOVED    0x01
  379. #define MOUNT_RELEASE        0x02
  380. #define MOUNT_ACCEPT        0x03
  381.  
  382. /* Values for OpType in FS_NMPIPE   */
  383. #define        NMP_GetPHandState        0x21
  384. #define        NMP_SetPHandState        0x01
  385. #define        NMP_PipeQInfo        0x22
  386. #define        NMP_PeekPipe        0x23
  387. #define        NMP_ConnectPipe        0x24
  388. #define        NMP_DisconnectPipe        0x25
  389. #define        NMP_TransactPipe        0x26
  390. #define        NMP_READRAW            0x11
  391. #define        NMP_WRITERAW        0x31
  392. #define        NMP_WAITPIPE        0x53
  393. #define        NMP_CALLPIPE        0x54
  394. #define        NMP_QNmPipeSemState        0x58
  395.  
  396. /* value for *pfgenflag in FS_OPENCREATE*/
  397. #define FOC_NEEDEAS    0x01    /* there are need eas for this file */
  398.  
  399. /* values for *pFlags in FS_OPENPAGEFILE */
  400. #define PGIO_FIRSTOPEN 0x00000001   /* first open of page file          */
  401. #define PGIO_PADDR     0x00004000   /* physical addresses required    */
  402. #define PGIO_VADDR     0x00008000   /* 16:16 virtual address required */
  403.  
  404. /* values for flag in FS_PATHINFO */
  405. #define PI_RETRIEVE        0x00
  406. #define PI_SET            0x01
  407.  
  408. /* values for usType in FS_SHUTDOWN */
  409. #define SD_BEGIN        0x00
  410. #define SD_COMPLETE        0x01
  411.  
  412. /* values for flag in FS_PATHINFO */
  413. /* These values depend on code in GetUNCFSDFromPath */
  414. /* Don't change values without also changing code */
  415. #define VUN_PASS1         0x0000
  416. #define VUN_PASS2         0x0001
  417. #define ERROR_UNC_PATH_NOT_FOUND 0x0003      /* equals ERROR_PATH_NOT_FOUND */
  418.  
  419.  
  420.  
  421. /* prototypes for all FS_* functions */
  422.  
  423. APIRET EXPENTRY FS_ALLOCATEPAGESPACE (
  424.     struct sffsi *psffsi,
  425.     struct sffsd *psffsd,
  426.     ULONG    lSize,
  427.     ULONG    lWantContig );
  428.  
  429. APIRET EXPENTRY FS_ATTACH (
  430.     USHORT    flag,
  431.     PSZ        pDev,
  432.     struct vpfsd *pvpfsd,
  433.     struct cdfsd *pcdfsd,
  434.     PCHAR    pParm,
  435.     PUSHORT    pLen );
  436.  
  437. APIRET EXPENTRY FS_CANCELLOCKREQUEST (
  438.     struct sffsi *psffsi,
  439.     struct sffsd *psffsd,
  440.     struct filelock pLockRange );
  441.  
  442. APIRET EXPENTRY FS_CHDIR (
  443.     USHORT    flag,
  444.     struct cdfsi *pcdfsi,
  445.     struct cdfsd *pcdfsd,
  446.     PSZ        pDir,
  447.     USHORT    iCurDirEnd );
  448.  
  449. APIRET EXPENTRY FS_CHGFILEPTR (
  450.     struct sffsi *psffsi,
  451.     struct sffsd *psffsd,
  452.     LONG    offset,
  453.     USHORT    type,
  454.     USHORT    IOflag );
  455.  
  456. APIRET EXPENTRY FS_CLOSE (
  457.     USHORT    type,
  458.     USHORT    IOflag,
  459.     struct sffsi *psffsi,
  460.     struct sffsd *psffsd );
  461.  
  462. APIRET EXPENTRY FS_COMMIT (
  463.     USHORT    type,
  464.     USHORT    IOflag,
  465.     struct sffsi *psffsi,
  466.     struct sffsd *psffsd );
  467.  
  468. APIRET EXPENTRY FS_COPY (
  469.     USHORT    flag,
  470.     struct cdfsi *pcdfsi,
  471.     struct cdfsd *pcdfsd,
  472.     PSZ        pSrc,
  473.     USHORT    iSrcCurDirEnd,
  474.     PSZ        pDst,
  475.     USHORT    iDstCurDirEnd,
  476.     USHORT    nameType );
  477.  
  478. APIRET EXPENTRY FS_DELETE (
  479.     struct cdfsi *pcdfsi,
  480.     struct cdfsd *pcdfsd,
  481.     PSZ         pFile,
  482.     USHORT     iCurDirEnd );
  483.  
  484. APIRET EXPENTRY FS_DOPAGEIO (
  485.     struct sffsi *psffsi,
  486.     struct sffsd *psffsd,
  487.     struct PageCmdHeader *pPageCmdList );
  488.  
  489. VOID EXPENTRY FS_EXIT (
  490.     USHORT    uid, 
  491.     USHORT    pid, 
  492.     USHORT    pdb );
  493.  
  494. APIRET EXPENTRY FS_FILEATTRIBUTE (
  495.     USHORT    flag,
  496.     struct cdfsi *pcdfsi,
  497.     struct cdfsd *pcdfsd,
  498.     PSZ        pName,
  499.     USHORT    iCurDirEnd,
  500.     PUSHORT    pAttr );
  501.  
  502. APIRET EXPENTRY FS_FILEINFO (
  503.     USHORT    flag,
  504.     struct sffsi *psffsi,
  505.     struct sffsd *psffsd,
  506.     USHORT    level,
  507.     PCHAR    pData,
  508.     USHORT    cbData,
  509.     USHORT    IOflag );
  510.  
  511. APIRET EXPENTRY FS_FILEIO (
  512.     struct sffsi *psffsi,
  513.     struct sffsd *psffsd,
  514.     PCHAR    pCmdList,    /* not actually PCHAR */
  515.     USHORT    cbCmdList,
  516.     PUCHAR    poError,
  517.     USHORT    IOflag );
  518.  
  519. APIRET EXPENTRY FS_FILELOCKS (
  520.     struct sffsi *psffsi,
  521.     struct sffsd *psffsd,
  522.     struct filelock *pUnLockRange,
  523.     struct filelock *pLockRange,
  524.     ULONG    timeout,
  525.     ULONG    flags );
  526.  
  527. APIRET EXPENTRY FS_FINDCLOSE (
  528.     struct fsfsi *pfsfsi, 
  529.     struct fsfsd *pfsfsd );
  530.  
  531. APIRET EXPENTRY FS_FINDFIRST (
  532.     struct cdfsi *pcdfsi,
  533.     struct cdfsd *pcdfsd,
  534.     PSZ        pName,
  535.     USHORT    iCurDirEnd,
  536.     USHORT    attr,
  537.     struct fsfsi *pfsfsi,
  538.     struct fsfsd *pfsfsd,
  539.     PCHAR    pData,
  540.     USHORT    cbData,
  541.     PUSHORT    pcMatch,
  542.     USHORT    level,
  543.     USHORT    flags );
  544.  
  545. APIRET EXPENTRY FS_FINDFROMNAME (
  546.     struct fsfsi *pfsfsi,
  547.     struct fsfsd *pfsfsd,
  548.     PCHAR    pData,
  549.     USHORT    cbData,
  550.     PUSHORT    pcMatch,
  551.     USHORT    level,
  552.     ULONG    position,
  553.     PSZ        pName,
  554.     USHORT    flags );
  555.  
  556. APIRET EXPENTRY FS_FINDNEXT (
  557.     struct fsfsi *pfsfsi,
  558.     struct fsfsd *pfsfsd,
  559.     PCHAR    pData,
  560.     USHORT    cbData,
  561.     PUSHORT    pcMatch,
  562.     USHORT    level,
  563.     USHORT    flags );
  564.  
  565. APIRET EXPENTRY FS_FLUSHBUF (
  566.     USHORT hVPB, 
  567.     USHORT flag );
  568.  
  569. APIRET EXPENTRY FS_FSCTL (
  570.     union argdat *pArgDat,
  571.     USHORT    iArgType,
  572.     USHORT    func,
  573.     PCHAR    pParm,
  574.     USHORT    lenParm,
  575.     PUSHORT    plenParmIO,
  576.     PCHAR    pData,
  577.     USHORT    lenData,
  578.     PUSHORT    plenDataIO );
  579.  
  580. APIRET EXPENTRY FS_FSINFO (
  581.     USHORT    flag,
  582.     USHORT    hVPB,
  583.     PCHAR    pData,
  584.     USHORT    cbData,
  585.     USHORT    level );
  586.  
  587. APIRET EXPENTRY FS_INIT (
  588.     PSZ        szParm, 
  589.     ULONG    pDevHlp, 
  590.     PULONG    pMiniFSD );
  591.  
  592. APIRET EXPENTRY FS_IOCTL (
  593.     struct sffsi *psffsi,
  594.     struct sffsd *psffsd,
  595.     USHORT    cat,
  596.     USHORT    func,
  597.     PCHAR    pParm,
  598.     USHORT    lenMaxParm,
  599.     PUSHORT    plenInOutParm,
  600.     PCHAR    pData,
  601.     USHORT    lenMaxData,
  602.     PUSHORT    plenInOutData );
  603.  
  604. APIRET EXPENTRY FS_MKDIR (
  605.     struct cdfsi *pcdfsi,
  606.     struct cdfsd *pcdfsd,
  607.     PSZ        pName,
  608.     USHORT    iCurDirEnd,
  609.     PEAOP    pEABuf,
  610.     USHORT    flags );
  611.  
  612. APIRET EXPENTRY FS_MOUNT (
  613.     USHORT    flag,
  614.     struct vpfsi *pvpfsi,
  615.     struct vpfsd *pvpfsd,
  616.     USHORT    hVPB,
  617.     PCHAR    pBoot );
  618.  
  619. APIRET EXPENTRY FS_MOVE (
  620.     struct cdfsi *pcdfsi,
  621.     struct cdfsd *pcdfsd,
  622.     PSZ        pSrc,
  623.     USHORT    iSrcCurDirEnd,
  624.     PSZ        pDst,
  625.     USHORT    iDatCurDirEnd,
  626.     USHORT    flags );
  627.  
  628. APIRET EXPENTRY FS_NEWSIZE (
  629.     struct sffsi *psffsi,
  630.     struct sffsd *psffsd,
  631.     ULONG    len,
  632.     USHORT    IOflag );
  633.  
  634. APIRET EXPENTRY FS_NMPIPE (
  635.     struct sffsi *psffsi,
  636.     struct sffsd *psffsd,
  637.     USHORT    OpType,
  638.     union npoper *pOpRec,
  639.     PCHAR    pData,
  640.     PSZ        pName );
  641.  
  642. APIRET EXPENTRY FS_FINDNOTIFYCLOSE (
  643.     USHORT    handle );
  644.  
  645. APIRET EXPENTRY FS_FINDNOTIFYFIRST (
  646.     struct cdfsi *pcdfsi,
  647.     struct cdfsd *pcdfsd,
  648.     PSZ        pName,
  649.     USHORT    iCurDirEnd,
  650.     USHORT    attr,
  651.     PUSHORT    pHandle,
  652.     PCHAR    pData,
  653.     USHORT    cbData,
  654.     PUSHORT    pcMatch,
  655.     USHORT    level,
  656.     ULONG    timeout );
  657.  
  658. APIRET EXPENTRY FS_FINDNOTIFYNEXT (
  659.     USHORT    handle,
  660.     PCHAR    pData,
  661.     USHORT    cbData,
  662.     PUSHORT    pcMatch,
  663.     USHORT    infolevel,
  664.     ULONG    timeout );
  665.  
  666. APIRET EXPENTRY FS_OPENCREATE (
  667.     struct cdfsi *pcdfsi,
  668.     struct cdfsd *pcdfsd,
  669.     PSZ        pName,
  670.     USHORT    iCurDirEnd,
  671.     struct sffsi *psffsi,
  672.     struct sffsd *psffsd,
  673.     ULONG    ulOpenMode,
  674.     USHORT    usOpenFlag,
  675.     PUSHORT    pusAction,
  676.     USHORT    usAttr,
  677.     PEAOP    pEABuf,
  678.     PUSHORT    pfgenflag );
  679.  
  680. APIRET EXPENTRY FS_OPENPAGEFILE (
  681.     PULONG    pFlags,
  682.     PULONG    pcMaxReq,
  683.     PSZ        pName,
  684.     struct sffsi *psffsi,
  685.     struct sffsd *psffsd,
  686.     USHORT    usOpenMode,
  687.     USHORT    usOpenFlag,
  688.     USHORT    usAttr,
  689.     ULONG    Reserved );
  690.  
  691. APIRET EXPENTRY FS_PATHINFO (
  692.     USHORT    flag,
  693.     struct cdfsi *pcdfsi,
  694.     struct cdfsd *pcdfsd,
  695.     PSZ        pName,
  696.     USHORT    iCurDirEnd,
  697.     USHORT    level,
  698.     PCHAR    pData,
  699.     USHORT    cbData );
  700.  
  701. APIRET EXPENTRY FS_PROCESSNAME (
  702.     PSZ        pNameBuf );
  703.  
  704. APIRET EXPENTRY FS_READ (
  705.     struct sffsi *psffsi,
  706.     struct sffsd *psffsd,
  707.     PCHAR    pData,
  708.     PUSHORT    pLen,
  709.     USHORT    IOflag );
  710.  
  711. APIRET EXPENTRY FS_RMDIR (
  712.     struct cdfsi *pcdfsi,
  713.     struct cdfsd *pcdfsd,
  714.     PSZ        pName,
  715.     USHORT    iCurDirEnd );
  716.  
  717. APIRET EXPENTRY FS_SETSWAP (
  718.     struct sffsi *psffsi, 
  719.     struct sffsd *psffsd );
  720.  
  721. APIRET EXPENTRY FS_SHUTDOWN (
  722.     USHORT    usType,
  723.     ULONG    ulReserved );
  724.  
  725. APIRET EXPENTRY FS_VERIFYUNCNAME (
  726.     USHORT    flag,
  727.     PSZ        pName );
  728.  
  729. APIRET EXPENTRY FS_WRITE (
  730.     struct sffsi *psffsi,
  731.     struct sffsd *psffsd,
  732.     PCHAR    pData,
  733.     PUSHORT    pLen,
  734.     USHORT    IOflag );
  735.