12 #pragma message(__FILE__": Compiled as C++ for testing purpose.") 15 #define WIN32_LEAN_AND_MEAN 19 #pragma warning (push, 3) 34 #ifndef IOCTL_DISK_GET_LENGTH_INFO 37 #define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(\ 38 IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS) 44 #endif // IOCTL_DISK_GET_LENGTH_INFO 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\\" 62 extern 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 135 static 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",
236 #endif // VFD_EMBED_DRIVER 246 #define FUNC "VfdInstallDriver" 247 SC_HANDLE hScManager;
248 SC_HANDLE hService =
NULL;
249 #ifndef VFD_EMBED_DRIVER 252 #endif // 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);
295 #else // VFD_EMBED_DRIVER 298 if (sFileName ==
NULL || *sFileName ==
'\0') {
309 (
FUNC ": GetModuleFileName - %s",
340 (
FUNC ": GetFullPathName(%s) - %s\n",
382 while (*inst_path ==
'\\') {
389 #endif // VFD_EMBED_DRIVER 398 if (hScManager ==
NULL) {
402 (
FUNC ": OpenSCManager() - %s",
431 (
FUNC ": CreateService() - %s",
454 #ifdef VFD_EMBED_DRIVER 459 #endif // 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 638 #endif // 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) ==
'\\') {
1482 prefix =
"\\??\\UNC";
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);
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);
2946 fixedinfo->dwFileType !=
VFT_DRV ||
2950 (
FUNC ": Invalid file type flags\n"));
2958 *pFileVersion = fixedinfo->dwFileVersionMS;
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",
2991 fixedinfo->dwFileVersionMS, fixedinfo->dwProductVersionMS));
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 & 0
x1) {
3215 logical_drives >>= 1;
3219 if (drive_letter >
'Z') {
3223 return drive_letter;
#define GetFileVersionInfo
#define ERROR_INVALID_PARAMETER
#define IOCTL_DISK_GET_LENGTH_INFO
DWORD WINAPI VfdDismountVolume(HANDLE hDevice, BOOL bForce)
#define ERROR_BAD_ENVIRONMENT
UINT WINAPI SetErrorMode(IN UINT uMode)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
CHAR WINAPI VfdChooseLetter()
#define FSCTL_UNLOCK_VOLUME
#define SERVICE_ERROR_NORMAL
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
DWORD WINAPI VfdGetDriverVersion(HANDLE hDevice, PULONG pVersion)
QUERY_SERVICE_CONFIGA * LPQUERY_SERVICE_CONFIG
DWORD WINAPI VfdGetDeviceNumber(HANDLE hDevice, PULONG pNumber)
static unsigned int file_size
#define WideCharToMultiByte
#define SEM_FAILCRITICALERRORS
char * strcat(char *DstString, const char *SrcString)
#define VFD_VOLUME_TEMPLATE
DWORD WINAPI VfdCloseImage(HANDLE hDevice, BOOL bForce)
ACPI_SIZE strlen(const char *String)
#define ERROR_INVALID_FUNCTION
#define VFD_DEVICE_TEMPLATE
#define IOCTL_VFD_SET_PROTECT
DWORD WINAPI VfdGetGlobalLink(HANDLE hDevice, PCHAR pLetter)
#define GetFileVersionInfoSize
static __inline void VfdNotify(WPARAM wParam, LPARAM lParam)
#define IOCTL_VFD_QUERY_NAME
char * strncpy(char *DstString, const char *SrcString, ACPI_SIZE Count)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
BOOL WINAPI SetEndOfFile(HANDLE hFile)
#define ERROR_INVALID_HANDLE
#define QueryServiceConfig
*nSize LPSTR _Inout_ LPDWORD nSize
#define VFD_SECTOR_TO_BYTE(s)
#define BSF_NOTIMEOUTIFNOTHUNG
#define VFD_PRODUCT_MAJOR
#define IOCTL_VFD_CLEAR_PROTECT
#define INVALID_HANDLE_VALUE
#define IOCTL_DISK_IS_WRITABLE
IN PVOID IN PVOID IN USHORT IN USHORT Size
DWORD ExtractZipInfo(HANDLE hFile, ULONG *pSize)
DWORD WINAPI GetLastError(VOID)
const char * dev_name(int device)
LPVOID WINAPI LockResource(HGLOBAL handle)
#define INVALID_FILE_SIZE
#define ERROR_REVISION_MISMATCH
#define SERVICE_ALL_ACCESS
BOOL WINAPI DeleteService(SC_HANDLE hService)
static const struct @1525 media_tbl[VFD_MEDIA_MAX]
#define ERROR_SERVICE_NOT_ACTIVE
DWORD WINAPI VfdCheckImageFile(PCSTR sFileName, PDWORD pAttributes, PVFD_FILETYPE pFileType, PULONG pImageSize)
#define IOCTL_VFD_QUERY_VERSION
#define SERVICE_NO_CHANGE
#define VFD_INSTALL_DIRECTORY
#define sprintf(buf, format,...)
DWORD WINAPI VfdCheckDriverFile(PCSTR sFileName, PULONG pFileVersion)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define ChangeServiceConfig
#define VFD_PRODUCT_MINOR
#define VFD_MAXIMUM_DEVICES
#define VFD_BYTE_TO_SECTOR(b)
DWORD WINAPI VfdGetDriverConfig(PSTR sFileName, PDWORD pStart)
GLenum const GLfloat * params
#define ERROR_ACCESS_DENIED
static size_t double number
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
static struct _test_info info[]
DWORD WINAPI VfdGetImageInfo(HANDLE hDevice, PSTR sFileName, PVFD_DISKTYPE pDiskType, PVFD_MEDIA pMediaType, PVFD_FLAGS pMediaFlags, PVFD_FILETYPE pFileType, PULONG pImageSize)
GLenum GLuint GLenum GLsizei length
#define DBT_DEVICEREMOVECOMPLETE
struct _VFD_IMAGE_INFO * PVFD_IMAGE_INFO
#define VFD_SECTOR_ALIGN_MASK
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
#define ERROR_FILE_ENCRYPTED
static const WCHAR version[]
#define IOCTL_VFD_SET_LINK
#define SERVICE_QUERY_STATUS
DWORD WINAPI VfdGetDeviceName(HANDLE hDevice, PCHAR pName, ULONG nLength)
#define SC_MANAGER_CREATE_SERVICE
#define ERROR_FILE_NOT_FOUND
#define IOCTL_VFD_QUERY_NUMBER
DWORD FormatBufferFat(PUCHAR pBuffer, ULONG nSectors)
#define VFD_NOT_INSTALLED
#define FILE_ATTRIBUTE_DIRECTORY
#define FSCTL_DISMOUNT_VOLUME
#define VFD_FLAG_WRITE_PROTECTED
#define IOCTL_VFD_QUERY_IMAGE
#define SHCNE_MEDIAREMOVED
BOOL WINAPI GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
DWORD WINAPI VfdFormatMedia(HANDLE hDevice)
#define FILE_FLAG_NO_BUFFERING
PCSTR SystemMessage(DWORD nError)
#define IOCTL_VFD_QUERY_LINK
#define SERVICE_CHANGE_CONFIG
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
DWORD WINAPI VfdGetMediaState(HANDLE hDevice)
#define FILE_ATTRIBUTE_READONLY
DWORD WINAPI VfdSaveImage(HANDLE hDevice, PCSTR sFileName, BOOL bOverWrite, BOOL bTruncate)
BOOL WINAPI QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus)
#define _strnicmp(_String1, _String2, _MaxCount)
#define VFDTRACE(LEVEL, STRING)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
#define VFD_VERSIONINFO_LANG
#define GetModuleFileName
#define VFD_DRIVER_FILENAME
FD_TYPE file_type(FDSC **curr, char *fixed)
DWORD ExtractZipImage(HANDLE hFile, PUCHAR *pBuffer, PULONG pLength)
#define INVALID_FILE_ATTRIBUTES
#define DBT_DEVTYP_VOLUME
#define FILE_ATTRIBUTE_COMPRESSED
ULONG WINAPI VfdGetMediaSize(VFD_MEDIA nMediaType)
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
#define IOCTL_VFD_OPEN_IMAGE
DWORD WINAPI VfdConfigDriver(DWORD nStart)
#define ERROR_ALREADY_ASSIGNED
DWORD WINAPI VfdStopDriver(PDWORD pState)
#define GetFileAttributes
VFD_MEDIA WINAPI VfdLookupMedia(ULONG nSize)
DWORD WINAPI GetLogicalDrives(VOID)
DWORD WINAPI VfdOpenImage(HANDLE hDevice, PCSTR sFileName, VFD_DISKTYPE nDiskType, VFD_MEDIA nMediaType, VFD_FLAGS nMediaFlags)
long WINAPI BroadcastSystemMessage(_In_ DWORD, _Inout_opt_ LPDWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_CRTIMP int __cdecl stat(const char *_Filename, struct stat *_Stat)
DWORD WINAPI VfdWriteProtect(HANDLE hDevice, BOOL bProtect)
DWORD WINAPI VfdCreateImageFile(PCSTR sFileName, VFD_MEDIA nMediaType, VFD_FILETYPE nFileType, BOOL bOverWrite)
#define FILE_ATTRIBUTE_ENCRYPTED
DWORD WINAPI VfdSetLocalLink(HANDLE hDevice, CHAR cLetter)
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 DDD_RAW_TARGET_PATH
#define ERROR_NETWORK_ACCESS_DENIED
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
DWORD WINAPI VfdRemoveDriver()
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN CreateFile
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define IOCTL_VFD_CLOSE_IMAGE
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define DBT_DEVICEARRIVAL
DWORD WINAPI VfdStartDriver(PDWORD pState)
#define ReadFile(a, b, c, d, e)
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
#define IOCTL_VFD_RESET_MODIFY
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
#define ERROR_SERVICE_DOES_NOT_EXIST
DWORD WINAPI VfdInstallDriver(PCSTR sFileName, DWORD nStart)
#define SHCNE_MEDIAINSERTED
#define FSCTL_LOCK_VOLUME
char * strcpy(char *DstString, const char *SrcString)
struct _GET_LENGTH_INFORMATION GET_LENGTH_INFORMATION
int strcmp(const char *String1, const char *String2)
char * cleanup(char *str)
#define SERVICE_CONTROL_STOP
PCSTR WINAPI VfdMediaTypeName(VFD_MEDIA nMediaType)
DWORD WINAPI VfdGetLocalLink(HANDLE hDevice, PCHAR pLetter)
#define SERVICE_QUERY_CONFIG
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
static void VfdBroadcastLink(CHAR cLetter, BOOL bRemoved)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define GetWindowsDirectory
struct _GET_LENGTH_INFORMATION * PGET_LENGTH_INFORMATION
static SERVICE_STATUS status
DWORD WINAPI VfdSetGlobalLink(HANDLE hDevice, CHAR cLetter)
DWORD WINAPI VfdGetDriverState(PDWORD pState)
HANDLE WINAPI VfdOpenDevice(ULONG nTarget)
#define VFD_DEVICE_BASENAME
TCHAR file_path[MAX_PATH]
static GLint image_size(GLint width, GLint height, GLenum format, GLenum type)
#define SERVICE_KERNEL_DRIVER
#define ERROR_INSUFFICIENT_BUFFER