TlsGetValue 関数 (processthreadsapi.h)

指定した TLS インデックスの呼び出し元スレッドのスレッド ローカル ストレージ (TLS) スロットの値を取得します。 プロセスの各スレッドには TLS インデックスごとに専用のスロットがあります。

構文

LPVOID TlsGetValue(
  [in] DWORD dwTlsIndex
);

パラメーター

[in] dwTlsIndex

TlsAlloc 関数によって割り当てられた TLS インデックス。

戻り値

関数が成功した場合、戻り値は、指定したインデックスに関連付けられている呼び出し元スレッドの TLS スロットに格納されている値です。 dwTlsIndexTlsAlloc の正常な呼び出しによって割り当てられた有効なインデックスである場合、この関数は常に成功します。

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

TLS スロットに格納されているデータの値は、まだ初期値を持っているか、スレッドが 0 の TlsSetValue 関数を呼び出したため、0 になります。 したがって、戻り値が 0 の場合は、関数が失敗したことを判断する前に、GetLastErrorERROR_SUCCESSを返すかどうかをチェックする必要があります。 GetLastError がERROR_SUCCESSを返した場合、関数は成功し、TLS スロットに格納されているデータは 0 になります。 それ以外の場合、関数は失敗しました。

失敗の兆候を返す関数は、失敗した場合に SetLastError を呼び出します。 通常、成功しても SetLastError は呼び出されません。 TlsGetValue 関数は、この一般的な規則の例外です。 TlsGetValue 関数は SetLastError を呼び出して、成功したスレッドの最後のエラーをクリアします。 これにより、ゼロ値のエラーのない取得を確認できます。

注釈

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

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

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

TLS インデックスは通常、プロセスまたは DLL の初期化中に TlsAlloc 関数によって割り当てられます。 TLS インデックスが割り当てられた後、プロセスの各スレッドはそれを使用して、そのインデックスの独自の TLS スロットにアクセスできます。 スレッドは、 TlsSetValue の呼び出しで TLS インデックスを指定し、そのスロットに値を格納します。 スレッドは、格納されている値を取得するために 、TlsGetValue の後続の呼び出しで同じインデックスを指定します。

TlsGetValue は、主な目標として速度を使用して実装されました。 関数は、最小限のパラメーター検証とエラー チェックを実行します。 特に、 dwTlsIndex が 0 ~ (TLS_MINIMUM_AVAILABLE – 1) の範囲内にある場合は成功します。 インデックスが有効であることを確認し、スレッドが TlsGetValue を呼び出す前に TlsSetValue を呼び出す必要があります。

例については、「 スレッド ローカル ストレージの使用 」または「 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

こちらもご覧ください

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

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

TlsAlloc

TlsFree

TlsSetValue

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