Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2017, 17:58   #1
fo,wf
Пользователь
 
Регистрация: 16.06.2017
Сообщений: 22
По умолчанию дескриптор файла не идёт в память

Fasm, win 7 (32) пишу:

mov dword [handle], eax; без дворд оно ругается

чтобы потом "WriteFile"
именно ругатся на dword[handle] ФАСМ не думает. Но когда я запускаю ЕХЕ он закрывается с сооб. ошибки (аппкраш), проблема именно в dword.. и WriteFile поскольку когда я его в "; " и комп. ЕХЕ, показывает MessageBox (ниже написано в коде). Кто нибудь может сказать как дескриптор нормально? не говорите на МАСМ или тп. писать у меня с ним есть проблемы >
fo,wf вне форума Ответить с цитированием
Старый 22.06.2017, 19:19   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от fo,wf Посмотреть сообщение
проблема именно в dword
И почему вы решили, что проблема именно в dword.
Покажите вызов WriteFile.
waleri на форуме Ответить с цитированием
Старый 22.06.2017, 19:45   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Потому что он креатефайл на ошибки не проверяет и думает, что она всегда ему корректный хендл вернет... вот он его и пихает в ВрайтФайл
p51x вне форума Ответить с цитированием
Старый 22.06.2017, 20:41   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
вот он его и пихает в ВрайтФайл
Это не приведет к appcrash, а вот неправильное количество параметров - запросто.
waleri на форуме Ответить с цитированием
Старый 23.06.2017, 20:48   #5
fo,wf
Пользователь
 
Регистрация: 16.06.2017
Сообщений: 22
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
И почему вы решили, что проблема именно в dword.
Покажите вызов WriteFile.
invoke WriteFile,dword [handle], mec, 5, 1, 0
mec db 'start'
fo,wf вне форума Ответить с цитированием
Старый 23.06.2017, 20:51   #6
fo,wf
Пользователь
 
Регистрация: 16.06.2017
Сообщений: 22
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что он креатефайл на ошибки не проверяет и думает, что она всегда ему корректный хендл вернет... вот он его и пихает в ВрайтФайл
как проверять креатефайл?
fo,wf вне форума Ответить с цитированием
Старый 23.06.2017, 21:51   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Бегом читать документацию https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx особенно что за 4й параметр у функции.
p51x вне форума Ответить с цитированием
Старый 02.07.2017, 20:42   #8
fo,wf
Пользователь
 
Регистрация: 16.06.2017
Сообщений: 22
По умолчанию

хендл надо было оформлять как переменную то есть

[handle] dd 0

но после записи в файл оно все равно вылетает, даже если закрываю хендл
fo,wf вне форума Ответить с цитированием
Старый 02.07.2017, 21:57   #9
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

fo,wf
Разве код так трудно выложить? Эх, опять приходиться экстрасенсорными способностями пользоваться.

Вам уже сказали, что 4 параметр надо правильно оформить. Он указатель, а вы туда передаёте 1. Что лежит по адресу 1? Нулевая страница у вас явно не выделена. Вы говорите запиши мне результат в пустоту. И как прикажете на это реагировать? ОС кидает ошибку, исключение. Ну, а далее так как обработчика таких ошибок у вас нет ОС вас попросту закрывает.

А до закрытия хэнжда и всего прочего у вас код не доходит. Я так понимаю отладчиком вы ещё не расжились. Попробуйте ollydbg.

А теперь про то как исправить заведите переменную wrCount и передавайте на неё указатель.
Код:
invoke WriteFile, handle, msec, 1, ADDR wrCount, NULL
...
wrCount dd 0
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение файла в память fog_ Общие вопросы Delphi 5 09.09.2016 14:37
Как засунуть, в последствии изменять, читать файл формата .DAT из исполняемого файла, т.е идёт работа с файлом ресурса IceTiN Общие вопросы Delphi 1 16.03.2015 07:47
Отображение файла в оперативную память rostik123 Win Api 1 06.11.2012 04:59
Отображение файла в оперативную память rostik123 Общие вопросы C/C++ 3 29.10.2012 20:02