Здравствуйте, Iskarov.And, Вы писали:
IA>Создаю поток в драйвере x64 и при использовании continue из __try/__finally получаю эксепшн STATUS_BAD_STACK,
IA>под х86 все работает нормально. Самое интересное что драйвер состоящий только из этого кода вполне нормально работает,
IA>проблема возникает только когда я такую конструкцию использую в составе здорового драйвера и только под х64.
IA>Стэк в новом потоке вроде как должен быть вполне нормальный, на первый взгляд ничего косячного не замечаю.
IA>Может кто подсказать в чем прикол?
IA>каллстэк:
IA>nt!RtlRaiseStatus
IA>nt!RtlUnwindEx
IA>nt!local_unwind
IA>core!CoreThread
IA>nt!SysThreadStartup
IA>код:
IA>IA>InitializeObjectAttributes (&oa, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
IA>PsCreateSystemThread (&hCore, GENERIC_ALL, &oa, NULL, NULL, CoreThread, NULL);
IA>VOID CoreThread (PVOID pContext)
IA>{
IA> ULONG i, r;
IA> for (i = 0;; i++)
IA> {
IA> __try
IA> {
IA> if (i < 2)
IA> continue;
IA> break;
IA> }
IA> __finally
IA> {
IA> r = 0;
IA> }
IA> }
IA>}
IA>
Что за говнокод?