mirror of
https://github.com/reactos/reactos.git
synced 2024-09-06 10:52:52 +00:00
![Pierre Schweitzer](/assets/img/avatar_default.png)
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
186 lines
3.6 KiB
C
186 lines
3.6 KiB
C
/*
|
|
vfdlib.h
|
|
|
|
Virtual Floppy Drive for Windows
|
|
Driver control library local header
|
|
|
|
Copyright (C) 2003-2005 Ken Kato
|
|
*/
|
|
|
|
#ifndef _VFDLIB_H_
|
|
#define _VFDLIB_H_
|
|
|
|
#define VFD_LIBRARY_FILENAME "vfd.dll"
|
|
|
|
#ifdef VFD_EMBED_DRIVER
|
|
#define VFD_DRIVER_NAME_ID VFD_DRIVER
|
|
#define VFD_DRIVER_TYPE_ID BINARY
|
|
#endif
|
|
|
|
#ifndef RC_INVOKED
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
//
|
|
// DLL instance handle
|
|
//
|
|
extern HINSTANCE g_hDllModule;
|
|
|
|
//
|
|
// Reference count for the DLL
|
|
//
|
|
extern UINT g_cDllRefCnt;
|
|
|
|
//
|
|
// VFD notification message value
|
|
//
|
|
extern UINT g_nNotifyMsg;
|
|
|
|
//
|
|
// VFD notification message register string
|
|
//
|
|
#define VFD_NOTIFY_MESSAGE "VfdNotifyMessage"
|
|
|
|
//
|
|
// Message box title string
|
|
//
|
|
#define VFD_MSGBOX_TITLE "Virtual Floppy Drive"
|
|
|
|
//
|
|
// shell extention string constants
|
|
//
|
|
#define VFDEXT_DESCRIPTION "VFD shell extension"
|
|
#define VFDEXT_MENU_REGKEY "Drive\\shellex\\ContextMenuHandlers\\VFD"
|
|
#define VFDEXT_DND_REGKEY "Drive\\shellex\\DragDropHandlers\\VFD"
|
|
#define VFDEXT_PROP_REGKEY "Drive\\shellex\\PropertySheetHandlers\\VFD"
|
|
#define VFDEXT_INFO_REGKEY "Drive\\shellex\\{00021500-0000-0000-C000-000000000046}"
|
|
|
|
//=====================================
|
|
// Image handling functions
|
|
//=====================================
|
|
|
|
// Format a buffer with FAT12
|
|
|
|
DWORD FormatBufferFat(
|
|
PUCHAR pBuffer,
|
|
ULONG nSectors);
|
|
|
|
// Extract image information from a zip compressed file
|
|
|
|
DWORD ExtractZipInfo(
|
|
HANDLE hFile,
|
|
ULONG *pSize);
|
|
|
|
// Extract original image from a zip compressed file
|
|
|
|
DWORD ExtractZipImage(
|
|
HANDLE hFile,
|
|
PUCHAR *pBuffer,
|
|
PULONG pLength);
|
|
|
|
//=====================================
|
|
// GUI utility functions
|
|
//=====================================
|
|
|
|
typedef struct _SAVE_PARAM {
|
|
HANDLE hDevice;
|
|
VFD_DISKTYPE DiskType;
|
|
VFD_MEDIA MediaType;
|
|
VFD_FLAGS MediaFlags;
|
|
VFD_FILETYPE FileType;
|
|
ULONG ImageSize;
|
|
PSTR ImageName;
|
|
} SAVE_PARAM, PSAVE_PARAM;
|
|
|
|
typedef const SAVE_PARAM CSAVE_PARAM, *PCSAVE_PARAM;
|
|
|
|
DWORD GuiSaveParam(
|
|
HWND hParent,
|
|
PCSAVE_PARAM pParam);
|
|
|
|
void ShowContextMenu(
|
|
HWND hDlg,
|
|
HWND hCtl,
|
|
LPARAM lParam);
|
|
|
|
void ShowHelpWindow(
|
|
HWND hDlg,
|
|
UINT nCtl);
|
|
|
|
//
|
|
// Set a message to a control window
|
|
//
|
|
void SetControlText(
|
|
HWND hWnd,
|
|
UINT nCtrl,
|
|
DWORD nMsg);
|
|
|
|
//==============================
|
|
// Message extract functions
|
|
//==============================
|
|
|
|
// Return a system error message
|
|
|
|
PCSTR SystemMessage(
|
|
DWORD nError);
|
|
|
|
// Return a message from this DLL module
|
|
|
|
PSTR ModuleMessage(
|
|
DWORD nFormat, ...);
|
|
|
|
//==============================
|
|
// utility macros
|
|
//==============================
|
|
|
|
#define IS_WINDOWS_NT() ((GetVersion() & 0xff) < 5)
|
|
|
|
//==============================
|
|
// Debug functions
|
|
//==============================
|
|
|
|
#ifdef _DEBUG
|
|
extern ULONG TraceFlags;
|
|
#ifndef __REACTOS__
|
|
extern PCHAR TraceFile;
|
|
#else
|
|
extern CHAR const * TraceFile;
|
|
#endif
|
|
extern ULONG TraceLine;
|
|
|
|
#define VFDTRACE(LEVEL,STRING) \
|
|
if ((TraceFlags & (LEVEL)) == (LEVEL)) { \
|
|
TraceFile = __FILE__; \
|
|
TraceLine = __LINE__; \
|
|
DebugTrace STRING; \
|
|
}
|
|
|
|
void DebugTrace(PCSTR sFormat, ...);
|
|
|
|
#else // _DEBUG
|
|
#define VFDTRACE(LEVEL,STRING)
|
|
#endif // _DEBUG
|
|
|
|
//
|
|
// supplement old system headers
|
|
//
|
|
#ifndef INVALID_FILE_ATTRIBUTES
|
|
#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
|
|
#endif // INVALID_FILE_ATTRIBUTES
|
|
|
|
#if defined(_INC_COMMDLG) && !defined(OPENFILENAME_SIZE_VERSION_400)
|
|
// Pre Win2K system header is used
|
|
// OPENFILENAME is defined without extra fields.
|
|
#define OPENFILENAME_SIZE_VERSION_400 sizeof(OPENFILENAME)
|
|
#endif // __INC_COMMDLG && !OPENFILENAME_SIZE_VERSION_400
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|
|
#endif // RC_INVOKED
|
|
|
|
#endif // _VFDLIB_H_
|