--- /dev/null
+/*
+ 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_