Re[5]: Разделяемая память Windows
От: King of a Stellar War Украина  
Дата: 27.07.04 21:21
Оценка:
Здравствуйте, Wavy, Вы писали:

W>Здравствуйте, King of a Stellar War, Вы писали:


KOA>>Кста, там у рихтера было написано:


KOA>>WINDOWS 2000

KOA>>В Windows 2000 функция VirtualFree не годится для возврата физической памяти, переданной в свос время проецируемому файлу (созданному с флагом SEC_RESERVE).

KOA>>А чем тогда возвращять память???


W>Если честно, я этому замечанию Рихтера не придал значения.. точнее, не заметил его вовсе и поэтому не стал беспокоиться

W>Я делаю так:

W>
W>    hFileMap=CreateFileMapping((HANDLE)0xFFFFFFFF,            //create page file-mapping
W>                                NULL,                        //no security attr
W>                                PAGE_READWRITE|SEC_RESERVE,    //reserve memory range
W>                                0,                            //high-order size
W>                                Size,                        //low-order size
W>                                Name);                        //file-mapping name
W>


W>Уже после того, как память зарезервирована, я ее выделяю по сколько нужно:


W>
W>    VirtualAlloc(p, size, MEM_COMMIT, PAGE_READWRITE);
W>


W>и удаляю вот так:


W>
W>    VirtualFree(p, size, MEM_DECOMMIT);
W>


W>Не утверждаю, что это единственно правильно и корректно, но это работает


W>Кстати, при выделении\освобождении памяти неплохо бы еще учитывать ее гранулярность. Дополнительно я завел обертки функций VirtualAlloc и VirtualFree, которые веделяют\освобождают память только постранично (по 4 к).

W>Вот.

Я у Рихтера об этом способе рашаривания куска памяти немного не понял:
1. Нужно ли вызывать MapViewOfFile после CreateFileMapping?
2. Что передавать в качестве первого операнда в VirtualAlloc?
3. Что делать с тем указателем, что возвращает VirtualAlloc?
4. Как мне освобождать память выделенную в другом процессе?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.