Функция _beginthreadex
В том случае, если вам нужны возможности функции CreateThread (например, необходимо создать задачу в приостановленном состоянии) и вместе с тем необходимо использовать функции библиотеки транслятора, имеет смысл обратить внимание на функцию_beginthreadex. Прототип этой функции мы привели ниже:
unsigned long _beginthreadex(
void *Security, // указатель на дескриптор защиты
unsigned StackSize, // начальный размер стека
unsigned (*StartAddress)(void*), // адрес функции задачи
void *ArgList, // параметры для задачи
unsigned Initflag, // параметры создания задачи
unsigned *ThrdAddr); // адрес созданной задачи
Для запуска задачи в приостановленном состоянии через параметр Initflag необходимо передать значение CREATE_SUSPENDED.
Функция задачи, которая запускается с помощью функции _beginthreadex, имеет один параметр и возвращает 32-разрядное значение, аналогично функции задачи, запускаемой функцией CreateThread. Для завершения своего выполнения функция задачи должна использовать либо оператор возврата, либо функцию _endthreadex, не имеющую параметров.
В случае успеха функция _beginthreadex возвращает идентификатор запущенной задачи. Если же произошла ошибка, возвращается значение 0 (а не -1, как это было для функции _beginthread).