12#pragma message(__FILE__": Compiled as C++ for testing purpose.")
15#define WIN32_LEAN_AND_MEAN
18#if !defined(__REACTOS__) || defined(_MSC_VER)
19#pragma warning (push, 3)
23#if !defined(__REACTOS__) || defined(_MSC_VER)
34#ifndef IOCTL_DISK_GET_LENGTH_INFO
37#define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(\
38IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS)
50#define VFD_DEVICE_TEMPLATE "\\\\.\\" VFD_DEVICE_BASENAME "%u"
52#define VFD_DEVICE_TEMPLATE "\\\\.\\" VFD_DEVICE_BASENAME "%lu"
54#define VFD_VOLUME_TEMPLATE "\\\\.\\%c:"
56#define VFD_INSTALL_DIRECTORY "\\system32\\drivers\\"
62extern ULONG TraceLine = 0;
74#define VFD_LINK_CREATED 0
75#define VFD_LINK_REMOVED 1
87 (
"VfdBroadcastLink: invalid parameter"))
93 device_event = bRemoved ?
112 (
"VfdBroadcastLink: BroadcastSystemMessage - %s",
130#ifdef VFD_EMBED_DRIVER
135static DWORD VfdRestoreDriver(
138#define FUNC "VfdRestoreDriver"
155 S(VFD_DRIVER_NAME_ID),
S(VFD_DRIVER_TYPE_ID));
162 (
FUNC ": FindResource - %s",
174 (
FUNC ": SizeofResource - %s",
186 (
FUNC ": LoadResource - %s",
198 (
FUNC ": LockResource - %s",
213 (
FUNC ": CreateFile(%s) - %s",
224 (
FUNC ": CreateFile - %s",
246#define FUNC "VfdInstallDriver"
247 SC_HANDLE hScManager;
248 SC_HANDLE hService =
NULL;
249#ifndef VFD_EMBED_DRIVER
268 if (
len == 0 ||
len >
sizeof(system_dir)) {
270 (
FUNC ": %%SystemRoot%% is empty or too long.\n"));
275 inst_path = &system_dir[
len];
278 strcpy(full_file_path, system_dir);
283#ifdef VFD_EMBED_DRIVER
289 ret = VfdRestoreDriver(system_dir);
298 if (sFileName ==
NULL || *sFileName ==
'\0') {
309 (
FUNC ": GetModuleFileName - %s",
340 (
FUNC ": GetFullPathName(%s) - %s\n",
382 while (*inst_path ==
'\\') {
398 if (hScManager ==
NULL) {
402 (
FUNC ": OpenSCManager() - %s",
431 (
FUNC ": CreateService() - %s",
454#ifdef VFD_EMBED_DRIVER
472#define FUNC "VfdConfigDriver"
473 SC_HANDLE hScManager;
481 if (hScManager ==
NULL) {
485 (
FUNC ": OpenSCManager() - %s",
498 if (hService ==
NULL) {
502 (
FUNC ": OpenService(SERVICE_CHANGE_CONFIG) - %s",
526 (
FUNC ": ChangeServiceConfig() - %s",
560#define FUNC "VfdRemoveDriver"
561 SC_HANDLE hScManager;
578 if (hScManager ==
NULL) {
582 (
FUNC ": OpenSCManager() - %s",
595 if (hService ==
NULL) {
599 (
FUNC ": OpenService(DELETE) - %s",
611 (
FUNC ": DeleteService() - %s",
635#ifdef VFD_EMBED_DRIVER
651#define FUNC "VfdStartDriver"
652 SC_HANDLE hScManager;
667 if (hScManager ==
NULL) {
671 (
FUNC ": OpenSCManager() - %s",
689 if (hService ==
NULL) {
693 (
FUNC ": OpenService(SERVICE_START) - %s",
705 (
FUNC ": StartService() - %s",
720 (
FUNC ": QueryServiceStatus() - %s",
763 (
FUNC ": VfdOpenDevice(%d) - %s",
775 *pState =
stat.dwCurrentState;
805#define FUNC "VfdStopDriver"
806 SC_HANDLE hScManager;
822 if (hScManager ==
NULL) {
826 (
FUNC ": OpenSCManager() - %s",
844 if (hService ==
NULL) {
848 (
FUNC ": OpenService(SERVICE_STOP) - %s",
879 (
FUNC ": VfdOpenDevice(%d) - %s",
890 (
FUNC ": ControlService(SERVICE_CONTROL_STOP) - %s",
907 (
FUNC ": QueryServiceStatus() - %s",
927 *pState =
stat.dwCurrentState;
964#define FUNC "VfdGetDriverConfig"
965 SC_HANDLE hScManager;
983 if (hScManager ==
NULL) {
999 if (hService ==
NULL) {
1003 (
FUNC ": OpenService(SERVICE_QUERY_CONFIG) - %s",
1019 (
FUNC ": QueryServiceConfig() - %s",
1034 (
FUNC ": LocalAlloc(%lu) - %s\n",
1046 (
FUNC ": QueryServiceConfig() - %s",
1060 config->lpBinaryPathName + 4,
1063 else if (
config->lpBinaryPathName[0] ==
'\\' ||
1065 config->lpBinaryPathName[1] ==
':')) {
1069 config->lpBinaryPathName,
1081 (
FUNC ": %%SystemRoot%% is empty or too long.\n"));
1088 config->lpBinaryPathName);
1093 *pStart =
config->dwStartType;
1125#define FUNC "VfdGetDriverState"
1126 SC_HANDLE hScManager =
NULL;
1127 SC_HANDLE hService =
NULL;
1139 if (hScManager ==
NULL) {
1143 (
FUNC ": OpenSCManager() - %s",
1156 if (hService ==
NULL) {
1170 (
FUNC ": OpenService(SERVICE_QUERY_STATUS) - %s",
1185 (
FUNC ": QueryServiceStatus() - %s",
1192 *pState =
status.dwCurrentState;
1219#define FUNC "VfdOpenDevice"
1278 else if ((
version & ~0x80000000) !=
1309#define FUNC "VfdOpenImage"
1325 if (hDevice ==
NULL ||
1334 (
FUNC ": Invalid MediaType - %u\n", nMediaType));
1340 if (sFileName && *sFileName) {
1351 (
FUNC ": CreateFile(%s) - %s",
1370 (
FUNC ": %s is a zip compressed file",
1393 (
FUNC ": GetFileInformationByHandle - %s",
1401 if (
info.dwFileAttributes &
1405 (
FUNC ": file is compressed/encrypted"));
1424 (
FUNC ": GetFileSize - %s",
1434 if (image_buf ==
NULL) {
1438 (
FUNC ": LocalAlloc - %s",
1450 (
FUNC ": SetFilePointer - %s",
1464 (
FUNC ": ReadFile - %s",
1478 if (*sFileName ==
'\\' && *(sFileName + 1) ==
'\\') {
1492 sizeof(abspath), abspath, &file_part) == 0) {
1497 (
FUNC ": GetFullPathName(%s) - %s\n",
1504 sFileName = abspath;
1525 if (image_buf ==
NULL) {
1529 (
FUNC ": LocalAlloc - %s",
1543 (
FUNC ": Image is too small for the specified media type\n"));
1554 if (image_info ==
NULL) {
1558 (
FUNC ": LocalAlloc(%lu) - %s\n",
1570 "%s%s",
prefix, sFileName);
1584 image_info->
MediaFlags &= ~VFD_FLAG_WRITE_PROTECTED;
1588 (
FUNC ": Opening file \"%s\" (%lu bytes) %s %s %s %s\n",
1589 name_len ? image_info->
FileName :
"<RAM>",
1611 (
FUNC ": DeviceIoControl(IOCTL_VFD_OPEN_FILE) - %s",
1627 (
FUNC ": SetFilePointer - %s",
1639 (
FUNC ": WriteFile - %s",
1660 (
FUNC ": DeviceIoControl(IOCTL_VFD_RESET_MODIFY) - %s",
1707#define FUNC "VfdCloseImage"
1726 (
FUNC ": DeviceIoControl(FSCTL_LOCK_VOLUME) - %s",
1780 (
FUNC ": DeviceIoControl(FSCTL_DISMOUNT_VOLUME) - %s",
1800 (
FUNC ": DeviceIoControl(IOCTL_VFD_CLOSE_FILE) - %s",
1820 (
FUNC ": DeviceIoControl(FSCTL_UNLOCK_VOLUME) - %s",
1849#define FUNC "VfdGetImageInfo"
1857 if (image_info ==
NULL) {
1861 (
FUNC ": LocalAlloc(%lu) - %s\n",
1885 (
FUNC ": DeviceIoControl(IOCTL_VFD_QUERY_FILE) - %s",
1953#define FUNC "VfdGetMediaState"
1973 (
FUNC ": DeviceIoControl(IOCTL_DISK_IS_WRITABLE) - %s",
1989#define FUNC "VfdSetGlobalLink"
2005 (
FUNC ": Drive already has a drive letter %c\n", letter));
2013 (
FUNC ": Drive already has a drive letter %c\n", letter));
2023 (
FUNC ": Drive letter %c already used\n", cLetter));
2042 (
FUNC ": DeviceIoControl(IOCTL_VFD_SET_LINK) - %s",
2060 else if (!cLetter) {
2070 (
FUNC ": Drive does not have a drive letter\n"));
2089 (
FUNC ": DeviceIoControl(IOCTL_VFD_SET_LINK) - %s",
2119#define FUNC "VfdGetGlobalLinks"
2142 (
FUNC ": DeviceIoControl(IOCTL_VFD_QUERY_LINK) - %s",
2159#define FUNC "VfdSetLocalLink"
2161 CHAR dos_name[] =
"A:";
2176 (
FUNC ": Drive already has a drive letter %c\n", letter));
2184 (
FUNC ": Drive already has a drive letter %c\n", letter));
2194 (
FUNC ": Drive letter already used\n"));
2209 dos_name[0] = cLetter;
2215 (
FUNC ": DefineDosDevice(%s,%s) - %s",
2229 else if (!cLetter) {
2239 (
FUNC ": Drive letter is not assigned to this drive\n"));
2252#define DDD_FLAGS (DDD_REMOVE_DEFINITION | DDD_RAW_TARGET_PATH | DDD_EXACT_MATCH_ON_REMOVE)
2260 (
FUNC ": DefineDosDevice(%s,%s) - %s",
2286#define FUNC "VfdGetLocalLinks"
2289 CHAR dos_name[] =
"A:";
2328 logical >>= (dos_name[0] -
'A');
2336 if (logical & 0x01) {
2339 *pLetter = dos_name[0];
2345 (
FUNC ": QueryDosDevice(%s) - %s",
2364#define FUNC "VfdGetDeviceNumber"
2387 (
FUNC ": DeviceIoControl(IOCTL_VFD_QUERY_NUMBER) - %s",
2402#define FUNC "VfdGetDeviceName"
2426 (
FUNC ": DeviceIoControl(IOCTL_VFD_QUERY_NUMBER) - %s",
2436 (
FUNC ": WideCharToMultiByte - %s",
2451#define FUNC "VfdGetDriverVersion"
2474 (
FUNC ": DeviceIoControl(IOCTL_VFD_QUERY_VERSION) - %s",
2489#define FUNC "VfdWriteProtect"
2506 (
FUNC ": DeviceIoControl(IOCTL_VFD_SET_PROTECT) - %s",
2527#define FUNC "VfdFormatMedia"
2548 (
FUNC ": DeviceIoControl(IOCTL_DISK_GET_LENGTH_INFO) - %s",
2562 (
FUNC ": LocalAlloc - %s",
2583 (
FUNC ": SetFilePointer - %s",
2596 (
FUNC ": WriteFile - %s",
2615 (
FUNC ": DeviceIoControl(FSCTL_UNLOCK_VOLUME) - %s",
2634#define FUNC "VfdDismountVolume"
2653 (
FUNC ": DeviceIoControl(FSCTL_LOCK_VOLUME) - %s",
2676 (
FUNC ": DeviceIoControl(FSCTL_DISMOUNT_VOLUME) - %s",
2692#define FUNC "VfdSaveImage"
2717 (
FUNC ": DeviceIoControl(IOCTL_DISK_GET_LENGTH_INFO) - %s",
2731 (
FUNC ": LocalAlloc - %s",
2743 (
FUNC ": SetFilePointer - %s",
2756 (
FUNC ": ReadFile - %s",
2771 (
FUNC ": CreateFile - %s",
2783 (
FUNC ": SetFilePointer - %s",
2796 (
FUNC ": WriteFile - %s",
2808 (
FUNC ": SetEndOfFile - %s",
2827 (
FUNC ": DeviceIoControl(IOCTL_VFD_RESET_MODIFY) - %s",
2845 (
FUNC ": DeviceIoControl(FSCTL_UNLOCK_VOLUME) - %s",
2872#define FUNC "VfdCheckDriverFile"
2882 if (!sFileName || !*sFileName) {
2896 (
FUNC ": GetFileAttributes - %s\n",
2908 (
FUNC ": GetFileVersionInfoSize == 0\n"));
2919 (
FUNC ": LocalAlloc(%lu) - %s\n",
2934 result =
sizeof(fixedinfo);
2950 (
FUNC ": Invalid file type flags\n"));
2961 *pFileVersion |= 0x80000000;
2971 (
FUNC ": VerQueryValue(\"OriginalFileName\") - %s",
2979 (
FUNC ": Invalid original file name\n"));
2990 (
FUNC ": Invalid version values - file:%08x, prod: %08x\n",
3001 if (*sFileName ==
'\\' && *(sFileName + 1) ==
'\\') {
3005 (
FUNC ": Driver is located on a network drive\n"));
3014 root[0] = *sFileName;
3020 (
FUNC ": Driver is located on a network drive\n"));
3042#define FUNC "VfdCheckImageFile"
3046 if (!sFileName || !*sFileName || !pAttributes || !pImageSize || !pFileType) {
3059 (
FUNC ": GetFileAttributes(%s) - %s\n",
3079 (
FUNC ": CreateFile(%s) - %s\n",
3097 (
FUNC ": CreateFile(%s) - %s\n",
3133#define FUNC "VfdCreateImageFile"
3157 (
FUNC ": CreateFile - %s",
3165 if (image_buf ==
NULL) {
3169 (
FUNC ": LocalAlloc - %s",
3183 (
FUNC ": WriteFile - %s",
3208 CHAR drive_letter =
'A';
3210 if (logical_drives == 0) {
3214 while (logical_drives & 0x1) {
3215 logical_drives >>= 1;
3219 if (drive_letter >
'Z') {
3223 return drive_letter;
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
#define IOCTL_DISK_IS_WRITABLE
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
#define DBT_DEVTYP_VOLUME
#define BSF_NOTIMEOUTIFNOTHUNG
#define DBT_DEVICEARRIVAL
#define DBT_DEVICEREMOVECOMPLETE
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_FUNCTION
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define ERROR_INVALID_PARAMETER
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define _strnicmp(_String1, _String2, _MaxCount)
#define ERROR_INVALID_HANDLE
#define WideCharToMultiByte
#define ERROR_ACCESS_DENIED
static const WCHAR version[]
static void cleanup(void)
UINT WINAPI SetErrorMode(IN UINT uMode)
BOOL WINAPI GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static GLint image_size(GLint width, GLint height, GLenum format, GLenum type)
#define FILE_FLAG_NO_BUFFERING
#define ERROR_FILE_NOT_FOUND
#define sprintf(buf, format,...)
static unsigned int number
const char * dev_name(int device)
#define SEM_FAILCRITICALERRORS
#define FILE_ATTRIBUTE_READONLY
#define FSCTL_LOCK_VOLUME
#define FILE_ATTRIBUTE_COMPRESSED
#define FSCTL_UNLOCK_VOLUME
#define FILE_ATTRIBUTE_DIRECTORY
#define FSCTL_DISMOUNT_VOLUME
#define FILE_ATTRIBUTE_ENCRYPTED
static unsigned int file_size
BOOL WINAPI QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus)
BOOL WINAPI DeleteService(SC_HANDLE hService)
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
FD_TYPE file_type(FDSC **curr, char *fixed)
#define SHCNE_MEDIAINSERTED
#define SHCNE_MEDIAREMOVED
TCHAR file_path[MAX_PATH]
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Character const *const prefix
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define VFD_NOT_INSTALLED
#define INVALID_FILE_ATTRIBUTES
struct _GET_LENGTH_INFORMATION * PGET_LENGTH_INFORMATION
VFD_MEDIA WINAPI VfdLookupMedia(ULONG nSize)
ULONG WINAPI VfdGetMediaSize(VFD_MEDIA nMediaType)
DWORD WINAPI VfdSetLocalLink(HANDLE hDevice, CHAR cLetter)
DWORD WINAPI VfdGetDeviceName(HANDLE hDevice, PCHAR pName, ULONG nLength)
struct _GET_LENGTH_INFORMATION GET_LENGTH_INFORMATION
DWORD WINAPI VfdFormatMedia(HANDLE hDevice)
#define VFD_INSTALL_DIRECTORY
DWORD WINAPI VfdWriteProtect(HANDLE hDevice, BOOL bProtect)
#define VFD_VOLUME_TEMPLATE
DWORD WINAPI VfdStopDriver(PDWORD pState)
#define IOCTL_DISK_GET_LENGTH_INFO
DWORD WINAPI VfdSaveImage(HANDLE hDevice, PCSTR sFileName, BOOL bOverWrite, BOOL bTruncate)
static void VfdBroadcastLink(CHAR cLetter, BOOL bRemoved)
static const struct @1580 media_tbl[VFD_MEDIA_MAX]
static __inline void VfdNotify(WPARAM wParam, LPARAM lParam)
DWORD WINAPI VfdGetDriverState(PDWORD pState)
DWORD WINAPI VfdRemoveDriver()
CHAR WINAPI VfdChooseLetter()
DWORD WINAPI VfdGetGlobalLink(HANDLE hDevice, PCHAR pLetter)
DWORD WINAPI VfdGetImageInfo(HANDLE hDevice, PSTR sFileName, PVFD_DISKTYPE pDiskType, PVFD_MEDIA pMediaType, PVFD_FLAGS pMediaFlags, PVFD_FILETYPE pFileType, PULONG pImageSize)
DWORD WINAPI VfdCloseImage(HANDLE hDevice, BOOL bForce)
DWORD WINAPI VfdInstallDriver(PCSTR sFileName, DWORD nStart)
HANDLE WINAPI VfdOpenDevice(ULONG nTarget)
#define VFD_DEVICE_TEMPLATE
DWORD WINAPI VfdDismountVolume(HANDLE hDevice, BOOL bForce)
DWORD WINAPI VfdGetLocalLink(HANDLE hDevice, PCHAR pLetter)
DWORD WINAPI VfdGetMediaState(HANDLE hDevice)
DWORD WINAPI VfdCheckDriverFile(PCSTR sFileName, PULONG pFileVersion)
DWORD WINAPI VfdGetDriverVersion(HANDLE hDevice, PULONG pVersion)
PCSTR WINAPI VfdMediaTypeName(VFD_MEDIA nMediaType)
DWORD WINAPI VfdOpenImage(HANDLE hDevice, PCSTR sFileName, VFD_DISKTYPE nDiskType, VFD_MEDIA nMediaType, VFD_FLAGS nMediaFlags)
DWORD WINAPI VfdGetDriverConfig(PSTR sFileName, PDWORD pStart)
DWORD WINAPI VfdCheckImageFile(PCSTR sFileName, PDWORD pAttributes, PVFD_FILETYPE pFileType, PULONG pImageSize)
DWORD WINAPI VfdGetDeviceNumber(HANDLE hDevice, PULONG pNumber)
DWORD WINAPI VfdCreateImageFile(PCSTR sFileName, VFD_MEDIA nMediaType, VFD_FILETYPE nFileType, BOOL bOverWrite)
DWORD WINAPI VfdStartDriver(PDWORD pState)
DWORD WINAPI VfdConfigDriver(DWORD nStart)
DWORD WINAPI VfdSetGlobalLink(HANDLE hDevice, CHAR cLetter)
#define VFDTRACE(LEVEL, STRING)
DWORD FormatBufferFat(PUCHAR pBuffer, ULONG nSectors)
#define IOCTL_VFD_RESET_MODIFY
#define VFD_BYTE_TO_SECTOR(b)
#define IOCTL_VFD_QUERY_IMAGE
#define IOCTL_VFD_SET_LINK
#define IOCTL_VFD_CLOSE_IMAGE
#define IOCTL_VFD_SET_PROTECT
#define IOCTL_VFD_QUERY_LINK
#define IOCTL_VFD_QUERY_VERSION
struct _VFD_IMAGE_INFO * PVFD_IMAGE_INFO
#define VFD_DEVICE_BASENAME
#define IOCTL_VFD_CLEAR_PROTECT
#define IOCTL_VFD_QUERY_NAME
#define IOCTL_VFD_QUERY_NUMBER
#define VFD_SECTOR_TO_BYTE(s)
#define IOCTL_VFD_OPEN_IMAGE
PCSTR SystemMessage(DWORD nError)
DWORD ExtractZipImage(HANDLE hFile, PUCHAR *pBuffer, PULONG pLength)
DWORD ExtractZipInfo(HANDLE hFile, ULONG *pSize)
#define VFD_MAXIMUM_DEVICES
#define VFD_FLAG_WRITE_PROTECTED
#define VFD_VERSIONINFO_LANG
#define VFD_DRIVER_FILENAME
#define VFD_PRODUCT_MAJOR
#define VFD_PRODUCT_MINOR
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
#define GetWindowsDirectory
DWORD WINAPI GetLastError(void)
#define DDD_RAW_TARGET_PATH
#define GetFileAttributes
DWORD WINAPI GetLogicalDrives(void)
#define INVALID_FILE_SIZE
*nSize LPSTR _Inout_ LPDWORD nSize
#define GetModuleFileName
#define ERROR_ALREADY_ASSIGNED
#define ERROR_BAD_ENVIRONMENT
#define ERROR_SERVICE_NOT_ACTIVE
#define ERROR_FILE_ENCRYPTED
#define ERROR_SERVICE_DOES_NOT_EXIST
#define ERROR_NETWORK_ACCESS_DENIED
#define ERROR_REVISION_MISMATCH
#define QueryServiceConfig
#define SERVICE_QUERY_STATUS
#define SERVICE_ALL_ACCESS
#define SC_MANAGER_CREATE_SERVICE
#define SERVICE_NO_CHANGE
#define SERVICE_CHANGE_CONFIG
QUERY_SERVICE_CONFIGA * LPQUERY_SERVICE_CONFIG
#define ChangeServiceConfig
#define SERVICE_CONTROL_STOP
#define SERVICE_QUERY_CONFIG
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define BroadcastSystemMessage
#define GetFileVersionInfo
#define GetFileVersionInfoSize
#define SERVICE_KERNEL_DRIVER
#define SERVICE_ERROR_NORMAL