Code:
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
/* NOTE: This program is for NT/2000/XP only. */
VOID WinError(LPCTSTR szMsg)
{
_tprintf(_T("%s\nError Code: %d\n"), szMsg, GetLastError());
exit(GetLastError());
}
BOOL DoesFileExist(LPCTSTR szFile)
{
return (GetFileAttributes(szFile) != INVALID_FILE_ATTRIBUTES);
}
INT CreateImageFromFloppy(LPCTSTR szFile)
{
HANDLE hDrive, hFile;
BOOL bRet;
DWORD dwRead, dwWritten;
BYTE buf[16384];
SetLastError(ERROR_SUCCESS);
hDrive = CreateFile(TEXT("\\\\.\\A:"), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL);
if (hDrive != INVALID_HANDLE_VALUE)
{
hFile = CreateFile(szFile, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
do
{
bRet = ReadFile(hDrive, buf, sizeof(buf), &dwRead, NULL);
if (!bRet)
{
WinError(TEXT("Failed while reading from disk."));
break;
}
bRet = WriteFile(hFile, buf, dwRead, &dwWritten, NULL);
if (!bRet)
{
WinError(TEXT("Failed while writing to image file."));
break;
}
} while (dwRead != 0);
CloseHandle(hFile);
}
else
{
WinError(TEXT("Failed to open image file."));
}
CloseHandle(hDrive);
}
else
{
WinError(TEXT("Failed to open floppy drive."));
}
return GetLastError();
}
INT CreateFloppyFromImage(LPCTSTR szFile)
{
HANDLE hDrive, hFile;
BOOL bRet;
DWORD dwRead, dwWritten;
BYTE buf[16384];
SetLastError(ERROR_SUCCESS);
hDrive = CreateFile(TEXT("\\\\.\\A:"), GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL);
if (hDrive != INVALID_HANDLE_VALUE)
{
hFile = CreateFile(szFile, GENERIC_READ, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
do
{
bRet = ReadFile(hFile, buf, sizeof(buf), &dwRead, NULL);
if (!bRet)
{
WinError(TEXT("Failed while reading from image file."));
break;
}
bRet = WriteFile(hDrive, buf, dwRead, &dwWritten, NULL);
if (!bRet)
{
WinError(TEXT("Failed while writing to disk."));
break;
}
} while (dwRead != 0);
CloseHandle(hFile);
}
else
{
WinError(TEXT("Failed to open image file."));
}
CloseHandle(hDrive);
}
else
{
WinError(TEXT("Failed to open floppy drive."));
}
return GetLastError();
}
int main(int argc, char * argv[])
{
if (!DoesFileExist(TEXT("floppy.img")))
{
printf("Please insert source floppy and press ENTER...\n");
getchar();
CreateImageFromFloppy(TEXT("floppy.img"));
}
printf("Please insert target floppy and press ENTER...\n");
getchar();
CreateFloppyFromImage(TEXT("floppy.img"));
printf("Press ENTER to continue...\n");
getchar();
return 0;
}
P.S What has this got to do with networking anyway?