Сообщение от :
int p;
void* lpFile;
_IMAGE_FILE_HEADER *tmp_file_header;
OpenDialog->Execute();
if (OpenDialog->FileName=="") return;
{
p = OpenFile((OpenDialog->FileName.c_str()),NULL,OF_READ);
lpFile = CreateFileMapping((void*)p, OF_READ, 0,0,0,NULL);
MapViewOfFile(lpFile,FILE_MAP_READ,0,0,0);
tmp_file_header=(PIMAGE_FILE_HEADER)PEFHDROFFSET (lpFile);
Machine_Label->Caption=((PIMAGE_FILE_HEADER)
PEFHDROFFSET (lpFile))->Machine;
//выгружаем и закрываем файл
UnmapViewOfFile(lpFile);
CloseHandle(lpFile);
CloseHandle((void*)p);
}
Сообщение от :
char* __fastcall c_str() const { return (Data)? Data: "";}
Сообщение от :
if (OpenDialog->FileName=="") return;
{
...
}
Сообщение от $@#Y@:
смущает то, что одиночные слеши в пути к файлу заменены на двойные
Сообщение от $@#Y@:
если попросить мессаджбокс с этой строкой
Сообщение от $@#Y@:
в модуле kernel32.dll
Сообщение от Part!zan:
То есть, месседжбокс с OpenDialog->FileName.c_str() работает нормально?
Сообщение от Dao:
В строке "OpenFile((OpenDialog->FileName.c_str()),NULL,OF_READ);"
NULL - точно правильно стоит? Вроде там нужен указатель: OFSTRUCT ofs;
"OpenFile((OpenDialog->FileName.c_str()),&ofs,OF_READ);"
Сообщение от :
tmp_file_header=(PIMAGE_FILE_HEADER)PEFHDROFFSET (lpFile);
Сообщение от :
int p=0;
void* lpFile;
PIMAGE_FILE_HEADER tmp_file_header;
OFSTRUCT ofs;
unsigned long * lpFileSize;
OpenDialog->Execute();
if (OpenDialog->FileName=="") return;
{
//Application->MessageBoxA(OpenDialog->FileName.c_str(),NULL);
OpenDialog->FileName="D:\Programming\Delphi\Converter\Convert erProject.exe";
p = OpenFile((OpenDialog->FileName.c_str()),&ofs,OF_READ);
GetFileSize((void*)p, lpFileSize);
lpFile = CreateFileMapping((void*)p, OF_READ, PAGE_READWRITE,0,*lpFileSize,NULL);
Application->MessageBoxA(IntToStr(lpFile).c_str(),NULL);
MapViewOfFile(lpFile,FILE_MAP_READ,0,*lpFileSize,0 );
tmp_file_header=(PIMAGE_FILE_HEADER)PEFHDROFFSET (lpFile);
Сообщение от :
HFILE hFile;
HANDLE hMapFile;
OFSTRUCT ofs;
...
hFile = OpenFile("D:\Programming\Delphi\Converter\Converte rProject.exe", ofs,OF_READ);
hMapFile = CreateFileMapping(hFile, OF_READ, PAGE_READWRITE,0,???, NULL);
Сообщение от :
void* p=0;
void* lpFile;
PIMAGE_FILE_HEADER tmp_file_header;
// OFSTRUCT ofs;
unsigned long * lpFileSize;
//OpenDialog->Execute();
//if (OpenDialog->FileName=="") return;
{
//Application->MessageBoxA(OpenDialog->FileName.c_str(),NULL);
OpenDialog->FileName="C:\KProject.exe";
p = CreateFile((OpenDialog->FileName.c_str()),OF_READ,0,0,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
GetFileSize(p, lpFileSize);
lpFile = CreateFileMapping(p, OF_READ, PAGE_READWRITE,0,0,NULL);
Application->MessageBoxA(IntToStr(lpFile).c_str(),NULL);
MapViewOfFile(lpFile,FILE_MAP_READ,0,*lpFileSize,0 );
tmp_file_header=(PIMAGE_FILE_HEADER)PEFHDROFFSET (lpFile);
Machine_Label->Caption=((PIMAGE_FILE_HEADER)
PEFHDROFFSET (lpFile))->Machine;
Сообщение от :
PIMAGE_FILE_HEADER tmp_file_header;
HANDLE hFile = CreateFile( "c:\KProject.exe" , GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
MapViewOfFile(hFileMapping,FILE_MAP_READ,0,0,0);
tmp_file_header = (PIMAGE_FILE_HEADER)PEFHDROFFSET (hFileMapping);
// Machine_Label->Caption=((PIMAGE_FILE_HEADER)
// PEFHDROFFSET (hFileMapping))->Machine;
UnmapViewOfFile(hFileMapping);
CloseHandle(hFileMapping);
CloseHandle(hFile);
Сообщение от :
tmp_file_header = (PIMAGE_FILE_HEADER)PEFHDROFFSET (hFileMapping);
Сообщение от :
HANDLE hFile = CreateFile( "С:\KProject.exe" , GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
Сообщение от $@#Y@:
смущает то, что одиночные слеши в пути к файлу заменены на двойные
Сообщение от $@#Y@:
закорючка в пути к файлу была причиной всех ошибок
Сообщение от :
PIMAGE_FILE_HEADER tmp_file_header;
HANDLE hFile = CreateFile( "c:\KProject.exe" , GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
MapViewOfFile(hFileMapping,FILE_MAP_READ,0,0,0);
tmp_file_header = (PIMAGE_FILE_HEADER)PEFHDROFFSET (hFileMapping);
// Machine_Label->Caption=((PIMAGE_FILE_HEADER)
// PEFHDROFFSET (hFileMapping))->Machine;
UnmapViewOfFile(hFileMapping);
CloseHandle(hFileMapping);
CloseHandle(hFile);
Сообщение от :
"c:\KProject.exe"
Сообщение от $@#Y@:
Неверный путь к файлу=> нулевой указатель на файл=> остальные указатели тоже нулевые=> некорректное обращение к памяти=>аксесс виолейшн...
cout << * pf << endl;}
cout << "pf == NULL" << endl;}