home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR24 / EDMI5.ZIP / IFSR3.ZIP / FSD.H < prev    next >
C/C++ Source or Header  |  1993-06-29  |  26KB  |  946 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.     unsigned long   vpi_vid;            /* 32 bit volume ID */
  25.     unsigned long   vpi_hDEV;            /* handle to device driver */
  26.     unsigned short  vpi_bsize;            /* sector size in bytes */
  27.     unsigned long   vpi_totsec;            /* total number of sectors */
  28.     unsigned short  vpi_trksec;            /* sectors / track */
  29.     unsigned short  vpi_nhead;            /* number of heads */
  30.     char        vpi_text[VPBTEXTLEN];   /* volume name */
  31.     void far *        vpi_pDCS;            /* device capability struc */
  32.     void far *        vpi_pVCS;            /* volume characteristics struc */
  33.     unsigned char   vpi_drive;            /* drive (0=A) */
  34.     unsigned char   vpi_unit;            /* unit code */
  35. };  /* vpfsi */
  36.  
  37. /*
  38.  * Predefined volume IDs: [note - keep this list in sync with list in
  39.  * dos/dosinc/vpb.inc!]
  40.  */
  41. /* Unique ID for vpb_ID field for unreadable media. */
  42. #define UNREAD_ID  0x534E4A52L        /* Stored as (bytes) 0x52,4A,4E,53. */
  43.  
  44. /*
  45.  * Unique ID for vpb_ID field for damaged volume (recognized by IFS but cannot
  46.  * be normally mounted).
  47.  */
  48. #define DAMAGED_ID 0x0L            /* Stored as (bytes) 0,0,0,0. */
  49.  
  50. /* file system dependent - volume params */
  51. struct    vpfsd {
  52.     char    vpd_work[VPDWORKAREASIZE];        /* work area */
  53. };  /* vpfsd */
  54.  
  55.  
  56. /* Current Directory structures */
  57.  
  58. struct cdfsi {
  59.     unsigned short  cdi_hVPB;        /* VPB handle for associated device */
  60.     unsigned short  cdi_end;        /* end of root portion of curdir */
  61.     char        cdi_flags;        /* flags indicating state of cdfsd */
  62.     char        cdi_curdir[CCHMAXPATH]; /* text of current directory */
  63. };  /* cdfsi */
  64.  
  65. /* bit values for cdi_flags (state of cdfsd structure */
  66.  
  67. #define CDI_ISVALID 0x80        /* format is known */
  68. #define CDI_ISROOT  0x40        /* cur dir == root */
  69. #define CDI_ISCURRENT    0x20
  70.  
  71. struct    cdfsd {
  72.     char    cdd_work[CDDWORKAREASIZE];        /* work area */
  73. };  /* cdfsd */
  74.  
  75.  
  76. /* Per open-instance (System File) structures */
  77.  
  78. struct    sffsi {
  79.     unsigned long   sfi_mode;        /* access/sharing mode */
  80.     unsigned short  sfi_hVPB;        /* volume info. */
  81.     unsigned short  sfi_ctime;        /* file creation time */
  82.     unsigned short  sfi_cdate;        /* file creation date */
  83.     unsigned short  sfi_atime;        /* file access time */
  84.     unsigned short  sfi_adate;        /* file access date */
  85.     unsigned short  sfi_mtime;        /* file modification time */
  86.     unsigned short  sfi_mdate;        /* file modification date */
  87.     unsigned long   sfi_size;        /* size of file */
  88.     unsigned long   sfi_position;   /* read/write pointer */
  89. /* the following may be of use in sharing checks */
  90.     unsigned short  sfi_UID;        /* user ID of initial opener */
  91.     unsigned short  sfi_PID;        /* process ID of initial opener */
  92.     unsigned short  sfi_PDB;        /* PDB (in 3.x box) of initial opener */
  93.     unsigned short  sfi_selfsfn;    /* system file number of file instance */
  94.     unsigned char   sfi_tstamp;        /* update/propagate time stamp flags */
  95.                     /* use with ST_Sxxx and ST_Pxxx */
  96.     unsigned short  sfi_type;        /* use with STYPE_ */
  97.     unsigned long   sfi_pPVDBFil;   /* performance counter data block pointer */
  98.     unsigned char   sfi_DOSattr;    /* DOS file attributes  D/S/A/H/R  */
  99. };  /* sffsi */
  100.  
  101. /* sfi_tstamps flags */
  102. #define ST_SCREAT  1    /* stamp creation time */
  103. #define ST_PCREAT  2    /* propagate creation time */
  104. #define ST_SWRITE  4    /* stamp last write time */
  105. #define ST_PWRITE  8    /* propagate last write time */
  106. #define ST_SREAD  16    /* stamp last read time */
  107. #define ST_PREAD  32    /* propagate last read time */
  108.  
  109. /* sfi_type flags */
  110. #define STYPE_FILE    0    /* file */
  111. #define STYPE_DEVICE    1    /* device */
  112. #define STYPE_NMPIPE    2    /* named pipe */
  113. #define STYPE_FCB    4    /* fcb sft */
  114.  
  115. /* file system dependent - file instance */
  116. struct    sffsd {
  117.     char    sfd_work[SFDWORKAREASIZE];        /* work area */
  118. };  /* sffsd */
  119.  
  120.  
  121. /* file system independent - file search parameters */
  122. struct fsfsi {
  123.     unsigned short    fsi_hVPB;    /* volume info. */
  124. };  /* fsfsi */
  125.  
  126. /* file system dependent - file search parameters */
  127. #define FSFSD_WORK_SIZE        24
  128. struct fsfsd {
  129.     char        fsd_work[FSFSD_WORK_SIZE];    /* work area */
  130. };  /* fsfsd */
  131.  
  132. /* file system dependent - device information */
  133. struct devfsd {
  134.     unsigned long    FSDRef; /* Reference obtained from FSD during ATTACH */
  135. };  /* devfsd */
  136.  
  137. /*****
  138.  *
  139.  * union and structures for FS_FSCTL
  140.  */
  141. /* pArgType == 1, FileHandle directed case */
  142. /* XLATOFF */
  143. struct SF {
  144.     struct sffsi far * psffsi;
  145.     struct sffsd far * psffsd;
  146. };  /* SF */
  147. /* XLATON */
  148.  
  149. /* pArgType == 2, PathName directed case */
  150. struct CD {
  151.     struct cdfsi far * pcdfsi;
  152.     struct cdfsd far * pcdfsd;
  153.     char far *       pPath;
  154.     unsigned short       iCurDirEnd;
  155. };  /* CD */
  156.  
  157. /* XLATOFF */
  158. union argdat {
  159.     /* pArgType == 1, FileHandle directed case */
  160.     struct SF sf;
  161.  
  162.     /* pArgType == 2, PathName directed case */
  163.     struct CD cd;
  164.  
  165.     /* pArgType == 3, FSD Name directed case */
  166.     /* nothing */
  167. };  /* argdat */
  168. /* XLATON */
  169.  
  170.  
  171. /*****
  172.  *
  173.  * Union and structures for FS_NMPIPE
  174.  *
  175.  */
  176.  
  177.     /* Get/SetPHandState parameter block */
  178.     struct    phs_param {
  179.     short    phs_len;
  180.     short    phs_dlen;
  181.     short    phs_pmode;    /* pipe mode set or returned */
  182.     };
  183.  
  184.  
  185.     /* DosQNmPipeInfo parameter block,
  186.      * data is info. buffer addr */
  187.     struct    npi_param {
  188.     short    npi_len;
  189.     short    npi_dlen;
  190.     short    npi_level;    /* information level desired */
  191.     };
  192.  
  193.  
  194.     /* DosRawReadNmPipe parameters,
  195.      * data is buffer addr */
  196.     struct    npr_param {
  197.     short    npr_len;
  198.     short    npr_dlen;
  199.     short    npr_nbyt;    /* number of bytes read */
  200.     };
  201.  
  202.     /* DosRawWriteNmPipe parameters,
  203.      * data is buffer addr */
  204.     struct    npw_param {
  205.     short    npw_len;
  206.     short    npw_dlen;
  207.     short    npw_nbyt;    /* number of bytes written */
  208.     };
  209.  
  210.     /* NPipeWait parameters */
  211.     struct    npq_param {
  212.     short    npq_len;
  213.     short    npq_dlen;
  214.     long    npq_timeo;    /* timeout in milliseconds */
  215.     short    npq_prio;    /* priority of caller */
  216.     };
  217.  
  218.     /* DosCallNmPipe parameters,
  219.      * data is in-buffer addr */
  220.     struct    npx_param {
  221.     short        npx_len;
  222.     unsigned short    npx_ilen;   /* length of in-buffer */
  223.     char far    *npx_obuf;  /* pointer to out-buffer */
  224.     unsigned short    npx_olen;   /* length of out-buffer */
  225.     unsigned short    npx_nbyt;   /* number of bytes read */
  226.     long        npx_timeo;  /* timeout in milliseconds */
  227.     };
  228.  
  229.     /* PeekPipe parameters, data is buffer addr */
  230.     struct    npp_param {
  231.     short        npp_len;
  232.     unsigned short    npp_dlen;
  233.     unsigned short    npp_nbyt;   /* number of bytes read */
  234.     unsigned short    npp_avl0;   /* bytes left in pipe */
  235.     unsigned short    npp_avl1;   /* bytes left in current msg */
  236.     unsigned short    npp_state;  /* pipe state */
  237.     };
  238.  
  239.     /* DosTransactNmPipe parameters,
  240.      * data is in-buffer addr */
  241.     struct    npt_param {
  242.     short        npt_len;
  243.     unsigned short    npt_ilen;   /* length of in-buffer */
  244.     char far    *npt_obuf;  /* pointer to out-buffer */
  245.     unsigned short    npt_olen;   /* length of out-buffer */
  246.     unsigned short    npt_nbyt;   /* number of bytes read */
  247.     };
  248.  
  249.     /* QNmpipeSemState parameter block,
  250.      * data is user data buffer */
  251.     struct    qnps_param {
  252.     unsigned short    qnps_len;   /* length of parameter block */
  253.     unsigned short    qnps_dlen;  /* length of supplied data block */
  254.     long        qnps_semh;  /* system semaphore handle */
  255.     unsigned short    qnps_nbyt;  /* number of bytes returned */
  256.     };
  257.  
  258.     /* ConnectPipe parameter block, no data block */
  259.     struct    npc_param {
  260.     unsigned short    npc_len;    /* length of parameter block */
  261.     unsigned short    npc_dlen;   /* length of data block */
  262.     };
  263.  
  264.     /* DisconnectPipe parameter block, no data block */
  265.     struct    npd_param {
  266.     unsigned short    npd_len;    /* length of parameter block */
  267.     unsigned short    npd_dlen;   /* length of data block */
  268.     };
  269.  
  270.     /* XLATOFF */
  271.     union npoper {
  272.     struct phs_param    phs;
  273.     struct npi_param    npi;
  274.     struct npr_param    npr;
  275.     struct npw_param    npw;
  276.     struct npq_param    npq;
  277.     struct npx_param    npx;
  278.     struct npp_param    npp;
  279.     struct npt_param    npt;
  280.     struct qnps_param   qnps;
  281.     struct npc_param    npc;
  282.     struct npd_param    npd;
  283.     };    /* npoper */
  284. /* XLATON */
  285.  
  286.  
  287. /*****
  288.  *
  289.  * Declarations for FS_DOPAGEIO entry point.
  290.  *
  291.  */
  292.  
  293.     struct PageCmd {
  294.     unsigned char Cmd;        /* Cmd code for Read, Write, WriteVerify */
  295.     unsigned char Priority;        /* Same values as for request packets */
  296.     unsigned char Status;        /* Status byte */
  297.     unsigned char Error;        /* I24 error code */
  298.     unsigned long Addr;        /* Physical (32 bit) or Virtual (16:16) */
  299.     unsigned long FileOffset;   /* Byte offset in page file */
  300.                     /* (on page boundary) */
  301.     };
  302.  
  303.     /* XLATOFF */
  304.     struct PageCmdHeader {
  305.     unsigned char InFlags;        /* Input flags */
  306.     unsigned char OutFlags;        /* Output flags - must be 0 on entry */
  307.     unsigned char OpCount;        /* Number of operations */
  308.     unsigned char Pad;        /* Preserve DWORD alignment */
  309.     unsigned long Reserved1;    /* unused */
  310.     unsigned long Reserved2;    /* unused */
  311.     unsigned long Reserved3;    /* unused */
  312.     struct PageCmd PageCmdList [1]; /* The actual commands */
  313.     };
  314.     /* XLATON */
  315.  
  316.     /* FSD_DoPageIO InFlags values */
  317.     #define PGIO_FI_ORDER   0x01    /* Force Order of operations */
  318.  
  319.     /* FSD_DoPageIO OutFlags values */
  320.     #define PGIO_FO_DONE    0x01    /* Operation done */
  321.     #define PGIO_FO_ERROR   0x02    /* Operation failed */
  322.  
  323.     /* FSD_DoPageIO Status values */
  324.     #define PGIO_ATTEMPTED  0x0f    /* Operation attempted */
  325.     #define PGIO_FAILED        0xf0    /* Operation failed */
  326.  
  327. /*****
  328.  *
  329.  * Declarations for the FSD entry points.
  330.  *
  331.  */
  332.  
  333. /* bit values for the IOflag parameter in various FS_ entry points */
  334. #define IOFL_WRITETHRU        0x10    /* Write through bit    */
  335. #define IOFL_NOCACHE        0x20    /* No Cache bit        */
  336.  
  337.  
  338. /* XLATOFF */
  339. short int far pascal
  340. FS_ALLOCATEPAGESPACE(
  341.     struct sffsi far *psffsi,        /* ptr to fs independent SFT */
  342.     struct sffsd far *psffsd,        /* ptr to fs dependent SFT     */
  343.     unsigned long     lSize,        /* new size             */
  344.     unsigned long     lWantContig   /* contiguous chunk size     */
  345. );
  346.  
  347. short int far pascal
  348. FSD_ATTACH(
  349.     unsigned short,        /* flag        */
  350.     char *,            /* pDev        */
  351. /*    void far *,            /* if remote drive
  352.                      struct vpfsd far *
  353.                    else if remote device
  354.                      null ptr (0L)    */
  355.     void *,            /* if remote drive
  356.                      struct cdfsd far *
  357.                    else
  358.                      struct devfsd far * */
  359. */
  360.     struct vpfsd *,            /* if remote drive
  361.                      struct vpfsd far *
  362.                    else if remote device
  363.                      null ptr (0L)    */
  364.     struct cdfsd *,            /* if remote drive
  365.                      struct cdfsd far *
  366.                    else
  367.                      struct devfsd far * */
  368. /*
  369.     char far *,            /* pParm    */
  370. */
  371.     void *,            /* pParm    */
  372.     unsigned short *    /* pLen        */
  373. );
  374. /* XLATON */
  375.  
  376. /* values for flag in FS_ATTACH */
  377. #define FSA_ATTACH        0x00
  378. #define FSA_DETACH        0x01
  379. #define FSA_ATTACH_INFO        0x02
  380.  
  381. /* XLATOFF */
  382. short int far pascal
  383. FS_CANCELLOCKREQUEST(
  384.     struct sffsi far *,        /* psffsi    */
  385.     struct sffsd far *,        /* psffsd    */
  386.     void far *            /* pLockRang    */
  387. );
  388.  
  389. short int far pascal
  390. FS_CHDIR(
  391.     unsigned short,        /* flag        */
  392.     struct cdfsi far *,        /* pcdfsi    */
  393.     struct cdfsd far *,        /* pcdfsd    */
  394.     char far *,            /* pDir        */
  395.     unsigned short        /* iCurDirEnd    */
  396. );
  397. /* XLATON */
  398.  
  399. /* values for flag in FS_CHDIR */
  400. #define CD_EXPLICIT        0x00
  401. #define CD_VERIFY        0x01
  402. #define CD_FREE            0x02
  403.  
  404. /* XLATOFF */
  405. short int far pascal
  406. FS_CHGFILEPTR(
  407.     struct sffsi far *,        /* psffsi    */
  408.     struct sffsd far *,        /* psffsd    */
  409.     long,            /* offset    */
  410.     unsigned short,        /* type        */
  411.     unsigned short        /* IOflag    */
  412. );
  413.  
  414. /* values for type in FS_CHGFILEPTR */
  415. #define CFP_RELBEGIN        0x00
  416. #define CFP_RELCUR        0x01
  417. #define CFP_RELEND        0x02
  418.  
  419. short int far pascal
  420. FS_CLOSE(
  421.     unsigned short,        /* close type    */
  422.     unsigned short,        /* IOflag    */
  423.     struct sffsi far *,        /* psffsi    */
  424.     struct sffsd far *        /* psffsd    */
  425. );
  426. /* XLATON */
  427.  
  428. #define FS_CL_ORDINARY    0
  429.         /* ordinary close of file */
  430. #define FS_CL_FORPROC    1
  431.         /* final close of file for the process */
  432. #define FS_CL_FORSYS    2
  433.         /* final close of file for the system (for all processes) */
  434.  
  435. /* XLATOFF */
  436. short int far pascal
  437. FS_COMMIT(
  438.     unsigned short,        /* commit type    */
  439.     unsigned short,        /* IOflag    */
  440.     struct sffsi far *,        /* psffsi    */
  441.     struct sffsd far *        /* psffsd    */
  442. );
  443. /* XLATON */
  444.  
  445. /* values for commit type */
  446. #define FS_COMMIT_ONE    1
  447.     /* commit for a single file */
  448. #define FS_COMMIT_ALL    2
  449.     /* commit due to buf reset - for all files */
  450.  
  451. /* XLATOFF */
  452. short int far pascal
  453. FS_COPY(
  454.     unsigned short,        /* copy mode    */
  455.     struct cdfsi far *,        /* pcdfsi    */
  456.     struct cdfsd far *,        /* pcdfsd    */
  457.     char far *,            /* source name    */
  458.     unsigned short,        /* iSrcCurrDirEnd    */
  459.     char far *,            /* pDst        */
  460.     unsigned short,        /* iDstCurrDirEnd    */
  461.     unsigned short        /* nameType (flags)    */
  462. );
  463.  
  464. short int far pascal
  465. FS_DELETE(
  466.     struct cdfsi far *,        /* pcdfsi    */
  467.     struct cdfsd far *,        /* pcdfsd    */
  468.     char far *,            /* pFile    */
  469.     unsigned short        /* iCurDirEnd    */
  470. );
  471.  
  472. short int far pascal
  473. FS_DOPAGEIO(
  474.     struct sffsi far *           psffsi,        /* ptr to fs independent SFT    */
  475.     struct sffsd far *           psffsd,        /* ptr to fs dependent SFT        */
  476.     struct PageCmdHeader far * pPageCmdList /* ptr to list of page commands */
  477. );
  478.  
  479. void far pascal
  480. FS_EXIT(
  481.     unsigned short,        /* uid        */
  482.     unsigned short,        /* pid        */
  483.     unsigned short        /* pdb        */
  484. );
  485.  
  486. short int far pascal
  487. FS_FILEATTRIBUTE(
  488.     unsigned short,        /* flag        */
  489.     struct cdfsi far *,        /* pcdfsi    */
  490.     struct cdfsd far *,        /* pcdfsd    */
  491.     char far *,            /* pName    */
  492.     unsigned short,        /* iCurDirEnd    */
  493.     unsigned short far *    /* pAttr    */
  494. );
  495. /* XLATON */
  496.  
  497. /* values for flag in FS_FILEATTRIBUTE */
  498. #define FA_RETRIEVE        0x00
  499. #define FA_SET            0x01
  500.  
  501. /* XLATOFF */
  502. short int far pascal
  503. FS_FILEINFO(
  504.     unsigned short,        /* flag        */
  505.     struct sffsi far *,        /* psffsi    */
  506.     struct sffsd far *,        /* psffsd    */
  507.     unsigned short,        /* level    */
  508.     char far *,            /* pData    */
  509.     unsigned short,        /* cbData    */
  510.     unsigned short        /* IOflag    */
  511. );
  512. /* XLATON */
  513.  
  514. /* values for flag in FS_FILEINFO */
  515. #define FI_RETRIEVE        0x00
  516. #define FI_SET            0x01
  517.  
  518. /* XLATOFF */
  519. short int far pascal
  520. FS_FILEIO(
  521.     struct sffsi far *,        /* psffsi    */
  522.     struct sffsd far *,        /* psffsd    */
  523.     char far *,            /* cbCmdList    */
  524.     unsigned short,        /* pCmdLen    */
  525.     unsigned short far *,    /* poError    */
  526.     unsigned short        /* IOflag    */
  527. );
  528.  
  529. short int far pascal
  530. FS_FILELOCKS(
  531.     struct sffsi far *,        /* psffsi    */
  532.     struct sffsd far *,        /* psffsd    */
  533.     void far *,            /* pUnLockRange */
  534.     void far *,            /* pLockRange    */
  535.     unsigned long,        /* timeout    */
  536.     unsigned long        /* flags    */
  537. );
  538.  
  539. short int far pascal
  540. FS_FINDCLOSE(
  541.     struct fsfsi far *,        /* pfsfsi    */
  542.     struct fsfsd far *        /* pfsfsd    */
  543. );
  544. /* XLATON */
  545.  
  546. /* values for flag in FS_FindFirst, FS_FindFromName, FS_FindNext */
  547. #define        FF_NOPOS        0x00
  548. #define        FF_GETPOS        0X01
  549.  
  550.  
  551. /* XLATOFF */
  552. short int far pascal
  553. FS_FINDFIRST(
  554.     struct cdfsi far *,        /* pcdfsi    */
  555.     struct cdfsd far *,        /* pcdfsd    */
  556.     char far *,            /* pName    */
  557.     unsigned short,        /* iCurDirEnd    */
  558.     unsigned short,        /* attr        */
  559.     struct fsfsi far *,        /* pfsfsi    */
  560.     struct fsfsd far *,        /* pfsfsd    */
  561.     char far *,            /* pData    */
  562.     unsigned short,        /* cbData    */
  563.     unsigned short far *,    /* pcMatch    */
  564.     unsigned short,        /* level    */
  565.     unsigned short        /* flags    */
  566. );
  567.  
  568. short int far pascal
  569. FS_FINDFROMNAME(
  570.     struct fsfsi far *,        /* pfsfsi    */
  571.     struct fsfsd far *,        /* pfsfsd    */
  572.     char far *,            /* pData    */
  573.     unsigned short,        /* cbData    */
  574.     unsigned short far *,    /* pcMatch    */
  575.     unsigned short,        /* level    */
  576.     unsigned long,        /* position    */
  577.     char far *,            /* pName    */
  578.     unsigned short        /* flags    */
  579. );
  580.  
  581. short int far pascal
  582. FS_FINDNEXT(
  583.     struct fsfsi far *,        /* pfsfsi    */
  584.     struct fsfsd far *,        /* pfsfsd    */
  585.     char far *,            /* pData    */
  586.     unsigned short,        /* cbData    */
  587.     unsigned short far *,    /* pcMatch    */
  588.     unsigned short,        /* level    */
  589.     unsigned short        /* flag        */
  590. );
  591.  
  592. short int far pascal
  593. FS_FINDNOTIFYCLOSE(
  594.     unsigned short        /* handle    */
  595. );
  596.  
  597. short int far pascal
  598. FS_FINDNOTIFYFIRST(
  599.     struct cdfsi far *,        /* pcdfsi    */
  600.     struct cdfsd far *,        /* pcdfsd    */
  601.     char far *,            /* pName    */
  602.     unsigned short,        /* iCurDirEnd    */
  603.     unsigned short,        /* attr        */
  604.     unsigned short far *,    /* pHandle    */
  605.     char far *,            /* pData    */
  606.     unsigned short,        /* cbData    */
  607.     unsigned short far *,    /* pcMatch    */
  608.     unsigned short,        /* level    */
  609.     unsigned long        /* timeout    */
  610. );
  611.  
  612. short int far pascal
  613. FS_FINDNOTIFYNEXT(
  614.     unsigned short,        /* handle    */
  615.     char far *,            /* pData    */
  616.     unsigned short,        /* cbData    */
  617.     unsigned short far *,    /* pcMatch    */
  618.     unsigned short,        /* infolevel    */
  619.     unsigned long        /* timeout    */
  620. );
  621.  
  622. short int far pascal
  623. FS_FLUSHBUF(
  624.     unsigned short,        /* hVPB        */
  625.     unsigned short        /* flag        */
  626. );
  627. /* XLATON */
  628.  
  629. /* values for flag in FS_FLUSH */
  630. #define FLUSH_RETAIN        0x00
  631. #define FLUSH_DISCARD        0x01
  632.  
  633. /* XLATOFF */
  634. short int far pascal
  635. FS_FSCTL(
  636.     union argdat far *,        /* pArgdat    */
  637.     unsigned short,        /* iArgType    */
  638.     unsigned short,        /* func        */
  639.     char far *,            /* pParm    */
  640.     unsigned short,        /* lenParm    */
  641.     unsigned short far *,    /* plenParmOut    */
  642.     char far *,            /* pData    */
  643.     unsigned short,        /* lenData    */
  644.     unsigned short far *    /* plenDataOut    */
  645. );
  646. /* XLATON */
  647.  
  648. /* values for iArgType in FS_FSCTL */
  649. #define FSCTL_ARG_FILEINSTANCE    0x01
  650. #define FSCTL_ARG_CURDIR    0x02
  651. #define FSCTL_ARG_NULL        0x03
  652.  
  653. /* values for func in FS_FSCTL */
  654. #define FSCTL_FUNC_NONE        0x00
  655. #define FSCTL_FUNC_NEW_INFO    0x01
  656. #define FSCTL_FUNC_EASIZE    0x02
  657.  
  658. /* XLATOFF */
  659. short int far pascal
  660. FS_FSINFO(
  661.     unsigned short,        /* flag        */
  662.     unsigned short,        /* hVPB        */
  663.     char far *,            /* pData    */
  664.     unsigned short,        /* cbData    */
  665.     unsigned short        /* level    */
  666. );
  667. /* XLATON */
  668.  
  669. /* values for flag in FS_FSINFO */
  670. #define INFO_RETREIVE        0x00
  671. #define INFO_SET        0x01
  672.  
  673. /* XLATOFF */
  674. short int far pascal
  675. FS_INIT(
  676.     char far *,            /* szParm    */
  677. /*
  678.     unsigned long,        /* pDevHlp    */
  679. */
  680.     void (*)(void),        /* pDevHlp    */
  681.     unsigned long far *        /* pMiniFSD    */
  682. );
  683.  
  684. short int far pascal
  685. FS_IOCTL(
  686.     struct sffsi far *,        /* psffsi    */
  687.     struct sffsd far *,        /* psffsd    */
  688.     unsigned short,        /* cat        */
  689.     unsigned short,        /* func        */
  690.     char far *,            /* pParm    */
  691.     unsigned short,        /* lenParm    */
  692.     unsigned far *,        /* pParmLenInOut */
  693.     char far *,            /* pData    */
  694.     unsigned short,        /* lenData    */
  695.     unsigned far *        /* pDataLenInOut */
  696. );
  697.  
  698. short int far pascal
  699. FS_MKDIR(
  700.     struct cdfsi far *,        /* pcdfsi    */
  701.     struct cdfsd far *,        /* pcdfsd    */
  702.     char far *,            /* pName    */
  703.     unsigned short,        /* iCurDirEnd    */
  704.     char far *,            /* pEABuf    */
  705.     unsigned short        /* flags    */
  706. );
  707.  
  708. short int far pascal
  709. FS_MOUNT(
  710.     unsigned short,        /* flag        */
  711.     struct vpfsi far *,        /* pvpfsi    */
  712.     struct vpfsd far *,        /* pvpfsd    */
  713.     unsigned short,        /* hVPB        */
  714.     char far *            /* pBoot    */
  715. );
  716. /* XLATON */
  717.  
  718. /* values for flag in FS_MOUNT */
  719. #define MOUNT_MOUNT        0x00
  720. #define MOUNT_VOL_REMOVED    0x01
  721. #define MOUNT_RELEASE        0x02
  722. #define MOUNT_ACCEPT        0x03
  723.  
  724. /* XLATOFF */
  725. short int far pascal
  726. FS_MOVE(
  727.     struct cdfsi far *,        /* pcdfsi    */
  728.     struct cdfsd far *,        /* pcdfsd    */
  729.     char far *,            /* pSrc        */
  730.     unsigned short,        /* iSrcCurDirEnd*/
  731.     char far *,            /* pDst        */
  732.     unsigned short,        /* iDstCurDirEnd*/
  733.     unsigned short        /* flags    */
  734. );
  735.  
  736. short int far pascal
  737. FS_NEWSIZE(
  738.     struct sffsi far *,        /* psffsi    */
  739.     struct sffsd far *,        /* psffsd    */
  740.     unsigned long,        /* len        */
  741.     unsigned short        /* IOflag    */
  742. );
  743.  
  744.  
  745. short int far pascal
  746. FS_NMPIPE(
  747.     struct sffsi far *,        /* psffsi    */
  748.     struct sffsd far *,        /* psffsd    */
  749.     unsigned short,        /* OpType    */
  750.     union npoper far *,        /* pOpRec    */
  751.     char far *,            /* pData    */
  752.     char far *            /* pName    */
  753. );
  754. /* XLATON */
  755.  
  756. /* Values for OpType in FS_NMPIPE   */
  757.  
  758. #define        NMP_GetPHandState        0x21
  759. #define        NMP_SetPHandState        0x01
  760. #define        NMP_PipeQInfo        0x22
  761. #define        NMP_PeekPipe        0x23
  762. #define        NMP_ConnectPipe        0x24
  763. #define        NMP_DisconnectPipe        0x25
  764. #define        NMP_TransactPipe        0x26
  765. #define        NMP_READRAW            0x11
  766. #define        NMP_WRITERAW        0x31
  767. #define        NMP_WAITPIPE        0x53
  768. #define        NMP_CALLPIPE        0x54
  769. #define        NMP_QNmPipeSemState        0x58
  770.  
  771.  
  772. /* XLATOFF */
  773. short int far pascal
  774. FS_OPENCREATE(
  775.     struct cdfsi far *,        /* pcdfsi        */
  776. /*
  777.     void far *,            /* if remote device
  778.                      struct devfsd far *
  779.                    else
  780.                      struct cdfsd far * */
  781. */
  782.     struct cdfsd far *,            /* if remote device
  783.                      struct devfsd far *
  784.                    else
  785.                      struct cdfsd far * */
  786.     char far *,            /* pName        */
  787.     unsigned short,        /* iCurDirEnd        */
  788.     struct sffsi far *,        /* psffsi        */
  789.     struct sffsd far *,        /* psffsd        */
  790.     unsigned long,        /* fhandflag/openmode    */
  791.     unsigned short,        /* openflag        */
  792.     unsigned short far *,    /* pAction        */
  793.     unsigned short,        /* attr            */
  794.     char far *,            /* pEABuf        */
  795.     unsigned short far *    /* pfgenFlag        */
  796. );
  797. /* XLATON */
  798.  
  799. #define FOC_NEEDEAS    0x1    /*there are need eas for this file */
  800.  
  801. /* XLATOFF */
  802. short int far pascal
  803. FS_OPENPAGEFILE (
  804.     unsigned long far *pFlags,        /* pointer to Flags              */
  805.     unsigned long far *pcMaxReq,    /* max # of reqs packed in list   */
  806.     char far *           pName,        /* name of paging file          */
  807.     struct sffsi far * psffsi,        /* ptr to fs independent SFT      */
  808.     struct sffsd far * psffsd,        /* ptr to fs dependent SFT          */
  809.     unsigned short     OpenMode,    /* sharing, ...              */
  810.     unsigned short     OpenFlag,    /* open flag for action          */
  811.     unsigned short     Attr,        /* file attribute              */
  812.     unsigned long      Reserved        /* reserved, must be zero          */
  813. );
  814. /* XLATON */
  815.  
  816. /* values for *pFlags in FS_OPENPAGEFILE */
  817. #define PGIO_FIRSTOPEN 0x00000001   /* first open of page file          */
  818. #define PGIO_PADDR     0x00004000   /* physical addresses required    */
  819. #define PGIO_VADDR     0x00008000   /* 16:16 virtual address required */
  820.  
  821. /* XLATOFF */
  822. short int far pascal
  823. FS_PATHINFO(
  824.     unsigned short,        /* flag        */
  825.     struct cdfsi far *,        /* pcdfsi    */
  826.     struct cdfsd far *,        /* pcdfsd    */
  827.     char far *,            /* pName    */
  828.     unsigned short,        /* iCurDirEnd    */
  829.     unsigned short,        /* level    */
  830.     char far *,            /* pData    */
  831.     unsigned short        /* cbData    */
  832. );
  833. /* XLATON */
  834.  
  835. /* values for flag in FS_PATHINFO */
  836. #define PI_RETRIEVE        0x00
  837. #define PI_SET            0x01
  838.  
  839. /* XLATOFF */
  840. short int far pascal
  841. FS_PROCESSNAME(
  842.     char far *            /* pNameBuf    */
  843. );
  844.  
  845. short int far pascal
  846. FS_READ(
  847.     struct sffsi far *,        /* psffsi    */
  848.     struct sffsd far *,        /* psffsd    */
  849.     char far *,            /* pData    */
  850.     unsigned short far *,    /* pLen        */
  851.     unsigned short        /* IOflag    */
  852. );
  853.  
  854. short int far pascal
  855. FS_RMDIR(
  856.     struct cdfsi far *,        /* pcdfsi    */
  857.     struct cdfsd far *,        /* pcdfsd    */
  858.     char far *,            /* pName    */
  859.     unsigned short        /* iCurDirEnd    */
  860. );
  861.  
  862. short int far pascal
  863. FS_SETSWAP(
  864.     struct sffsi far *,        /* psffsi    */
  865.     struct sffsd far *        /* psffsd    */
  866. );
  867.  
  868. short int far pascal
  869. FS_SHUTDOWN(
  870.     unsigned short,        /* usType    */
  871.     unsigned long        /* ulReserved    */
  872. );
  873. /* XLATON */
  874.  
  875. /* values for usType in FS_SHUTDOWN */
  876. #define SD_BEGIN        0x00
  877. #define SD_COMPLETE        0x01
  878.  
  879. /* XLATOFF */
  880.  
  881. short int far pascal
  882. FS_VERIFYUNCNAME(
  883.     unsigned short,        /* flag        */
  884.     char far *            /* pName    */
  885. );
  886.  
  887.  
  888. /* XLATON */
  889. /* values for flag in FS_PATHINFO */
  890. /* These values depend on code in GetUNCFSDFromPath */
  891. /* Don't change values without also changing code */
  892. #define VUN_PASS1         0x0000
  893. #define VUN_PASS2         0x0001
  894. #define ERROR_UNC_PATH_NOT_FOUND 0x0003      /* equals ERROR_PATH_NOT_FOUND */
  895.  
  896. /* XLATOFF */
  897.  
  898. short int far pascal
  899. FS_WRITE(
  900.     struct sffsi far *,        /* psffsi    */
  901.     struct sffsd far *,        /* psffsd    */
  902.     char far *,            /* pData    */
  903.     unsigned short far *,    /* pLen        */
  904.     unsigned short        /* IOflag    */
  905. );
  906.  
  907. int far pascal
  908. MFS_CHGFILEPTR(
  909.     unsigned long,        /* offset    */
  910.     unsigned short        /* type        */
  911. );
  912.  
  913. int far pascal
  914. MFS_CLOSE(
  915.     void
  916. );
  917.  
  918.  
  919. int far pascal
  920. MFS_INIT(
  921.     void far *,            /* bootdata    */
  922.     char far *,            /* number io    */
  923.     long far *,            /* vectorripl    */
  924.     void far *,            /* bpb        */
  925.     unsigned long far *,    /* pMiniFSD    */
  926.     unsigned long far *        /* dump address */
  927. );
  928.  
  929. int far pascal
  930. MFS_OPEN(
  931.     char far *,            /* name        */
  932.     unsigned long far *        /* size        */
  933. );
  934.  
  935. int far pascal
  936. MFS_READ(
  937.     char far *,            /* data        */
  938.     unsigned short far *    /* length    */
  939. );
  940.  
  941. int far pascal
  942. MFS_TERM(
  943.     void
  944. );
  945. /* XLATON */
  946.