reactos/modules/rosapps/include/vfd/vfdapi.h

325 lines
6.4 KiB
C
Raw Normal View History

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