【发布时间】:2016-11-28 20:46:42
【问题描述】:
由于SetFileIoOverlappedRange的Length参数只有ULONG,如何锁定4GB或更大的内存块?
假设我分配了一个连续的 4 GB 内存块用于重叠 I/O 并调用 SetFileIoOverlappedRange 两次,每半个块调用一次。两个调用都返回一个成功(非零)状态码。调用是否相加,导致锁定整个 4 GB 块?还是第二个调用“覆盖”第一个?我怎么知道?
【问题讨论】:
-
documentation指出,“范围与文件句柄关联后,不能解除关联。”
-
@IInspectable 这是否意味着调用是累加的?我该如何检查?谢谢!
-
与 MapViewOfFile() 中存在的限制相同,视图不能大于 4GB。内核内部的某种结构,不知道它为什么存在。
-
@HansPassant - ZwMapViewOfSection 在 x64 系统上对 4Gb 没有限制
-
@HansPassant 但MapViewOfFile 中的
dwNumberOfBytesToMap被声明为SIZE_T。
标签: windows file winapi overlapped-io