![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить имя Mapped файла по его Handle [D7, WinXP]
MFN+ © (2008-01-01 18:25:00)Вот код:
var
c:cardinal;
a:array[0..255]of char;
p:pointer;
begin
p:=windows.MapViewOfFile(MappedHandle,FILE_MAP_READ,0,0,1);
GetMappedFileName(getcurrentprocessid,p,a,sizeof(a));
showmessage(a);
end;
есть хендл - MappedHandle его передаю, а выдает ?
ага (2008-01-02 12:42:00) [1]GetMappedFileName возвращает имя файла, который был отображен, а не имя секции. Если ее вызвать для секции в файле подкачки, то она и вернет > Том был открыть извне...А чего ей еще возвращать-то?
MFN+ (2008-01-02 06:14:00) [2]Говорит, что : Том был открыть извне...
Имя получить не могу.
Хотя я открывал его MapViewOfFile, но и когда не открывал, тоже не мог имя получить.
Ins (2008-01-01 23:39:00) [3]Сорри, не заметил [1]. Тогда см. [2]
Ins (2008-01-01 23:35:00) [4]Первый параметр - хэндл процесса, а не идентификатор. Т.е. GetCurrentProcess вместо GetCurrentProcessID. Только имя возвращается в формате NTPath, а не DOSPath, если нужно преобразовать - вот пример:
http://msdn2.microsoft.com/en-us/library/aa366789(VS.85).aspx
MetalFan (2008-01-01 19:10:00) [5]а что GetLastError говорит?
MFN+ (2008-01-01 18:41:00) [6]
> varc:cardinal;a:array[0..255]of char;p:pointer;beginp:=windows.
> MapViewOfFile(MappedHandle,FILE_MAP_READ,0,0,1);GetMappedFileName( getcurrentp rocessid,
> p,a,sizeof(a));showmessage(a);end;
ошибочка, GetCurrentProcess там, но тоже не помогает.
Как все-таки получить имя?Подскажите Плиз.