Кольцевой буфер Windows без копирования

Я исправил это, не удаляя все ссылки на сборки с открытым ключом 31bf3856ad364e35, так как это охватывает множество несущественных сборок.

Вместо этого это должно быть исправлено путем обновления всех ссылок конфигурации

  • System.Web.Mvc до 4
  • System.Web.WebPages до 2
  • System.Web.WebPages.Razor to 2

Обязательно обновите все файлы web.configs, включая файлы в каталогах View.

6
задан Foo Bah 10 August 2011 в 21:18
поделиться

1 ответ

На самом деле я не следил за всеми деталями примера из википедии. Имея это в виду, вы отображаете память в Windows с помощью CreateFileMapping и MapViewOfFile , однако MapViewOfFile не позволяет вам указать базовый адрес для сопоставления. MapViewOfFileEx может использоваться для указания базового адреса, поэтому, возможно, вы могли бы использовать аналогичный метод.

У меня нет никакого способа сказать, сработает ли это на самом деле:

// determine valid buffer size
SYSTEM_INFO info;
GetSystemInfo(&info);

// note that the base address must be a multiple of the allocation granularity
DWORD bufferSize=info.dwAllocationGranularity;

HANDLE hMapFile = CreateFileMapping(
             INVALID_HANDLE_VALUE,
             NULL,
             PAGE_READWRITE,
             0,
             bufferSize*2,
             L"Mapping");

BYTE *pBuf = (BYTE*)MapViewOfFile(hMapFile,
                    FILE_MAP_ALL_ACCESS,
                    0,                   
                    0,                   
                    bufferSize);
MapViewOfFileEx(hMapFile,
                    FILE_MAP_ALL_ACCESS,
                    0,                   
                    0,                   
                    bufferSize,
                    pBuf+bufferSize);
10
ответ дан 8 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: