XFSAPI 1.0: DLL Interface for XFS 1.85 Robert Juhasz (robertj@lwfws1.uni-paderborn.de) September 5, 1994 CHANGES * MOUNTOPT * XfsMountPrinter CHANGES: * XFSINFO struct * Login & Logout The XFSAPI consists of two DLL's: * XFSLIB: The API, allows mounting/unmounting etc. * XFSFMX: The User Interface (some dialogs) for the FMX which can also be used by own applications. Files: * XFSAPI.PAS: Borland Pascal 7.0 unit * XFSAPI.H: Borland C++ header * XFSLIB.DLL: The XFSAPI * XFSFMX.DLL: The File Manager Extension * XFSLIB.LIB: Import library * XFSFMX.LIB: Import library * USEAPI.PAS: Borland Pascal example * USEAPI.C: Borland C++ example * USEAPI.PRJ: Borland C++ project file for USEAPI Maybe I should not talk about, but XFSAPI needs a CPU >= 80386. 1. XFSLIB.DLL ============= /* * Check for XFS */ function XfsInstalled: Bool; BOOL WINAPI XfsInstalled(VOID); /* * Mount a drive * Return: < 0: Network errors (see XFSAPI.H or XFSAPI.PAS) * = 0: OK * > 0: Redirector errors * Eg.: * XfsMountDrive("F:", "speedy", "/usr/share/dos", &opts ); * * NOTE: The 'hosts' file must be placed in the same directory as * XFSFMX.DLL and XFSLIB.DLL * You can also use dotted IP addresses instead host names: * XfsMountDrive("F:", "131.234.218.1", ...); */ function XfsMountDrive(localdrive, host, filesystem: PChar; var options: TMOUNTOPT): Integer; int WINAPI XfsMountDrive(LPSTR localdrive, LPSTR host, LPSTR filesystem, LPMOUNTOPT options); /* * Mount a printer * Return: < 0: Network errors * = 0: OK * > 0: Redirector errors * Eg.: * XfsMountPrinter("LPT1:", "speedy", "laser", options); */ function XfsMountPrinter(localdrive, host, printer: PChar; var options:TMOUNTOPT): Integer; int WINAPI XfsMountPrinter(LPSTR localdrive, LPSTR host, LPSTR printer, LPMOUNTOPT options); /* * Unmount a drive/device * Return: < 0: Network errors * = 0: OK * > 0: Redirector errors * Eg.: * XfsUmount("F:"); or XfsUmount("LPT1:"); */ function XfsUmount(localdrive: PChar ): Integer; int WINAPI XfsUmount(LPSTR localdrive); /* * Flush printer job avoiding the timeout * Return: none * * Eg.: * XfsFlush("LPT1:"); */ function XfsFlush(printer: PChar ): Integer; int WINAPI XfsFlush(LPSTR printer); /* * PCNFSD Login. `host' is the pcnfsd server * Return: < 0: Network errors * = 0: OK */ function XfsLogin( localdrive, host, name, password: PChar ): Integer; int WINAPI XfsLogin(LPSTR localdrive, LPSTR host, LPSTR name, LPSTR password); /* * PCNFSD Logout */ procedure XfsLogout( localdrive: PChar); VOID WINAPI XfsLogout( LPSTR localdrive ); /* * Get XFS info */ procedure XfsNetStat( var info: TXFSINFO ); VOID WINAPI XfsNetStat( LPXFSINFO info); /* * Umask [similar to clib's umask()]: set the file creation mask * Return: old umask */ function XfsUmask( mask: Word): Word; WORD WINAPI XfsUmask( WORD mask); /* * Enum redirections * Return: = 0: OK * <> 0: no redirections * Eg.: * char dev[127], res[127]; * int i = 0; * while( WGetRedirection(i++, dev, res) == 0 ) * printf("%s %s\n", dev, res); * * Note: You can enumerate all redirections AND unmount them: * * while( WGetRedirection(0, dev, res) == 0) XfsUnmount(dev); * === (it's realy zero!) */ function WGetRedirection( index: Word; device, resource: PChar ): Word; UINT WINAPI WGetRedirection( UINT index, LPSTR device, LPSTR resource ); 2. XFSFMX.DLL ============= /* * Init the FileManager Extension (FMX) * Return <> 0: OK */ function InitFMX: Longint; LONG WINAPI InitFMX( VOID ); /* * Make FMX call * Eg.: * // Popup the Mount Dialog with `Handle' as Parent Window * XfsFMXCall( Handle, CM_MOUNT); * * See XFSAPI.H or XFSAPI.PAS for valid calls. * NOTE: This functions returns always zero. It will return success * or error codes after I have determined, that the FileManager * isn't worry about. The FMX API consists of calls to "FMExtensionProc" * only (see your SDK manual, section File Manager Extensions). */ function XfsFMXCall( Handle: HWnd; call: Word): Longint; LONG WINAPI XfsFMXCall( HWND Handle, WORD call); /* * Unload the extension. It saves the history and does clean-ups. * * Note: The call of this function is required! I can't include * it in WEP. */ procedure DoneFMX; VOID WINAPI DoneFMX( VOID );