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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2016, 20:46   #1
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию SEH в Native-приложении

Приветствую! Пишу native-приложение (SUBSYTEM: NATIVE), которое должно выполниться при старте системы. Соответственно подцеплена только ntdll. Юзермдные либы не используются. Можно ли каким-нибудь образом в найтив-приложении использовать SEH? Сейчас при использовании __try/__except при компиляции лезет ошибка
Цитата:
Ошибка LNK2001 неразрешенный внешний символ "__C_specific_handler"
Может есть еще способ обрабатывать исключения?
Единственный способ стать умнее - играть с более умным противником.

Последний раз редактировалось Sam Gold; 10.02.2016 в 20:50.
Sam Gold вне форума Ответить с цитированием
Старый 10.02.2016, 23:18   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Да вроде native приложения - те же приложения, так что линкуйте библиотеки. Там в lib папке DDK есть DDK и CRT подпапки, рантайм там есть.

Во всяком случае в драйверах точно можно использовать try/catch, иногда даже обязательно.
waleri вне форума Ответить с цитированием
Старый 14.02.2016, 12:32   #3
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Подключил ntoskrnl.lib. Теперь все компилится, но при попытке чтения памяти обработчик не вызывается.
Код:
        __try
	{
		DBGMSG(L"Before RtlCopyMemory");
		RtlCopyMemory(&oldValue, (PVOID)(kernelBase + BASE_DELTA), sizeof(ULONG_PTR));
                DBGMSG(L"After RtlCopyMemory");
	}

	__except (EXCEPTION_EXECUTE_HANDLER)
	{
		DBGMSG(L"Some exception occured");
		if (GetExceptionCode() == STATUS_ACCESS_VIOLATION)
		{
			DBGMSG(L"Exception STATUS_ACCESS_VIOLATION");
		}
	}
Аналогичная конструкция в обычном приложении при возникновении исключения перехватывается и возвращается EXCEPTION_ACCESS_VIOLATION.
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SEH Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 09.09.2011 00:42
native api Bat{CMD}_Men Win Api 7 07.04.2011 11:57
SEH исключения eracer Общие вопросы C/C++ 0 18.11.2009 20:32
Native API Д'якон Win Api 3 24.11.2008 22:22
Native API student_63 Win Api 1 31.03.2008 19:45