Код (Text): invoke CreateFile,addr filename,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL .IF eax != NULL mov hFile,eax invoke CreateFileMapping,hFile,NULL,PAGE_READWRITE,0,0,NULL ; .IF eax == NULL ; call GetLastError ; .endif mov hMapping,eax invoke MapViewOfFile,hMapping,PAGE_EXECUTE_READWRITE ,0,0,0 ; call GetLastError mov hMap,eax .ENDIF mov esi,hMap В результате hMap !=0 должен быть указатель на файл, но при переходе туда ctrl+G в ольке дамп пустой( имено пустой а не 0 )
А надо бы FILE_MAP_WRITE или FILE_MAP_ALL_ACCESS PS: CreateFile в сл.ошибки возвращает не NULL, а INVALID_HANDLE_VALUE
Проекция у тебя создается с правами PAGE_EXECUTE_READWRITE, когда ни CreateFile и CreateFileMapping открывались только для чтения и записи без права "EXECUTE". Да и вообще, как я знаю, нет такого права "PAGE_EXECUTE_READWRITE", а из похожих есть только FILE_MAP_READ и FILE_MAP_WRITE. Попробуй 'PAGE_EXECUTE_READWRITE' заменить на 'FILE_MAP_READ or FILE_MAP_WRITE'.
извините за столь обширную цитату, но что из этого не понятно! откуда взялось, то что явно не указано в документации. А то, что константа принадлежит к группе прав доступа, не говорит о том, что ее можно передавать во все функции!
max7C4 Не понятно какое отношение flProtect из CreateFileMapping имеет к dwDesiredAccess из MapViewOfFile, да и цитата несколько устарела, т.к. с XP SP2 в CreateFileMapping можно задавать и PAGE_EXECUTE_READ\READWRITE PS: А вообще конечно MapViewOfFile ведет себя как-то странно - если не установлен ни один из флагов FILE_MAP_WRITE=1 или FILE_MAP_READ=2 , то вместо того, чтобы просто обломить нерадивого прогера и выдать NULL, зачем то создается проекция с PAGE_NOACESS со всеми вытекающими..