reactos/modules/rosapps/include/vfd/vfdapi.h
Pierre Schweitzer 25c7e1a8d0
[VFD] Import the VFD project (Virtual Floppy Drive) which allows creating virtual
floppy drives in ReactOS and mount images on them.
Only the cmd got imported. The GUI interface may come later on.
Note that, as for vcdrom, the driver is left disabled and you need to explicitely
start it through vfd command line interface.

CORE-14090
2017-12-16 21:48:34 +01:00

325 lines
6.4 KiB
C

/*
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_