/* vfdapi.h Virtual Floppy Drive for Windows Driver control library API header Copyright (C) 2003-2008 Ken Kato */ #ifndef _VFDAPI_H_ #define _VFDAPI_H_ #ifdef __cplusplus extern "C" { #endif // __cplusplus // // custom SERVICE STATE value returned by VfdGetDriverState // #define VFD_NOT_INSTALLED 0xffffffff // // VFD operation code for VFD notification message // typedef enum _VFD_OPERATION { VFD_OPERATION_NONE, // No operation VFD_OPERATION_INSTALL, // The driver was installed VFD_OPERATION_CONFIG, // The driver config was changed VFD_OPERATION_REMOVE, // The driver was removed VFD_OPERATION_START, // The driver was started VFD_OPERATION_STOP, // The driver was stopped VFD_OPERATION_OPEN, // An image was opened VFD_OPERATION_SAVE, // An image was saved VFD_OPERATION_CLOSE, // An image was closed VFD_OPERATION_SETLINK, // A drive letter was created VFD_OPERATION_DELLINK, // A drive letter was removed VFD_OPERATION_PROTECT, // Write protect state was changed VFD_OPERATION_SHELL, // Shell extension was installed/removed VFD_OPERATION_MAX // Maximum value place holder } VFD_OPERATION, *PVFD_OPERATION; //============================== // Driver management functions //============================== // Install the driver DWORD WINAPI VfdInstallDriver( PCSTR sFileName, DWORD nStart); // Uninstall the driver DWORD WINAPI VfdRemoveDriver(); // Configure the driver DWORD WINAPI VfdConfigDriver( DWORD nStart); // Start the driver DWORD WINAPI VfdStartDriver( PDWORD pState); // Stop the driver DWORD WINAPI VfdStopDriver( PDWORD pState); // Get current driver config information DWORD WINAPI VfdGetDriverConfig( PSTR sFileName, PDWORD pStart); // Get current driver state DWORD WINAPI VfdGetDriverState( PDWORD pState); //============================== // Device control functions //============================== // Open a VFD device HANDLE WINAPI VfdOpenDevice( ULONG nTarget); // Get the device number DWORD WINAPI VfdGetDeviceNumber( HANDLE hDevice, PULONG pNumber); // Get the device name DWORD WINAPI VfdGetDeviceName( HANDLE hDevice, PCHAR pName, ULONG nLength); // Get the driver version DWORD WINAPI VfdGetDriverVersion( HANDLE hDevice, PULONG pVersion); //============================== // image functions //============================== // Open a virtual floppy image DWORD WINAPI VfdOpenImage( HANDLE hDevice, PCSTR sFileName, VFD_DISKTYPE nDiskType, VFD_MEDIA nMediaType, VFD_FLAGS nMediaFlags); // Close the current virtual floppy image DWORD WINAPI VfdCloseImage( HANDLE hDevice, BOOL bForce); // Get the current image information DWORD WINAPI VfdGetImageInfo( HANDLE hDevice, PSTR sFileName, PVFD_DISKTYPE pDiskType, PVFD_MEDIA pMediaType, PVFD_FLAGS pMediaFlags, PVFD_FILETYPE pFileType, PULONG pImageSize); // Save the current image into a file DWORD WINAPI VfdSaveImage( HANDLE hDevice, PCSTR sFileName, BOOL bOverWrite, BOOL bTruncate); // Format the current virtual media DWORD WINAPI VfdFormatMedia( HANDLE hDevice); // Get the current media state (opened / write protected) DWORD WINAPI VfdGetMediaState( HANDLE hDevice); // Set write protect state DWORD WINAPI VfdWriteProtect( HANDLE hDevice, BOOL bProtect); // Dismount the volume (should be called before Save, Format) DWORD WINAPI VfdDismountVolume( HANDLE hDevice, BOOL bForce); //============================== // Drive letter functions //============================== // Assign or remove a persistent drive letter DWORD WINAPI VfdSetGlobalLink( HANDLE hDevice, CHAR cLetter); // Get the current persistent drive letter DWORD WINAPI VfdGetGlobalLink( HANDLE hDevice, PCHAR pLetter); // Assign or remove an ephemeral drive letter DWORD WINAPI VfdSetLocalLink( HANDLE hDevice, CHAR cLetter); // Get the first ephemeral drive letter DWORD WINAPI VfdGetLocalLink( HANDLE hDevice, PCHAR pLetter); // Choose the first available drive letter CHAR WINAPI VfdChooseLetter(); //============================== // utility functions //============================== // Check running platform BOOL WINAPI VfdIsValidPlatform(); // Get VFD notification message value UINT WINAPI VfdGetNotifyMessage(); // Check if specified file is a valid VFD driver DWORD WINAPI VfdCheckDriverFile( PCSTR sFileName, PULONG pFileVersion); // Check if specified path is a valid image file DWORD WINAPI VfdCheckImageFile( PCSTR sFileName, PDWORD pAttributes, PVFD_FILETYPE pFileType, PULONG pImageSize); // Create a formatted new image file DWORD WINAPI VfdCreateImageFile( PCSTR sFileName, VFD_MEDIA nMediaType, VFD_FILETYPE nFileType, BOOL bOverWrite); // Lookup the largest media to fit in a size VFD_MEDIA WINAPI VfdLookupMedia( ULONG nSize); // Get media size (in bytes) of a media type ULONG WINAPI VfdGetMediaSize( VFD_MEDIA nMediaType); // Get media type name PCSTR WINAPI VfdMediaTypeName( VFD_MEDIA nMediaType); // Make a file description text void WINAPI VfdMakeFileDesc( PSTR pBuffer, ULONG nBufSize, VFD_FILETYPE nFileType, ULONG nFileSize, DWORD nFileAttr); //============================== // Shell Extension functions //============================== // install the shell extension DWORD WINAPI VfdRegisterHandlers(); // uninstall the shell extension DWORD WINAPI VfdUnregisterHandlers(); // check if the shell extension is installed DWORD WINAPI VfdCheckHandlers(); //============================== // GUI utility functions //============================== // open an existing image file DWORD WINAPI VfdGuiOpen( HWND hParent, // parent window ULONG nDevice); // device number // Save the current image DWORD WINAPI VfdGuiSave( HWND hParent, // parent window ULONG nDevice); // device number // close the current image DWORD WINAPI VfdGuiClose( HWND hParent, // parent window ULONG nDevice); // device number // format the current media DWORD WINAPI VfdGuiFormat( HWND hParent, // parent window ULONG nDevice); // device number // display a tooltip window void WINAPI VfdToolTip( HWND hParent, // parent window PCSTR sText, // tooltip text int pos_x, // position x int pos_y, // position y BOOL stick); // stick (remain until losing the focus) or // non-stick (remain until the mouse leaves) // Show image information tooltip void WINAPI VfdImageTip( HWND hParent, ULONG nDevice); #ifdef __cplusplus } #endif // __cplusplus #endif // _VFDAPI_H_