Форум: "WinAPI";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
ВнизПомогите найти ошибку Найти похожие ветки
← →
paul_shmakov (2001-11-16 16:41) [1]это вообще какой-то некоректный способ работы с файлами, проецируемыми в память. какая задача?
1. нужно создать объект-ядра "файл, проецируемый в память" (memory mapped file). создаеться он функцией CreateFileMapping. в первом ее параметре нужно передать дескриптор открытого файла или $FFFFFFFF, что говорит системе, что память под этот файл следует взять из страничного файла (или свопа по нашему). только не нужно это значение к HWND приводить, как в примере выше. если мы в этот файл что-то писать собрались, то нужно передать PAGE_READWRITE, а не PAGE_READONLY. размер файла указан верно. следует заметить, что если мы в первом параметре передали $FFFFFFFF, то не можем передать 0 вместо размера. если в первом параметре дескриптор на открытый файл, то можно передать 0 - файл целиком спроецируется.
2. спроецировать файл на адресное пространство процесса функцией MapViewOfFile. по тому значению, которое она вернет можно записать то, что нам нужно.
var
P: PChar;
begin
...
P := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
StrCopy(P, "что-то, что нужно засунуть в файл");
3. вызвать UnmapViewOfFile и CloseHandle.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.003 c