Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Как определить размер пошаренного файла в памяти ...   Найти похожие ветки 

 
ai   (2002-09-16 07:53) [0]

Как определить размер пошаренного файла в памяти, созданного другой прогой с помощью CreateFileMapping в pagefile? GetFileSize и FileSeek как я понял не могут здесь применяться :(


 
ai   (2002-09-16 10:07) [1]

Ну че,никто не знает или невозможно???


 
ai   (2002-09-17 12:06) [2]

Обидно. Обидно, что никто не обратил внимания :(


 
paul_shmakov ©   (2002-09-18 18:31) [3]

если размер меньше 4Gb, то вот я пример набросал.

//
// mmfsize.dpr
// paul_shmakov
// obtain memory mapped file size
//
program mmfsize;

{$APPTYPE CONSOLE}

uses Windows, Sysutils;

function GetMMFSize(const MMFName: string): DWord;
var
MMFHandle: THandle;
Map: Pointer;
Mbi: MEMORY_BASIC_INFORMATION;
begin
Result := 0;
MMFHandle := OpenFileMapping(FILE_MAP_ALL_ACCESS, false, PChar(MMFName));
if MMFHandle <> 0 then
begin
Map := MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if Assigned(Map) then
begin
VirtualQuery(Map, Mbi, SizeOf(Mbi));
Result := Mbi.RegionSize;
UnmapViewOfFile(Map);
end;
CloseHandle(MMFHandle);
end;
end;

const
MMFName = "MY_MMF";
var
MMFHandle: THandle;
Si: SYSTEM_INFO;
begin
MMFHandle := CreateFileMapping(THandle($FFFFFFFF), nil, PAGE_READWRITE,
0, 1242048, PChar(MMFName));

if MMFHandle <> 0 then
begin
GetSystemInfo(Si);
WriteLn("MMF size aligned to " + IntToStr(Si.dwPageSize) +
" boundary is " + IntToStr(GetMMFSize(MMFName)));
// An output should be 1245184 that"s 1242048 aligned to 4096.
CloseHandle(MMFHandle);
end;
end.


 
ai   (2002-09-19 09:33) [4]

2paul_shmakov :
Большое спасибо! Я просто был уверен, что это возможно :)) Я думаю, если я скопирую в буфер блок этого размера, то никаких исключений не произойдет.


 
paul_shmakov ©   (2002-09-19 11:39) [5]

я не уверен, что это будет работать везде, потому как этот способ просто в голову вчера пришел, а не из msdn вычитан.
тестировал только под w2k. нужно еще и под другими версиями проверить.
кстати, чтобы у Вас не было "никаких исключений" всегда создавайте mmf (если, конечно Вы их создаете) с размером, кратным размеру страницы.



Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-101163
nikolo
2002-10-11 12:20
2002.10.31
Как вычесть из запроса те строки, которые есть в другой таблице?


1-101370
sagchat
2002-10-21 12:05
2002.10.31
Как сделать чтобы при нажатии на кнопку текст из Edit сохранялся


4-101587
miDDTrich
2002-09-16 14:47
2002.10.31
Как рисовать рядом с эл-том ListView/TreeView с помощью WinAPI?


6-101429
klik
2002-08-28 09:51
2002.10.31
А что будет?


1-101231
Kinder
2002-10-18 22:49
2002.10.31
Че за фигня-я-я-я ???