既然Length
参数SetFileIoOverlappedRange
是ULONG
only,怎么才能锁定一个4GB或者更大的内存块呢?
假设我分配了一个连续的 4 GB 内存块用于重叠 I/O 并调用SetFileIoOverlappedRange
两次,每半个块调用一次。两个调用都返回一个成功(非零)状态码。调用是否相加,导致锁定整个 4 GB 块?还是第二个调用“覆盖”第一个?我怎么知道?
既然Length
参数SetFileIoOverlappedRange
是ULONG
only,怎么才能锁定一个4GB或者更大的内存块呢?
假设我分配了一个连续的 4 GB 内存块用于重叠 I/O 并调用SetFileIoOverlappedRange
两次,每半个块调用一次。两个调用都返回一个成功(非零)状态码。调用是否相加,导致锁定整个 4 GB 块?还是第二个调用“覆盖”第一个?我怎么知道?
假设我分配了一个连续的 4 GB 内存块用于重叠 I/O 并调用
SetFileIoOverlappedRange
两次
我了解该范围适用于OVERLAPPED
结构,而不是数据缓冲区。
(实际上,对于IO_STATUS_BLOCK
结构。请参阅FileIoStatusBlockRangeInformation
。)
您可能不需要或没有 4GB 的OVERLAPPED
结构。