首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WriteFile返回错误1784

WriteFile返回错误1784
EN

Stack Overflow用户
提问于 2011-06-30 15:42:54
回答 2查看 11.7K关注 0票数 2

我正在创建一个用虚拟文件系统填充磁盘的程序。

目前,我正在使用WriteFile编写可变大小的文件。

代码语言:javascript
复制
        WriteFile(hFile, FileData, i * 1024, &dwWrote, NULL);
        err = GetLastError();

err返回#1784,这将转换为

提供的用户缓冲区对请求的操作无效。ERROR_INVALID_USER_BUFFER

因此,对于前24个文件,写操作可以工作。对于文件#25 on,写操作失败。文件仍然被创建,但是WriteFile函数没有填充这些文件。

关于如何通过ERROR_INVALID_USER_BUFFER的任何想法

我能找到的每一个错误的引用都局限于崩溃的程序,我无法弄清楚它与我正在经历的问题有什么关系。

编辑:

代码语言:javascript
复制
FileData = (char *) malloc(sizeof(char) * (size_t)k * 1024);
memset(FileData, 245, sizeof(char) * (size_t)k * 1024);

FileData被设置并分配到最大预期缓冲区的大小。I是循环变量,它一直迭代到最大值(k)为止。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-30 15:48:16

我的猜测是,FileData不足以让您从它编写i * 1024字节。i是否是文件列表的循环控制变量?如果是这样的话,当您循环遍历文件时,您需要写缓冲区FileData一次增长1K。

这是一个不寻常的构造。你确定这里的逻辑是正确的吗?发布更多代码(特别是FileDatai的所有用法),以提高答案的准确性。

请注意,您不应该总是在这里检查GetLastError --在您认为这是有意义的之前,您需要检查WriteFile的返回代码。否则,您可能会从代码的某个不相关部分(不管上次发生了什么故障)获取一个错误。

票数 4
EN

Stack Overflow用户

发布于 2011-12-03 19:23:35

我得到了一个错误= 1784,这是因为我打开文件时没有指定记录的大小,然后对文件进行块读取。

代码语言:javascript
复制
Reset( FileHandle );

应该是

代码语言:javascript
复制
Reset( FileHandle, 1 );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6537416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档