tlsSetValue 函数 (processthreadsapi.h)

将值存储在调用线程的线程本地存储 (指定 TLS 索引的 TLS) 槽中。 进程中的每个线程都具有自己的针对每个 TLS 索引的槽。

语法

BOOL TlsSetValue(
  [in]           DWORD  dwTlsIndex,
  [in, optional] LPVOID lpTlsValue
);

参数

[in] dwTlsIndex

TlsAlloc 函数分配的 TLS 索引。

[in, optional] lpTlsValue

要存储在索引的调用线程的 TLS 槽中的值。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

Windows Phone 8.1:Windows Phone 8.1 及更高版本上的 Windows Phone 应用商店应用支持此函数。 当 Windows Phone Store 应用调用此函数时,它将替换为对 FlsSetValue 的内联调用。 有关函数文档 ,请参阅 FlsSetValue

Windows 8.1Windows Server 2012 R2Windows 10版本 1507:Windows 8.1、Windows Server 2012 R2 和 Windows 10 版本上的 Windows 应用商店应用支持此函数1507. 当 Windows 应用商店应用调用此函数时,它将替换为 对 FlsSetValue 的内联调用。 有关函数文档 ,请参阅 FlsSetValue

Windows 10版本 1511Windows 10 版本 1607:通用 Windows 平台 (UWP) 应用完全支持此函数,并且不再替换为对 FlsSetValue 的内联调用。

TLS 索引通常在进程或 DLL 初始化期间由 TlsAlloc 函数分配。 分配 TLS 索引时,其存储槽将初始化为 NULL。 分配 TLS 索引后,进程的每个线程都可以使用它来访问该索引的自己的 TLS 槽。 线程在对 TlsSetValue 的调用中指定 TLS 索引,以在其槽中存储值。 线程在对 TlsGetValue 的后续调用中指定相同的索引,以检索存储的值。

TlsSetValue 以速度实现为主要目标。 函数执行最少的参数验证和错误检查。 具体而言,如果 dwTlsIndex 在范围 0 到 (TLS_MINIMUM_AVAILABLE - 1) ,则成功。 由程序员在调用 TlsGetValue 之前确保索引有效。

示例

有关示例,请参阅 Dynamic-Link 库中使用线程本地存储或使用线程本地存储

要求

要求
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 processthreadsapi.h (包括 Windows Vista 上的 Windows.h、Windows 7、Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib;Windows Phone 8.1 上的 WindowsPhoneCore.lib
DLL KernelBase.dll Windows Phone 8.1;Kernel32.dll

另请参阅

进程和线程函数

线程本地存储

TlsAlloc

TlsFree

TlsGetValue

VBS enclave 中可用的 Vertdll API