• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Функция потока и возвращаемое значение

  • Автор темы shisik
  • Дата начала
S

shisik

При создании потока прототип его функии выглядит следующим образом: DWORD __stdcall ThreadProc(PVOID pvParam), т.е. функция возвращает целое беззнаковое число. Отсюда у меня вопрос: куда она его возвращает? Ведь при вызове CreateThread остановки вызывающей функции не проиходит и она может завершиться раньше, чем завершится созданный поток (а значит и чем он вернёт код завершения). Каким образом можно проверить, с каким кодом завершился поток?
 
E

European

Отсюда у меня вопрос: куда она его возвращает?
Что-то вопрос не очень понятен. Возвращаемое функцией потока значение = код завершения потока.
Каким образом можно проверить, с каким кодом завершился поток?
GetExitCodeProcess
 
S

shisik

Что-то вопрос не очень понятен.
Я имел ввиду, что возвращаемое значение функции можно получить так:
Код:
result = SomeFunc();
Но с функцией потока так не получится.
Возвращаемое функцией потока значение = код завершения потока.
Я понимаю, что это код завершения потока. Поэтому и спросил, как его получить.
Получается в первом параметре надо передать HANDLE потока? Чтож, попробую. Спасибо за помощь :)
 
Y

Yason

The thread execution begins at the function specified by the lpStartAddress parameter. If this function returns, the DWORD return value is used to terminate the thread in an implicit call to the ExitThread function. Use the GetExitCodeThread function to get the thread's return value.
 
E

European

Но с функцией потока так не получится.
Не получится, т.к. возвращаемое функцией потока значение не предназначено для прямого получения. Недавно цитированный тобой Рихтер все это объясняет. Да и MSDN в описании ThreadProc говорит:
MSDN сказал(а):
A process can determine when a thread it created has completed by using one of the wait functions. It can also obtain the return value of its ThreadProc by calling the GetExitCodeThread function.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!