小编Ema*_*ona的帖子

WINAPI C - CreateFileMapping 失败并出现错误 8 - ERROR_NOT_ENOUGH_MEMORY

我正在 Windows 上处理文件映射,但遇到了一些问题。首先,我需要部分映射文件并动态设置文件的开头和结尾。

我的代码如下:

long fiveMB = 5 * pow(2, 20);
for(int i=0;i<parts;i++){
    long start = (i)*fiveMB;
    long end = (i + 1)*fiveMB;
    long realEnd = end;
    if (roundedDim<realEnd)
        realEnd = dim;

    long chunkDim = realEnd - start;
    LARGE_INTEGER fileMapStart.QuadPart = (start/granularity)*granularity;
    LARGE_INTEGER mapViewSize.QuadPart = (start%granularity) + chunkDim;
    LARGE_INTEGER fileMapSize.QuadPart = start + chunkDim;
    long offset = start - fileMapStart.QuadPart;

    HANDLE fileMappingH= CreateFileMapping(fileH, NULL, PAGE_READONLY, fileMapSize.HighPart, fileMapSize.LowPart, NULL);

    if(fileMappingH == INVALID_HANDLE_VALUE || fileMappingH == NULL){
       printf("Error mapping file: %d\n",GetLastError());
       CloseHandle(fileH); …
Run Code Online (Sandbox Code Playgroud)

c memory mapping winapi file

4
推荐指数
1
解决办法
1795
查看次数

标签 统计

c ×1

file ×1

mapping ×1

memory ×1

winapi ×1