Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Невозможно создать файл, так как он уже существует, Error 0B7h 
V
    Опции темы
JAPH
Дата 13.6.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 5
Всего: 23



Начинающий в MASM 6.14.8444 и прогр. под WinXP => попроще smile
Программа, занимающаяся просто выводом окошка. Проще не придумать. Но стоило мне её позапускать пару раз, поотлаживать, как стала вылезать ошибка "Невозможно создать файл, так как он уже существует". Причём выполнение идёт нормально, пока не доходит до RegisterClassEx. Olly показывает ошибку File_not_found (2), хотя eax<>0. Это так надо? Ну, хорошо, процесс идёт дальше, на CreateWindowEx выскакивает ошибка 0xB7h, eax=0. В чём дело?

Код
                .486
                .model  flat, stdcall
                option  casemap: none
include         \masm32\include\windows.inc
include         \masm32\include\user32.inc
include         \masm32\include\kernel32.inc
includelib      \masm32\lib\user32.lib
includelib      \masm32\lib\kernel32.lib
                .data
wcname          db      "wcopit", 0
wn              db      "opit", 0
err_cap         db      "Error", 0
err_def         db      "Error has occurred", 0
                .data?
err_msg         db      100h dup (?)
wcx             WNDCLASSEX      <>
msg             MSG     <>
hwnd            dd      ?
                .code
wnd_main        proc    hw: HWND, ms: UINT, wp: WPARAM, lp: LPARAM
                cmp     ms, WM_DESTROY
                je      @1
                invoke  DefWindowProc, hw, ms, wp, lp
@0:             xor     eax, eax
                ret
@1:             invoke  PostQuitMessage, 0
                jmp     @0
wnd_main        endp
@:              invoke  GetModuleHandle, 0
                test    eax, eax
                jz      @error
                mov     wcx.hInstance, eax
                invoke  LoadIcon, 0, IDI_APPLICATION
                test    eax, eax
                jz      @error
                mov     wcx.hIcon, eax
                mov     wcx.hIconSm, eax
                invoke  LoadCursor, 0, IDC_ARROW
                test    eax, eax
                jz      @error
                mov     wcx.hCursor, eax
                mov     wcx.lpszMenuName, 0
                mov     wcx.lpszClassName, offset wcname
                mov     wcx.lpfnWndProc, offset wnd_main
                mov     wcx.style, 0
                mov     wcx.cbClsExtra, 0
                mov     wcx.cbWndExtra, 0
                mov     wcx.hbrBackground, COLOR_WINDOW + 1
                mov     wcx.cbSize, sizeof wcx
                invoke  RegisterClassEx, offset wcx
                test    eax, eax
                jz      @error
                invoke  CreateWindowEx, 0, offset wcname, offset wn, WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, wcx.hInstance, 0
                test    eax, eax
                jz      @error
                mov     hwnd, eax
                invoke  ShowWindow, eax, SW_SHOWDEFAULT
                invoke  UpdateWindow, hwnd
                test    eax, eax
                jz      @error
@mc:            invoke  GetMessage, offset msg, hwnd, 0, 0
                cmp     eax, -1
                je      @error
                test    eax, eax
                jz      @quit
                invoke  TranslateMessage, offset msg
                invoke  DispatchMessage, offset msg
                jmp     @mc
@error:         invoke  GetLastError
                lea     edi, err_msg
                invoke  FormatMessage, FORMAT_MESSAGE_FROM_SYSTEM, 0, eax, 0, edi, 0FFh, 0
                test    eax, eax
                jnz     @F
                lea     edi, err_def
@@:             invoke  MessageBox, 0, edi, offset err_cap, MB_OK
@quit:          invoke  ExitProcess, 0
                end     @



--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
JAPH
Дата 13.6.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 5
Всего: 23



Проблема решилась. Оказалось, нельзя очищать eax после DefWindowProc.
Так что осталось 
Цитата
Olly показывает ошибку File_not_found (2), хотя eax<>0. Это так надо?



--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.