TlsGetValue-Funktion (processthreadsapi.h)
Ruft den Wert im threadlokalen Speicherslot (TLS) des aufrufenden Threads für den angegebenen TLS-Index ab. Jeder Thread eines Prozesses hat seinen eigenen Slot für jeden TLS-Index.
Syntax
LPVOID TlsGetValue(
[in] DWORD dwTlsIndex
);
Parameter
[in] dwTlsIndex
Der TLS-Index, der von der TlsAlloc-Funktion zugeordnet wurde.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert der Wert, der im TLS-Slot des aufrufenden Threads gespeichert ist, der dem angegebenen Index zugeordnet ist. Wenn dwTlsIndex ein gültiger Index ist, der durch einen erfolgreichen Aufruf von TlsAlloc zugeordnet wird, ist diese Funktion immer erfolgreich.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Die in einem TLS-Slot gespeicherten Daten können den Wert 0 aufweisen, da der Anfangswert noch vorhanden ist oder weil der Thread die TlsSetValue-Funktion mit 0 bezeichnet hat. Wenn der Rückgabewert 0 ist, müssen Sie daher überprüfen, ob GetLastErrorERROR_SUCCESS zurückgibt, bevor Sie feststellen, dass die Funktion fehlgeschlagen ist. Wenn GetLastErrorERROR_SUCCESS zurückgibt, ist die Funktion erfolgreich, und die im TLS-Slot gespeicherten Daten sind 0. Andernfalls ist die Funktion fehlgeschlagen.
Funktionen, die Fehleranzeigen zurückgeben, rufen SetLastError auf, wenn sie fehlschlagen. In der Regel rufen sie SetLastError nicht auf, wenn sie erfolgreich sind. Die TlsGetValue-Funktion ist eine Ausnahme von dieser allgemeinen Regel. Die TlsGetValue-Funktion ruft SetLastError auf, um den letzten Fehler eines Threads zu löschen, wenn er erfolgreich ist. Dies ermöglicht die Überprüfung auf den fehlerfreien Abruf von Nullwerten.
Hinweise
Windows Phone 8.1: Diese Funktion wird für Windows Phone Store-Apps ab Windows Phone 8.1 unterstützt. Wenn eine Windows Phone Store-App diese Funktion aufruft, wird sie durch einen Inlineaufruf von FlsGetValue ersetzt. Die Dokumentation zu Funktionen finden Sie unter FlsGetValue .
Windows 8.1, Windows Server 2012 R2 und Windows 10, Version 1507: Diese Funktion wird für Windows Store-Apps unter Windows 8.1, Windows Server 2012 R2 und Windows 10 unterstützt. 1507. Wenn eine Windows Store-App diese Funktion aufruft, wird sie durch einen Inlineaufruf von FlsGetValue ersetzt. Die Dokumentation zu Funktionen finden Sie unter FlsGetValue .
Windows 10, Version 1511 und Windows 10, Version 1607: Diese Funktion wird für Universelle Windows-Plattform-Apps (UWP) vollständig unterstützt und nicht mehr durch einen Inlineaufruf von FlsGetValue ersetzt.
TLS-Indizes werden in der Regel während der Prozess- oder DLL-Initialisierung von der TlsAlloc-Funktion zugeordnet. Nachdem ein TLS-Index zugeordnet wurde, kann jeder Thread des Prozesses mit ihm auf seinen eigenen TLS-Slot für diesen Index zugreifen. Ein Thread gibt einen TLS-Index in einem Aufruf von TlsSetValue an, um einen Wert in seinem Slot zu speichern. Der Thread gibt denselben Index in einem nachfolgenden Aufruf von TlsGetValue an, um den gespeicherten Wert abzurufen.
TlsGetValue wurde mit Geschwindigkeit als primäres Ziel implementiert. Die Funktion führt eine minimale Parametervalidierung und Fehlerüberprüfung durch. Insbesondere ist es erfolgreich, wenn dwTlsIndex im Bereich von 0 bis (TLS_MINIMUM_AVAILABLE– 1) liegt. Der Programmierer muss sicherstellen, dass der Index gültig ist und dass der Thread TlsSetValue aufruft , bevor TlsGetValue aufgerufen wird.
Beispiele
Ein Beispiel finden Sie unter Verwenden des lokalen Threadspeichers oder Verwenden des lokalen Threadspeichers in einer Dynamic-Link Bibliothek.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | processthreadsapi.h (einschließlich Windows.h unter Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothek | Kernel32.lib; WindowsPhoneCore.lib auf Windows Phone 8.1 |
DLL | KernelBase.dll am Windows Phone 8.1; Kernel32.dll |