📄 writefloppy.cpp
字号:
#include <Windows.h>
#include <stdio.h>
bool writefile(char *file,int beginSector,int length)
{
unsigned char uchBootData[512];
HANDLE hf = ::CreateFile(file,
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hf == NULL)
{
printf("open the file error");
return false;
}
DWORD dwFileSizeHigh = 0;
DWORD dwFilesize = ::GetFileSize(hf, &dwFileSizeHigh);
if (dwFilesize <= 0) {
printf("get the file size error\n");
return false;
}
DWORD dwRead = 0;
if (!ReadFile(hf, uchBootData, dwFilesize, &dwRead, NULL)) {
int iErr;
char szError[128];
iErr = GetLastError();
::sprintf(szError, "文件读取错误!\n错误代码: %d\n", iErr);
printf(szError);
return false;
}
::CloseHandle(hf);
if(beginSector ==0)
{
uchBootData[510] = 0x55;
uchBootData[511] = 0xaa;
}
HANDLE hDevice = CreateFile( "\\\\.\\A:",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
printf(" open the floppy disk Failed !");
return false;
}
// setting the file pointer to the start of the
// sector we want to read .
//移动文件指针到需要读取位置
SetFilePointer( hDevice,
beginSector*512,
NULL,
FILE_BEGIN);
DWORD dwBytesWritten;
if (!::WriteFile(hDevice,
uchBootData,
512*length,
&dwBytesWritten,
NULL) )
{
int err;
char error[10];
err=GetLastError ();
itoa (err, error, 10);
printf("Writing sectors ...Failed \n");
return false;
}
// setting the file pointer to the start of the
// sector we want to read .
//移动文件指针到需要读取位置
SetFilePointer (hDevice,
beginSector*512,
NULL,
FILE_BEGIN);
void* buffer;
buffer = new BYTE[512];
DWORD dwBytesRead;
// reading sector(s) ...
//读数据
if (!ReadFile ( hDevice,
buffer,
512*length,
&dwBytesRead,
NULL) )
{
int err;
char error[10];
err=GetLastError ();
itoa (err, error, 10);
printf("Reading sectors ...Failed \n");
return true;
}
delete buffer;
//关闭
CloseHandle(hDevice);
printf("write the floppy ok!");
return true;
}
int main(int argc, char *argv[])
{
if(argc!=4)
{
printf("parameter error");
return 1;
}
writefile(argv[1],atoi(argv[2]),atoi(argv[3]));
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -