home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ifsinf.zip / FSD.H < prev    next >
C/C++ Source or Header  |  1991-12-16  |  25KB  |  925 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. 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. int far pascal
  348. FS_ATTACH(
  349.     unsigned short,        /* flag        */
  350.     char far *,            /* pDev        */
  351.     void far *,            /* if remote drive
  352.                      struct vpfsd far *
  353.                    else if remote device
  354.                      null ptr (0L)    */
  355.     void far *,            /* if remote drive
  356.                      struct cdfsd far *
  357.                    else
  358.                      struct devfsd far * */
  359.     char far *,            /* pParm    */
  360.     unsigned short far *    /* pLen        */
  361. );
  362. /* XLATON */
  363.  
  364. /* values for flag in FS_ATTACH */
  365. #define FSA_ATTACH        0x00
  366. #define FSA_DETACH        0x01
  367. #define FSA_ATTACH_INFO        0x02
  368.  
  369. /* XLATOFF */
  370. int far pascal
  371. FS_CANCELLOCKREQUEST(
  372.     struct sffsi far *,        /* psffsi    */
  373.     struct sffsd far *,        /* psffsd    */
  374.     void far *            /* pLockRang    */
  375. );
  376.  
  377. int far pascal
  378. FS_CHDIR(
  379.     unsigned short,        /* flag        */
  380.     struct cdfsi far *,        /* pcdfsi    */
  381.     struct cdfsd far *,        /* pcdfsd    */
  382.     char far *,            /* pDir        */
  383.     unsigned short        /* iCurDirEnd    */
  384. );
  385. /* XLATON */
  386.  
  387. /* values for flag in FS_CHDIR */
  388. #define CD_EXPLICIT        0x00
  389. #define CD_VERIFY        0x01
  390. #define CD_FREE            0x02
  391.  
  392. /* XLATOFF */
  393. int far pascal
  394. FS_CHGFILEPTR(
  395.     struct sffsi far *,        /* psffsi    */
  396.     struct sffsd far *,        /* psffsd    */
  397.     long,            /* offset    */
  398.     unsigned short,        /* type        */
  399.     unsigned short        /* IOflag    */
  400. );
  401.  
  402. /* values for type in FS_CHGFILEPTR */
  403. #define CFP_RELBEGIN        0x00
  404. #define CFP_RELCUR        0x01
  405. #define CFP_RELEND        0x02
  406.  
  407. int far pascal
  408. FS_CLOSE(
  409.     unsigned short,        /* close type    */
  410.     unsigned short,        /* IOflag    */
  411.     struct sffsi far *,        /* psffsi    */
  412.     struct sffsd far *        /* psffsd    */
  413. );
  414. /* XLATON */
  415.  
  416. #define FS_CL_ORDINARY    0
  417.         /* ordinary close of file */
  418. #define FS_CL_FORPROC    1
  419.         /* final close of file for the process */
  420. #define FS_CL_FORSYS    2
  421.         /* final close of file for the system (for all processes) */
  422.  
  423. /* XLATOFF */
  424. int far pascal
  425. FS_COMMIT(
  426.     unsigned short,        /* commit type    */
  427.     unsigned short,        /* IOflag    */
  428.     struct sffsi far *,        /* psffsi    */
  429.     struct sffsd far *        /* psffsd    */
  430. );
  431. /* XLATON */
  432.  
  433. /* values for commit type */
  434. #define FS_COMMIT_ONE    1
  435.     /* commit for a single file */
  436. #define FS_COMMIT_ALL    2
  437.     /* commit due to buf reset - for all files */
  438.  
  439. /* XLATOFF */
  440. int far pascal
  441. FS_COPY(
  442.     unsigned short,        /* copy mode    */
  443.     struct cdfsi far *,        /* pcdfsi    */
  444.     struct cdfsd far *,        /* pcdfsd    */
  445.     char far *,            /* source name    */
  446.     unsigned short,        /* iSrcCurrDirEnd    */
  447.     char far *,            /* pDst        */
  448.     unsigned short,        /* iDstCurrDirEnd    */
  449.     unsigned short        /* nameType (flags)    */
  450. );
  451.  
  452. int far pascal
  453. FS_DELETE(
  454.     struct cdfsi far *,        /* pcdfsi    */
  455.     struct cdfsd far *,        /* pcdfsd    */
  456.     char far *,            /* pFile    */
  457.     unsigned short        /* iCurDirEnd    */
  458. );
  459.  
  460. int far pascal
  461. FS_DOPAGEIO(
  462.     struct sffsi far *           psffsi,        /* ptr to fs independent SFT    */
  463.     struct sffsd far *           psffsd,        /* ptr to fs dependent SFT        */
  464.     struct PageCmdHeader far * pPageCmdList /* ptr to list of page commands */
  465. );
  466.  
  467. void far pascal
  468. FS_EXIT(
  469.     unsigned short,        /* uid        */
  470.     unsigned short,        /* pid        */
  471.     unsigned short        /* pdb        */
  472. );
  473.  
  474. int far pascal
  475. FS_FILEATTRIBUTE(
  476.     unsigned short,        /* flag        */
  477.     struct cdfsi far *,        /* pcdfsi    */
  478.     struct cdfsd far *,        /* pcdfsd    */
  479.     char far *,            /* pName    */
  480.     unsigned short,        /* iCurDirEnd    */
  481.     unsigned short far *    /* pAttr    */
  482. );
  483. /* XLATON */
  484.  
  485. /* values for flag in FS_FILEATTRIBUTE */
  486. #define FA_RETRIEVE        0x00
  487. #define FA_SET            0x01
  488.  
  489. /* XLATOFF */
  490. int far pascal
  491. FS_FILEINFO(
  492.     unsigned short,        /* flag        */
  493.     struct sffsi far *,        /* psffsi    */
  494.     struct sffsd far *,        /* psffsd    */
  495.     unsigned short,        /* level    */
  496.     char far *,            /* pData    */
  497.     unsigned short,        /* cbData    */
  498.     unsigned short        /* IOflag    */
  499. );
  500. /* XLATON */
  501.  
  502. /* values for flag in FS_FILEINFO */
  503. #define FI_RETRIEVE        0x00
  504. #define FI_SET            0x01
  505.  
  506. /* XLATOFF */
  507. int far pascal
  508. FS_FILEIO(
  509.     struct sffsi far *,        /* psffsi    */
  510.     struct sffsd far *,        /* psffsd    */
  511.     char far *,            /* cbCmdList    */
  512.     unsigned short,        /* pCmdLen    */
  513.     unsigned short far *,    /* poError    */
  514.     unsigned short        /* IOflag    */
  515. );
  516.  
  517. int far pascal
  518. FS_FILELOCKS(
  519.     struct sffsi far *,        /* psffsi    */
  520.     struct sffsd far *,        /* psffsd    */
  521.     void far *,            /* pUnLockRange */
  522.     void far *,            /* pLockRange    */
  523.     unsigned long,        /* timeout    */
  524.     unsigned long        /* flags    */
  525. );
  526.  
  527. int far pascal
  528. FS_FINDCLOSE(
  529.     struct fsfsi far *,        /* pfsfsi    */
  530.     struct fsfsd far *        /* pfsfsd    */
  531. );
  532. /* XLATON */
  533.  
  534. /* values for flag in FS_FindFirst, FS_FindFromName, FS_FindNext */
  535. #define        FF_NOPOS        0x00
  536. #define        FF_GETPOS        0X01
  537.  
  538.  
  539. /* XLATOFF */
  540. int far pascal
  541. FS_FINDFIRST(
  542.     struct cdfsi far *,        /* pcdfsi    */
  543.     struct cdfsd far *,        /* pcdfsd    */
  544.     char far *,            /* pName    */
  545.     unsigned short,        /* iCurDirEnd    */
  546.     unsigned short,        /* attr        */
  547.     struct fsfsi far *,        /* pfsfsi    */
  548.     struct fsfsd far *,        /* pfsfsd    */
  549.     char far *,            /* pData    */
  550.     unsigned short,        /* cbData    */
  551.     unsigned short far *,    /* pcMatch    */
  552.     unsigned short,        /* level    */
  553.     unsigned short        /* flags    */
  554. );
  555.  
  556. int far pascal
  557. FS_FINDFROMNAME(
  558.     struct fsfsi far *,        /* pfsfsi    */
  559.     struct fsfsd far *,        /* pfsfsd    */
  560.     char far *,            /* pData    */
  561.     unsigned short,        /* cbData    */
  562.     unsigned short far *,    /* pcMatch    */
  563.     unsigned short,        /* level    */
  564.     unsigned long,        /* position    */
  565.     char far *,            /* pName    */
  566.     unsigned short        /* flags    */
  567. );
  568.  
  569. int far pascal
  570. FS_FINDNEXT(
  571.     struct fsfsi far *,        /* pfsfsi    */
  572.     struct fsfsd far *,        /* pfsfsd    */
  573.     char far *,            /* pData    */
  574.     unsigned short,        /* cbData    */
  575.     unsigned short far *,    /* pcMatch    */
  576.     unsigned short,        /* level    */
  577.     unsigned short        /* flag        */
  578. );
  579.  
  580. int far pascal
  581. FS_FINDNOTIFYCLOSE(
  582.     unsigned short        /* handle    */
  583. );
  584.  
  585. int far pascal
  586. FS_FINDNOTIFYFIRST(
  587.     struct cdfsi far *,        /* pcdfsi    */
  588.     struct cdfsd far *,        /* pcdfsd    */
  589.     char far *,            /* pName    */
  590.     unsigned short,        /* iCurDirEnd    */
  591.     unsigned short,        /* attr        */
  592.     unsigned short far *,    /* pHandle    */
  593.     char far *,            /* pData    */
  594.     unsigned short,        /* cbData    */
  595.     unsigned short far *,    /* pcMatch    */
  596.     unsigned short,        /* level    */
  597.     unsigned long        /* timeout    */
  598. );
  599.  
  600. int far pascal
  601. FS_FINDNOTIFYNEXT(
  602.     unsigned short,        /* handle    */
  603.     char far *,            /* pData    */
  604.     unsigned short,        /* cbData    */
  605.     unsigned short far *,    /* pcMatch    */
  606.     unsigned short,        /* infolevel    */
  607.     unsigned long        /* timeout    */
  608. );
  609.  
  610. int far pascal
  611. FS_FLUSHBUF(
  612.     unsigned short,        /* hVPB        */
  613.     unsigned short        /* flag        */
  614. );
  615. /* XLATON */
  616.  
  617. /* values for flag in FS_FLUSH */
  618. #define FLUSH_RETAIN        0x00
  619. #define FLUSH_DISCARD        0x01
  620.  
  621. /* XLATOFF */
  622. int far pascal
  623. FS_FSCTL(
  624.     union argdat far *,        /* pArgdat    */
  625.     unsigned short,        /* iArgType    */
  626.     unsigned short,        /* func        */
  627.     char far *,            /* pParm    */
  628.     unsigned short,        /* lenParm    */
  629.     unsigned short far *,    /* plenParmOut    */
  630.     char far *,            /* pData    */
  631.     unsigned short,        /* lenData    */
  632.     unsigned short far *    /* plenDataOut    */
  633. );
  634. /* XLATON */
  635.  
  636. /* values for iArgType in FS_FSCTL */
  637. #define FSCTL_ARG_FILEINSTANCE    0x01
  638. #define FSCTL_ARG_CURDIR    0x02
  639. #define FSCTL_ARG_NULL        0x03
  640.  
  641. /* values for func in FS_FSCTL */
  642. #define FSCTL_FUNC_NONE        0x00
  643. #define FSCTL_FUNC_NEW_INFO    0x01
  644. #define FSCTL_FUNC_EASIZE    0x02
  645.  
  646. /* XLATOFF */
  647. int far pascal
  648. FS_FSINFO(
  649.     unsigned short,        /* flag        */
  650.     unsigned short,        /* hVPB        */
  651.     char far *,            /* pData    */
  652.     unsigned short,        /* cbData    */
  653.     unsigned short        /* level    */
  654. );
  655. /* XLATON */
  656.  
  657. /* values for flag in FS_FSINFO */
  658. #define INFO_RETREIVE        0x00
  659. #define INFO_SET        0x01
  660.  
  661. /* XLATOFF */
  662. int far pascal
  663. FS_INIT(
  664.     char far *,            /* szParm    */
  665.     unsigned long,        /* pDevHlp    */
  666.     unsigned long far *        /* pMiniFSD    */
  667. );
  668.  
  669. int far pascal
  670. FS_IOCTL(
  671.     struct sffsi far *,        /* psffsi    */
  672.     struct sffsd far *,        /* psffsd    */
  673.     unsigned short,        /* cat        */
  674.     unsigned short,        /* func        */
  675.     char far *,            /* pParm    */
  676.     unsigned short,        /* lenParm    */
  677.     unsigned far *,        /* pParmLenInOut */
  678.     char far *,            /* pData    */
  679.     unsigned short,        /* lenData    */
  680.     unsigned far *        /* pDataLenInOut */
  681. );
  682.  
  683. int far pascal
  684. FS_MKDIR(
  685.     struct cdfsi far *,        /* pcdfsi    */
  686.     struct cdfsd far *,        /* pcdfsd    */
  687.     char far *,            /* pName    */
  688.     unsigned short,        /* iCurDirEnd    */
  689.     char far *,            /* pEABuf    */
  690.     unsigned short        /* flags    */
  691. );
  692.  
  693. int far pascal
  694. FS_MOUNT(
  695.     unsigned short,        /* flag        */
  696.     struct vpfsi far *,        /* pvpfsi    */
  697.     struct vpfsd far *,        /* pvpfsd    */
  698.     unsigned short,        /* hVPB        */
  699.     char far *            /* pBoot    */
  700. );
  701. /* XLATON */
  702.  
  703. /* values for flag in FS_MOUNT */
  704. #define MOUNT_MOUNT        0x00
  705. #define MOUNT_VOL_REMOVED    0x01
  706. #define MOUNT_RELEASE        0x02
  707. #define MOUNT_ACCEPT        0x03
  708.  
  709. /* XLATOFF */
  710. int far pascal
  711. FS_MOVE(
  712.     struct cdfsi far *,        /* pcdfsi    */
  713.     struct cdfsd far *,        /* pcdfsd    */
  714.     char far *,            /* pSrc        */
  715.     unsigned short,        /* iSrcCurDirEnd*/
  716.     char far *,            /* pDst        */
  717.     unsigned short,        /* iDstCurDirEnd*/
  718.     unsigned short        /* flags    */
  719. );
  720.  
  721. int far pascal
  722. FS_NEWSIZE(
  723.     struct sffsi far *,        /* psffsi    */
  724.     struct sffsd far *,        /* psffsd    */
  725.     unsigned long,        /* len        */
  726.     unsigned short        /* IOflag    */
  727. );
  728.  
  729.  
  730. int far pascal
  731. FS_NMPIPE(
  732.     struct sffsi far *,        /* psffsi    */
  733.     struct sffsd far *,        /* psffsd    */
  734.     unsigned short,        /* OpType    */
  735.     union npoper far *,        /* pOpRec    */
  736.     char far *,            /* pData    */
  737.     char far *            /* pName    */
  738. );
  739. /* XLATON */
  740.  
  741. /* Values for OpType in FS_NMPIPE   */
  742.  
  743. #define        NMP_GetPHandState        0x21
  744. #define        NMP_SetPHandState        0x01
  745. #define        NMP_PipeQInfo        0x22
  746. #define        NMP_PeekPipe        0x23
  747. #define        NMP_ConnectPipe        0x24
  748. #define        NMP_DisconnectPipe        0x25
  749. #define        NMP_TransactPipe        0x26
  750. #define        NMP_READRAW            0x11
  751. #define        NMP_WRITERAW        0x31
  752. #define        NMP_WAITPIPE        0x53
  753. #define        NMP_CALLPIPE        0x54
  754. #define        NMP_QNmPipeSemState        0x58
  755.  
  756.  
  757. /* XLATOFF */
  758. int far pascal
  759. FS_OPENCREATE(
  760.     struct cdfsi far *,        /* pcdfsi        */
  761.     void far *,            /* if remote device
  762.                      struct devfsd far *
  763.                    else
  764.                      struct cdfsd far * */
  765.     char far *,            /* pName        */
  766.     unsigned short,        /* iCurDirEnd        */
  767.     struct sffsi far *,        /* psffsi        */
  768.     struct sffsd far *,        /* psffsd        */
  769.     unsigned long,        /* fhandflag/openmode    */
  770.     unsigned short,        /* openflag        */
  771.     unsigned short far *,    /* pAction        */
  772.     unsigned short,        /* attr            */
  773.     char far *,            /* pEABuf        */
  774.     unsigned short far *    /* pfgenFlag        */
  775. );
  776. /* XLATON */
  777.  
  778. #define FOC_NEEDEAS    0x1    /*there are need eas for this file */
  779.  
  780. /* XLATOFF */
  781. int far pascal
  782. FS_OPENPAGEFILE (
  783.     unsigned long far *pFlags,        /* pointer to Flags              */
  784.     unsigned long far *pcMaxReq,    /* max # of reqs packed in list   */
  785.     char far *           pName,        /* name of paging file          */
  786.     struct sffsi far * psffsi,        /* ptr to fs independent SFT      */
  787.     struct sffsd far * psffsd,        /* ptr to fs dependent SFT          */
  788.     unsigned short     OpenMode,    /* sharing, ...              */
  789.     unsigned short     OpenFlag,    /* open flag for action          */
  790.     unsigned short     Attr,        /* file attribute              */
  791.     unsigned long      Reserved        /* reserved, must be zero          */
  792. );
  793. /* XLATON */
  794.  
  795. /* values for *pFlags in FS_OPENPAGEFILE */
  796. #define PGIO_FIRSTOPEN 0x00000001   /* first open of page file          */
  797. #define PGIO_PADDR     0x00004000   /* physical addresses required    */
  798. #define PGIO_VADDR     0x00008000   /* 16:16 virtual address required */
  799.  
  800. /* XLATOFF */
  801. int far pascal
  802. FS_PATHINFO(
  803.     unsigned short,        /* flag        */
  804.     struct cdfsi far *,        /* pcdfsi    */
  805.     struct cdfsd far *,        /* pcdfsd    */
  806.     char far *,            /* pName    */
  807.     unsigned short,        /* iCurDirEnd    */
  808.     unsigned short,        /* level    */
  809.     char far *,            /* pData    */
  810.     unsigned short        /* cbData    */
  811. );
  812. /* XLATON */
  813.  
  814. /* values for flag in FS_PATHINFO */
  815. #define PI_RETRIEVE        0x00
  816. #define PI_SET            0x01
  817.  
  818. /* XLATOFF */
  819. int far pascal
  820. FS_PROCESSNAME(
  821.     char far *            /* pNameBuf    */
  822. );
  823.  
  824. int far pascal
  825. FS_READ(
  826.     struct sffsi far *,        /* psffsi    */
  827.     struct sffsd far *,        /* psffsd    */
  828.     char far *,            /* pData    */
  829.     unsigned short far *,    /* pLen        */
  830.     unsigned short        /* IOflag    */
  831. );
  832.  
  833. int far pascal
  834. FS_RMDIR(
  835.     struct cdfsi far *,        /* pcdfsi    */
  836.     struct cdfsd far *,        /* pcdfsd    */
  837.     char far *,            /* pName    */
  838.     unsigned short        /* iCurDirEnd    */
  839. );
  840.  
  841. int far pascal
  842. FS_SETSWAP(
  843.     struct sffsi far *,        /* psffsi    */
  844.     struct sffsd far *        /* psffsd    */
  845. );
  846.  
  847. int far pascal
  848. FS_SHUTDOWN(
  849.     unsigned short,        /* usType    */
  850.     unsigned long        /* ulReserved    */
  851. );
  852. /* XLATON */
  853.  
  854. /* values for usType in FS_SHUTDOWN */
  855. #define SD_BEGIN        0x00
  856. #define SD_COMPLETE        0x01
  857.  
  858. /* XLATOFF */
  859.  
  860. int far pascal
  861. FS_VERIFYUNCNAME(
  862.     unsigned short,        /* flag        */
  863.     char far *            /* pName    */
  864. );
  865.  
  866.  
  867. /* XLATON */
  868. /* values for flag in FS_PATHINFO */
  869. /* These values depend on code in GetUNCFSDFromPath */
  870. /* Don't change values without also changing code */
  871. #define VUN_PASS1         0x0000
  872. #define VUN_PASS2         0x0001
  873. #define ERROR_UNC_PATH_NOT_FOUND 0x0003      /* equals ERROR_PATH_NOT_FOUND */
  874.  
  875. /* XLATOFF */
  876.  
  877. int far pascal
  878. FS_WRITE(
  879.     struct sffsi far *,        /* psffsi    */
  880.     struct sffsd far *,        /* psffsd    */
  881.     char far *,            /* pData    */
  882.     unsigned short far *,    /* pLen        */
  883.     unsigned short        /* IOflag    */
  884. );
  885.  
  886. int far pascal
  887. MFS_CHGFILEPTR(
  888.     unsigned long,        /* offset    */
  889.     unsigned short        /* type        */
  890. );
  891.  
  892. int far pascal
  893. MFS_CLOSE(
  894.     void
  895. );
  896.  
  897.  
  898. int far pascal
  899. MFS_INIT(
  900.     void far *,            /* bootdata    */
  901.     char far *,            /* number io    */
  902.     long far *,            /* vectorripl    */
  903.     void far *,            /* bpb        */
  904.     unsigned long far *,    /* pMiniFSD    */
  905.     unsigned long far *        /* dump address */
  906. );
  907.  
  908. int far pascal
  909. MFS_OPEN(
  910.     char far *,            /* name        */
  911.     unsigned long far *        /* size        */
  912. );
  913.  
  914. int far pascal
  915. MFS_READ(
  916.     char far *,            /* data        */
  917.     unsigned short far *    /* length    */
  918. );
  919.  
  920. int far pascal
  921. MFS_TERM(
  922.     void
  923. );
  924. /* XLATON */
  925.