我正在创建一个程序来使用虚拟文件系统填充磁盘。
目前,我正在使用编写可变大小的文件WriteFile
.
WriteFile(hFile, FileData, i * 1024, &dwWrote, NULL);
err = GetLastError();
错误返回#1784,翻译为
提供的用户缓冲区对于请求的操作无效。错误_INVALID_USER_BUFFER
因此对于前 24 个文件,写入操作有效。对于文件 #25,写入操作失败。
文件仍会创建,但 WriteFile 函数不会填充文件。
关于如何过去的任何想法ERROR_INVALID_USER_BUFFER
?
我能找到的所有关于该错误的参考都仅限于崩溃的程序,我无法弄清楚它与我遇到的问题有何关系。
EDIT:
FileData = (char *) malloc(sizeof(char) * (size_t)k * 1024);
memset(FileData, 245, sizeof(char) * (size_t)k * 1024);
FileData 设置并分配为最大预期缓冲区的大小。
i 是迭代的循环变量,直到递增到最大大小 (k)。
我的猜测是FileData
不够大,无法书写i * 1024
字节。是i
文件列表的循环控制变量?如果是这样,则需要写入缓冲区FileData
当您循环浏览文件时一次增加 1K。
这是一个不寻常的结构。你确定这里的逻辑是正确的吗?发布更多代码(具体来说,所有使用FileData
and i
)以提高答案的准确性。
请注意,您不应该总是检查GetLastError
在这里 - 你需要检查WriteFile
的返回代码,然后您才相信它有意义。否则,您可能会从代码的某些不相关部分中发现错误 - 无论最后失败的是什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)