我在 C 中使用WriteFile
功能时遇到了一些问题。
我打开卷T的句柄:CreateFile
:
HANDLE hvol = CreateFile("\\\\.\\T:", GENERIC_READ | GENERIC_WRITE, 3,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
使用SetFilePointer
:
DWORD offset = SetFilePointer(hvol, bps + datarunOffset[0], NULL, FILE_BEGIN);
并写道:
bool wsuccess = WriteFile(hvol, filearray, secfilesize, &byteswritten, NULL);
其中filearray
是小文件的字节值数组,而secfilesize
是filearray
中的元素数,四舍五入到磁盘扇区的倍数大小(512)。
如果我将文件指针设置为 0x400 ( $ Boot 的第二个扇区),则写入的数组没有错误代码。
如果我将文件指针设置为 0x3200 ( $ UpCase 的第二个扇区),则不会写入任何内容
错误代码5:拒绝访问
返回。
我找不到解决方案,而且我可以完全控制音量。我可以写 $ Boot 而不是 $ UpCase 这似乎很奇怪,这有什么理由吗?任何人都可以提供解决方案吗?