Добрый день. функция TerminateThread не выполняется. LastError = ERROR_INVALID_HANDLE Поток создается следующим кодом: Код (Text): SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE; CreateThread(&sa,NULL,Functaddr,FunctParam,NULL,&hThread); Вызов TerminateThread: Код (Text): TerminateThread(hThread,0); CloseHandle(hThread); P.S. в начале я создавал поток без указания структуры sa. (т.е. NULL) результат тот же. в общем я совсем запутался и нифига не понимаю в чем дело. при вызове CreateThread вроде права на поток выставляются THREAD_ALL_ACCESS (в том числе THREAD_TERMINATE) почему возникает ошибка? спасибо за внимание...
Так всегда. Целый день ищешь ошибку и не находишь. решившись все таки запостить на форум, проблема решается через 10 минут. Ошибка в том что при вызове CreateThread в hThread помещается не хэндл а ИД потока. А хэндл возвращается самой фукнцией. в моем случае в TerminateThread я передавал ИД потока, а не хендл. Сорри за топик. П.С. эх... надо же так лохануться...
это коллективный разум форума помогает ещё до того как кто-то запостит ответ )) имхо лучше лишний раз запостить нелепость, чем тупить над ней в одиночестве
Не, это я просто так отписал. щас код выглядит так: Код (Text): ModStruct->hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) Funct, (void *) lpszModParams, 0, NULL); На счет коллективного разума, сказано грамотно.