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
{
    ....
}

注解

pfnThreadProcpfnCallback 指向的函数必须采用以下形式。

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

函数名称是任意的。 pData 参数指向具有初始化信息的应用程序定义数据结构。

要求

要求
最低受支持的客户端 Windows 2000 专业版、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
Library Shlwapi.lib
DLL Shlwapi.dll (5.0 或更高版本)

另请参阅

CreateProcess

CreateThread

SHCreateThreadRef

SHGetThreadRef

SHReleaseThreadRef

SHSetThreadRef

Shell 和通用控件版本