Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
14-101452
vopros
2002-10-10 17:56
2002.10.31
Выключил, телефоны так хорошо стало.


14-101449
Rouse_
2002-10-08 23:27
2002.10.31
Встреча в МОСКВЕ


14-101515
AL2002
2002-10-09 12:15
2002.10.31
Тут какая-то гнида вирус по мылу разносит


14-101483
Шишкин Илья
2002-10-11 17:39
2002.10.31
Глюк в Win98 при коннекте


1-101318
Shadow
2002-10-19 10:38
2002.10.31
Как сделать файл доступным для записи нескольким программам сразу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский