Программа работает нормально на Xp но на 2000 сразу же ошибка (инструкция по адресу “0x77e23123” обращение к памяти “0x0000004f”). Использую WinApi: Код (Text): Import Module 001: ws2_32.dll Addr:0000528C hint(006B) Name: socket Addr:00005284 hint(0067) Name: send Addr:0000527C hint(0064) Name: recv Addr:00005272 hint(0061) Name: listen Addr:0000526A hint(005D) Name: htons Addr:0000525C hint(005A) Name: getsockname Addr:0000524E hint(0055) Name: getpeername Addr:00005240 hint(0050) Name: closesocket Addr:00005238 hint(004F) Name: bind Addr:0000522E hint(004E) Name: accept Addr:00005220 hint(003F) Name: WSAStartup Addr:00005212 hint(000E) Name: WSACleanup Addr:00005200 hint(000B) Name: WSAAsyncSelect Import Module 002: comctl32.dll Addr:000052A2 hint(003E) Name: InitCommonControls Import Module 003: user32.dll Addr:000052E8 hint(00AD) Name: EndDialog Addr:000052F4 hint(00F2) Name: GetDlgItem Addr:00005302 hint(00F4) Name: GetDlgItemTextA Addr:00005314 hint(0163) Name: InvalidateRect Addr:00005326 hint(017B) Name: KillTimer Addr:00005332 hint(0184) Name: LoadIconA Addr:0000533E hint(019D) Name: MessageBoxA Addr:0000534C hint(01A8) Name: MoveWindow Addr:0000535A hint(01DD) Name: SendDlgItemMessageA Addr:00005370 hint(01E2) Name: SendMessageA Addr:00005380 hint(01F8) Name: SetDlgItemTextA Addr:00005392 hint(0217) Name: SetTimer Addr:0000539E hint(022D) Name: ShowWindow Addr:000052C6 hint(008A) Name: DialogBoxParamA Addr:000052D8 hint(00AB) Name: EnableWindow Import Module 004: kernel32.dll Addr:0000547E hint(02BB) Name: lstrcpyA Addr:00005472 hint(029E) Name: WriteFile Addr:0000545E hint(0243) Name: SetPriorityClass Addr:00005452 hint(01F7) Name: ReadFile Addr:000053C6 hint(0030) Name: CreateFileA Addr:00005434 hint(0172) Name: GlobalLock Addr:00005426 hint(016E) Name: GlobalFree Addr:00005418 hint(0167) Name: GlobalAlloc Addr:00005404 hint(0109) Name: GetModuleHandleA Addr:000053F6 hint(00F5) Name: GetFileSize Addr:000053E2 hint(00DB) Name: GetCurrentProcess Addr:00005442 hint(0175) Name: GlobalReAlloc Addr:000053D4 hint(0080) Name: ExitProcess Addr:000053B8 hint(001A) Name: CloseHandle Import Module 005: shell32.dll Addr:00005498 hint(006C) Name: Shell_NotifyIconA К сожалению больше добавить нечего (т.к. 2000 у меня не стоит, а при запуске на чужой машине отладочных прог не было под рукой). Слышал, что на 2000 усиленная безопасность и из за этого есть проблемы с совместимостью, может кто знает в сторону каких Api капать?
сначала покопай в сторону сохранения ebx в оконных процедурах - в 98/ХР его можно коцать, а в 2000 - нельзя.
EGOiST помнится долго разбирался с подобной проблемой. тогда ему хватило моих логов исполнения программы в ollydbg под win2k
Тут кокета мелочь (наверно опять где-то несохранённый регистр), может надо восстанавливать регистр ebx и при вызове Api ? Я даже не могу понять, что надо искать в отладчике, если прога может пол часа нормально проработать. В проге используются асинхронные сокеты и таймер, думаю надо капать в эту сторону. Ситуация тяжела ещё тем, что у меня Xp , не могу же я сутками сидеть у друга и ждать пока она заглючит. Если у кого-то были подобные проблемы, пожалуйста напишите, из за чего они возникли как вы их решили.
Вроде сталкивался с такой фигнёй, при вызове некоторых API, а так же по завершению оброботки сообщений флаг "d" должен быть сброшен, может ты где его устанавливаешь в "1". (Хотя и ХР вроде на это ругается).