- 论坛徽章:
- 0
|
BOOL WriteSectors(BYTE bDrive, DWORD dwStartSector, WORD wSectors, LPBYTE lpSectBuff)
// 对磁盘扇区数据的写入
{
if (bDrive == 0) return 0;
char devName[] = "\\\\.\\A:";
devName[4] =bDrive; //把磁盘的盘符换成需要写入的盘符bDrive
HANDLE hDev = CreateFile(devName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hDev == INVALID_HANDLE_VALUE) return 0;
SetFilePointer(hDev, 512 * dwStartSector, 0, FILE_BEGIN);
DWORD dwCB;
BOOL bRet;
for(int j=0;j<wSectors;j++) //wSectors需要写入的扇区数
{
bRet = WriteFile(hDev, lpSectBuff, 512, &dwCB, NULL);
//write(hDev, lpSectBuff, sizeof(lpSectBuff));
printf("\n写入一个扇区!\r\n");
}
CloseHandle(hDev);
return bRet;
}
我想通过上面的代码实现按块写某个磁盘的指定扇区内容,程序没有问题,但是没有改变内容。
按块读取用相同的方法是可以成功的。 |
|