У меня есть файл с несколькими блоками. Я хотел бы отобразить файл так, чтобы блоки, не являющиеся смежными, были смежными в памяти.
Пример:
Предположим, размер куска равен 1 кБ.
- Блок 1: смещение 0 в файле, сопоставленное с местоположением X
- Блок 2: смещение 1 кБ в файле, сопоставленное с местоположением X + 2 кБ
- Блок 3: смещение 2 кБ в файле, сопоставленное с местоположением X + 1 кБ
Я знаю, что могу дать предложения MapViewOfFileEx
о месте размещения вида.
Я попытался выделить адресное пространство, используя VirtualAlloc
, а затем передать его в качестве базового адреса (X), но это выдает ошибку 487 - «Попытка получить доступ к неверному адресу».
Как бы я гарантировал, что в адресном пространстве достаточно большой регион, чтобы я знал, что это будет работать?
Как уже указывалось, представления должны отображаться с кратностью детализации выделения памяти, поэтому блоки размером 1 КБ не будут работать должным образом. Можно ли заставить пример работать, если размер порции такой же, как и степень детализации выделения памяти?