Самое смешное, что весь последний месяц только с Debug Api и приходилось работать.. А сейчас сел за голый комп, без своих исходников, и туплю по полной. Простейший пример и не работает. Уже несколько часов не могу найти где провтыкал. Код (Text): Procedure Handler2; var DE:_Debug_event; begin While true do Begin application.ProcessMessages; WaitForDebugEvent(de,INFINITE); case DE.dwDebugEventCode of CREATE_PROCESS_DEBUG_EVENT: begin ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED); end; EXCEPTION_DEBUG_EVENT: begin if de.Exception.ExceptionRecord.ExceptionCode=Exception_Breakpoint then ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_CONTINUE) else ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED); end; LOAD_DLL_DEBUG_EVENT: begin ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED); end; EXIT_PROCESS_DEBUG_EVENT: begin break; end; else ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED); end; end; end; ............. GetStartupInfo(sti); GetMem(pComm,Max_path); StrPCopy(pComm,Cdir+'\VstH.exe') Createprocess(nil,pComm,nil,nil,false,CREATE_DEFAULT_ERROR_MODE or DEBUG_ONLY_THIS_PROCESS or DEBUG_PROCESS, nil, nil, StI, lpPI) FreeMem(pComm); handler2; ................ Тут еще такая штука. Если смотреть в делфи под отладчиком, то работает через раз (иногда зависает вместе с самой Delphi). Если же просто запустить, то зависает всегда. На чистой (оригинальной) Olly при при игноре всех exceptions (в отлаживаемой проге вылетает порядка 20 (Exception: E06D7363), которые программа сама и обрабатывает) все нормально запускается.
Спасибо это точно. Но, проблемма не в этом. Все создается. Процесс начинает сыпать Exception: E06D7363 и потом зависает. Сравнивал лог своей программы с OLLY количество Exception: E06D7363 одинаковое. Т.е. все эти ошибки отрабатываются или зависает на последней. Далее, после ошибок в Олли идет: C:\WINDOWS\system32\IMAGEHLP.dll После чего прога запускается. А у меня зависает. В логе моей программы эта длл грузится еще до возникновения exceptions E06D7363...
Дык DEBUG API тут не причем E06D7363 это старый код эксепшна от вижуал с, (на заметку EEFFACE - борландовские). Программа ждет логики от отладчика. Эти и новые эксепшены попробуй продолжать с кодом DBG_CONTINUE.
Кстати, вот тут вспомнил, может кто знает что-нить по сабжу с кодом сafedead... толи вирус, толи эвристик от каспера. Как неожиданно появился в одной проге так-же неожиданно и исчез.