TlsAlloc

【勇芳软件工作室】汉化HomePreviousNext

TlsAlloc函数分配线程本地存储(TLS)索引。该进程的任何线程随后可以使用此索引来存储和检索线程本地的值。

DWORD TlsAlloc(VOID)

参数

此函数无参数。

返回值

如果函数成功,则返回值为TLS索引。

如果函数失败,返回值为0xFFFFFFFF。要获取扩展错误信息,请调用GetLastError.

备注

进程的线程可以在后续调用TlsFreeTlsSetValueTlsGetValue函数中使用TLS索引。

TLS索引通常在进程或动态链接库(DLL)初始化期间分配。一旦分配,进程的每个线程可以使用TLS索引来访问其自己的TLS存储槽。要在其插槽中存储值,线程将在调用TlsSetValue中指定索引。线程在后续调用TlsGetValue中指定相同的索引,以检索存储的值。

常量TLS_MINIMUM_AVAILABLE定义每个进程中可用的TLS索引的最小数量。对于所有系统,此最小值至少为64。

TLS索引在进程边界之间无效。一个DLL不能假定在一个进程中分配的索引在另一个进程中有效。

DLL可能使用TlsAllocTlsSetValueTlsGetValueTlsFree,如下所示:

1.当DLL附加到进程时,DLL使用TlsAlloc分配一个TLS索引。然后,DLL会分配一些动态存储,并在调用TlsSetValue中使用TLS索引将该地址存储在TLS插槽中。这完成了进程的初始线程的每线程初始化。TLS索引存储在DLL的全局或静态变量中。

2.每当DLL连接到进程的新线程时,DLL为新线程分配一些动态存储,并在调用TlsSetValue中使用TLS索引将该地址存储在TLS插槽中。最后,针对新线程的每线程初始化结束。

3.每个时间一个初始化的线程进行一个需要动态存储中的数据的DLL调用,DLL在调用TlsGetValue时使用TLS索引来检索该线程的动态存储的地址。

有关线程本地存储的其他信息,请参阅线程本地存储.

也可以看看

TlsFree, TlsGetValue, TlsSetValue