home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR24 / EDMI5.ZIP / IFSR0.ZIP / FSD.H < prev    next >
C/C++ Source or Header  |  1993-06-29  |  32KB  |  954 lines

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