Windows WriteFileGather函数将最后一个错误设置为error_INVALID_PARAMETER
Windows WriteFileGather function set last error as ERROR_INVALID_PARAMETER
重现我的问题的示例代码:
#include <windows.h>
#include <iostream>
int main()
{
using namespace std;
HANDLE hdl = CreateFile("test.file", GENERIC_WRITE,
FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL |
FILE_FLAG_NO_BUFFERING |
FILE_FLAG_OVERLAPPED,
NULL);
char data[4096] = {0};
DWORD written = 0;
for(size_t i = 0; i < sizeof(data); ++i)
data[i] = 'a' + (i % 26);
OVERLAPPED async_hdl = {0};
FILE_SEGMENT_ELEMENT segs[3] = {0};
segs[0].Buffer = PtrToPtr64(data);
segs[1].Buffer = PtrToPtr64(data);
if(!WriteFileGather(hdl, segs, 8192, NULL, &async_hdl)) {
cout << "Last error: " << GetLastError() << endl;
cout << "overlapped internal status: " << async_hdl.Internal << endl;
// Last error: 87
// overlapped internal status: 259
}
CloseHandle(hdl);
return 0;
}
我用Visual Studio 2012编译了它,并在Windows 7上进行了测试。作为内联注释,WriteFileGather
函数总是将最后一个错误设置为ERROR_INVALID_PARAMETER
(87),OVERLAPPED结构的Internal
字段为259
。
我错过了什么?
MSDN:aSegmentArray
。。。系统内存页,并且必须在系统内存页大小边界上对齐。使用_aligned_malloc()
而不是堆栈内存。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 如何解决"invalid conversion from 'char' to 'const char*'"
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- C++二进制到 Java 会"java.lang.Error: Invalid memory access"
- 我在检查字符串时得到"Invalid utf 8 error",但当我使用 std::cout 时似乎是正确的
- WSARecv 有时会返回与 IOCP 端口关联的套接字的"invalid handle (error no 6)"。(C++)
- 在嵌入式八度C++中如何执行脚本文件?( "error: invalid call to script" )
- 来自字符串库组件内部的"error: invalid operands to binary expression"
- "error: invalid conversion from 'int*' to 'int' function"
- 如何解决"[Error] invalid use of incomplete type 'class SLLNode'"链表
- 深度缓冲区作为纹理 - "D3D11 ERROR: The Format is invalid when creating a View"