TlsAlloc 函式 (processthreadsapi.h)

配置線程本機記憶體 (TLS) 索引。 進程的任何線程後續都可以使用此索引來儲存和擷取線程本機的值,因為每個線程都會收到自己的索引位置。

Syntax

DWORD TlsAlloc();

傳回值

如果函式成功,則傳回值為 TLS 索引。 索引的位置會初始化為零。

如果函式失敗,傳回值會 TLS_OUT_OF_INDEXES。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

Windows Phone 8.1:Windows Phone 8.1 和更新版本上的 Windows Phone Store 應用程式支援此函式。 當 Windows Phone Store 應用程式呼叫此函式時,它會取代為 FlsAlloc 的內嵌呼叫。 如需函式檔,請參閱 FlsAlloc

Windows 8.1Windows Server 2012 R2Windows 10 1507 版:Windows 市集應用程式支援此功能,Windows 8.1、Windows Server 2012 R2 和 Windows 10 版本1507. 當 Windows 市集應用程式呼叫此函式時,它會取代為 FlsAlloc 的內嵌呼叫。 如需函式檔,請參閱 FlsAlloc

Windows 10 版本 1511Windows 10 1607 版:通用 Windows 平台 (UWP) 應用程式完全支援此函式,不再取代為 FlsAlloc 的內嵌呼叫。

進程的線程可以在後續對 TlsFreeTlsSetValueTlsGetValue 函式的呼叫中使用 TLS 索引。 TLS 索引的值應該視為不透明值;請勿假設它是以零起始數位的索引。

TLS 索引通常會在進程或動態連結庫期間配置, (DLL) 初始化。 配置 TLS 索引時,其儲存位置會初始化為 NULL。 配置 TLS 索引之後,進程的每個線程都可以使用它來存取自己的 TLS 儲存位置。 若要將值儲存在其 TLS 位置中,線程會在 呼叫 TlsSetValue 時指定索引。 線程會在後續呼叫 TlsGetValue 時指定相同的索引,以擷取預存值。

跨進程界限的 TLS 索引無效。 DLL 無法假設某個進程中指派的索引在另一個進程中有效。

範例

如需範例,請參閱在 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)
程式庫 Kernel32.lib;Windows Phone 8.1 上的 WindowsPhoneCore.lib
Dll Windows Phone 8.1 上的 KernelBase.dll;Kernel32.dll

另請參閱

處理序和執行緒函式

線程本機記憶體

TlsFree

TlsGetValue

TlsSetValue

VBS 記憶體保護區中可用的 Vertdll API