Форум: "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.049 c