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

Вниз

Mapped файл   Найти похожие ветки 

 
Stan   (2008-04-03 19:39) [0]

Как узнать что файл на данный момент проецируется в память (mapped) какой то программой. Интересует сам факт(да или нет), имя программы и остальное не нужно.
К примеру шрифты в папке Fonts, файл Arial.ttf - всегда мэпирован.


 
Игорь Шевченко ©   (2008-04-03 20:32) [1]


> Как узнать что файл на данный момент проецируется в память
> (mapped) какой то программой


http://code.progler.ru/get/191 - может найдешь что полезное


 
Loginov Dmitry ©   (2008-04-03 22:16) [2]

> Как узнать что файл на данный момент проецируется в память
> (mapped) какой то программой. Интересует сам факт(да или
> нет), имя программы и остальное не нужно.


Уменьши ему размер с помощью SetEndOfFile - узнаешь... ;)


 
Игорь Шевченко ©   (2008-04-03 23:22) [3]

Пример из [1] надо слегка дополнить

procedure TfMain.PaintBoxSelectedMouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 EntryIndex, EntryX, EntryY : Integer;
 GridHeight:  Integer;
 GridWidth :  Integer;
 PaintBox : TPaintBox;
 Address: DWORD;
begin
 PaintBox := Sender as TPaintBox;
 if Button = mbLeft then begin
   GridHeight := PaintBox.Height div 32;
   GridWidth  := PaintBox.Width  div 32;
   EntryX := (X div GridWidth);
   EntryY := (Y div GridHeight);
   EntryIndex := EntryY * 32 + EntryX;
   Address := DWORD(DWORD(EntryIndex) * FSelectedMemory.EntrySize) +
     FSelectedMemory.StartAddress;
   lbSelectedPage.Caption := Format("%.8x", [Address]);
   if FSelectedMemory.Map[EntryIndex] = MemImage then
     lbContents.Caption := GetModuleFileNameForAddress(Address)
   else if FSelectedMemory.Map[EntryIndex] = MemMapped then
     lbContents.Caption := GetMappedFileNameForAddress(Address)
   
 else
     lbContents.Caption := "Unknown";
 end;
end;


function TfMain.GetMappedFileNameForAddress(Address: DWORD): string;
var
 ModuleName: array[0..1024] of char;
 rc: DWORD;
 mbi : TMemoryBasicInformation;
begin
 rc := VirtualQueryEx(FCurrentProcess, Pointer(Address), mbi, SizeOf(mbi));
 if rc <> SizeOf(mbi) then
   raise Exception.Create(SysErrorMessage(GetLastError));
 rc := GetMappedFileName(FCurrentProcess, Pointer(mbi.AllocationBase),
     ModuleName, SizeOf(ModuleName));
 if rc > 0 then
   Result := ModuleName
 else
   Result := SysErrorMessage(GetLastError);
end;


 
Stan   (2008-04-04 00:47) [4]

>>Уменьши ему размер с помощью SetEndOfFile - узнаешь

Собственно лекарство против этого и нужно. SetEndOfFile - вперед можно, назад нет. Вкратце - использую для затирания "хвостов" файлов.


 
Loginov Dmitry ©   (2008-04-05 16:11) [5]

> Собственно лекарство против этого и нужно. SetEndOfFile
> - вперед можно, назад нет


GetLastError не спасет? ;)



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

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

Наверх





Память: 0.45 MB
Время: 0.046 c
15-1232736848
Petr V. Abramov
2009-01-23 21:54
2009.03.29
МИЗЕР :)


15-1233229384
Лео
2009-01-29 14:43
2009.03.29
ужать видео


15-1232443558
Gans
2009-01-20 12:25
2009.03.29
Проблемы с QIP может кто знает


6-1201628955
Lamer666
2008-01-29 20:49
2009.03.29
Возможно ли использоватьOpera в место TWebBrowser?


15-1232336105
Slider007
2009-01-19 06:35
2009.03.29
С днем рождения ! 17 января 2009 суббота





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский