⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 writefloppy.cpp

📁 write the floppy disk logical parter
💻 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 + -