TlsAlloc 関数 (processthreadsapi.h)

スレッド ローカル ストレージ (TLS) インデックスを割り当てます。 プロセスのすべてのスレッドは、その後、このインデックスを使用して、スレッドに対してローカルな値を格納および取得できます。これは、各スレッドがインデックスの独自のスロットを受け取るためです。

構文

DWORD TlsAlloc();

戻り値

関数が成功した場合、戻り値は TLS インデックスです。 インデックスのスロットは 0 に初期化されます。

関数が失敗した場合、戻り値は TLS_OUT_OF_INDEXES。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

Windows Phone 8.1: この関数は、Windows Phone 8.1 以降の Windows Phone ストア アプリでサポートされています。 Windows Phone ストア アプリがこの関数を呼び出すと、FlsAlloc へのインライン呼び出しに置き換えられます。 関数のドキュメントについては、 FlsAlloc を参照してください。

Windows 8.1Windows Server 2012 R2Windows 10 バージョン 1507: この関数は、Windows 8.1、Windows Server 2012 R2、Windows 10、バージョンの Windows ストア アプリでサポートされています1507. Windows ストア アプリがこの関数を呼び出すと、 FlsAlloc へのインライン呼び出しに置き換えられます。 関数のドキュメントについては、 FlsAlloc を参照してください。

Windows 10、バージョン 1511 および Windows 10 バージョン 1607: この関数は、ユニバーサル Windows プラットフォーム (UWP) アプリで完全にサポートされており、FlsAlloc のインライン呼び出しに置き換えなくなりました。

プロセスのスレッドは、 TlsFreeTlsSetValue、または TlsGetValue 関数の後続の呼び出しで TLS インデックスを使用できます。 TLS インデックスの値は不透明な値として扱う必要があります。は、0 から始まる配列へのインデックスであるとは想定しません。

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 7、Windows Server 2008 Windows Server 2008 R2 の場合は Windows.h を含む)
Library Kernel32.lib;Windows Phone 8.1 の WindowsPhoneCore.lib
[DLL] Windows Phone 8.1 の KernelBase.dll;Kernel32.dll

こちらもご覧ください

プロセス関数とスレッド関数

スレッド ローカル ストレージ

TlsFree

TlsGetValue

TlsSetValue

VBS エンクレーブで使用できる Vertdll API