TlsGetValue函数检索调用线程的线程本地存储(TLS)插槽中指定TLS索引的值。进程的每个线程都有自己的每个TLS索引的插槽。
LPVOID TlsGetValue(af
DWORD 【dwTlsIndex】 | // TLS索引来检索值 |
); |
参数
【dwTlsIndex】
指定由TlsAlloc函数分配的TLS索引。
返回值
如果函数成功,则返回值是存储在与指定索引关联的调用线程的TLS插槽中的值。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
请注意,存储在TLS插槽中的数据可以具有零值。在这种情况下,返回值为零,GetLastError返回NO_ERROR。
备注
在进程或DLL初始化期间,TLS索引通常由TlsAlloc函数分配。一旦分配,进程的每个线程可以使用TLS索引访问该索引的自己的TLS存储槽。每个线程的存储槽被初始化为NULL。线程在调用TlsSetValue中指定TLS索引,以在其插槽中存储值。线程在后续调用TlsGetValue中指定相同的索引,以检索存储的值。
TlsSetValue和TlsGetValue以速度实现为主要目标。这些功能执行最小的参数验证和错误检查。特别地,如果【dwTlsIndex】在0到(TLS_MINIMUM_AVAILABLE - 1)的范围内,则此函数成功。程序员必须确保索引有效。
当Win32功能失败时返回失败的指示SetLastError.他们通常不会在成功时调用SetLastError.TlsGetValue功能是此一般规则的例外。TlsGetValue函数调用SetLastError以便在成功时清除线程的最??后一个错误。这样可以检查NULL值的无差错检索。
也可以看看