Поделиться через


Функция SHCreateThread (shlwapi.h)

Создает поток.

Синтаксис

BOOL SHCreateThread(
  [in]           LPTHREAD_START_ROUTINE pfnThreadProc,
  [in, optional] void                   *pData,
  [in]           SHCT_FLAGS             flags,
  [in, optional] LPTHREAD_START_ROUTINE pfnCallback
);

Параметры

[in] pfnThreadProc

Тип: LPTHREAD_START_ROUTINE

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

[in, optional] pData

Тип: void*

Указатель на дополнительную структуру данных, определяемую приложением, которая содержит данные инициализации. Он передается в функцию, на которую указывает pfnThreadProc и, при необходимости, pfnCallback. Это значение может иметь значение NULL.

[in] flags

Тип: SHCT_FLAGS

Флаги, управляющие поведением функции. Одна или несколько констант CTF .

[in, optional] pfnCallback

Тип: LPTHREAD_START_ROUTINE

Указатель на необязательную определяемую приложением функцию типа LPTHREAD_START_ROUTINE . Эта функция вызывается в контексте созданного потока перед вызовом функции, на которую указывает pfnThreadProc . Он также получит pData в качестве аргумента. SHCreateThread будет ожидать возврата функции, на которую указывает pfnCallback , прежде чем вернуться к вызывающей. Возвращаемое значение функции, на которую указывает pfnCallback , игнорируется.

Возвращаемое значение

Тип: BOOL

Возвращает значение TRUE , если поток успешно создан, или false в противном случае. При сбое используйте GetLastError , чтобы получить определенное значение ошибки, как показано ниже.

if (!SHCreateThread(...))
{
    hr = HRESULT_FROM_WIN32( GetLastError() );
}
else
{
    ....
}

Комментарии

Функция, на которую указывают pfnThreadProc и pfnCallback , должна иметь следующую форму.

DWORD WINAPI ThreadProc(LPVOID pData)
{
  ...
}

Имя функции является произвольным. Параметр pData указывает на определяемую приложением структуру данных со сведениями об инициализации.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header shlwapi.h
Библиотека Shlwapi.lib
DLL Shlwapi.dll (версия 5.0 или более поздняя)

См. также раздел

CreateProcess

CreateThread

SHCreateThreadRef

SHGetThreadRef

SHReleaseThreadRef

SHSetThreadRef

Версии оболочки и общих элементов управления