Fonction TlsGetValue (processthreadsapi.h)
Récupère la valeur dans l’emplacement tls (Thread Local Storage) du thread appelant pour l’index TLS spécifié. Chaque thread d'un processus possède son propre emplacement pour chaque index TLS.
Syntaxe
LPVOID TlsGetValue(
[in] DWORD dwTlsIndex
);
Paramètres
[in] dwTlsIndex
Index TLS alloué par la fonction TlsAlloc .
Valeur retournée
Si la fonction réussit, la valeur de retour est la valeur stockée dans l’emplacement TLS du thread appelant associé à l’index spécifié. Si dwTlsIndex est un index valide alloué par un appel réussi à TlsAlloc, cette fonction réussit toujours.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Les données stockées dans un emplacement TLS peuvent avoir la valeur 0 parce qu’elles ont toujours leur valeur initiale ou parce que le thread appelé fonction TlsSetValue avec 0. Par conséquent, si la valeur de retour est 0, vous devez case activée si GetLastError retourne ERROR_SUCCESS avant de déterminer que la fonction a échoué. Si GetLastError retourne ERROR_SUCCESS, la fonction a réussi et les données stockées dans l’emplacement TLS sont 0. Sinon, la fonction a échoué.
Les fonctions qui retournent des indications d’échec appellent SetLastError en cas d’échec. Ils n’appellent généralement pas SetLastError quand ils réussissent. La fonction TlsGetValue est une exception à cette règle générale. La fonction TlsGetValue appelle SetLastError pour effacer la dernière erreur d’un thread lorsqu’elle réussit. Cela permet de vérifier la récupération sans erreur de zéro valeur.
Remarques
Windows Phone 8.1 : cette fonction est prise en charge pour les applications du Store Windows Phone Windows Phone 8.1 et versions ultérieures. Lorsqu’une application du Store Windows Phone appelle cette fonction, elle est remplacée par un appel inline à FlsGetValue. Reportez-vous à FlsGetValue pour la documentation de la fonction.
Windows 8.1, Windows Server 2012 R2 et Windows 10, version 1507 : cette fonction est prise en charge pour les applications du Windows Store sur Windows 8.1, Windows Server 2012 R2 et Windows 10, version 1507. Lorsqu’une application du Windows Store appelle cette fonction, elle est remplacée par un appel inline à FlsGetValue. Reportez-vous à FlsGetValue pour la documentation de la fonction.
Windows 10, version 1511 et Windows 10, version 1607 : cette fonction est entièrement prise en charge pour les applications plateforme Windows universelle (UWP) et n’est plus remplacée par un appel en ligne à FlsGetValue.
Les index TLS sont généralement alloués par la fonction TlsAlloc pendant l’initialisation du processus ou de la DLL. Une fois qu’un index TLS est alloué, chaque thread du processus peut l’utiliser pour accéder à son propre emplacement TLS pour cet index. Un thread spécifie un index TLS dans un appel à TlsSetValue pour stocker une valeur dans son emplacement. Le thread spécifie le même index dans un appel suivant à TlsGetValue pour récupérer la valeur stockée.
TlsGetValue a été implémenté avec la vitesse comme objectif principal. La fonction effectue une validation et une vérification des erreurs minimales des paramètres. En particulier, elle réussit si dwTlsIndex se trouve dans la plage de 0 à (TLS_MINIMUM_AVAILABLE à 1). Il incombe au programmeur de s’assurer que l’index est valide et que le thread appelle TlsSetValue avant d’appeler TlsGetValue.
Exemples
Pour obtenir un exemple, consultez Utilisation du stockage local de threads ou Utilisation du stockage local de threads dans une bibliothèque Dynamic-Link.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | processthreadsapi.h (inclure Windows.h sur Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothèque | Kernel32.lib ; WindowsPhoneCore.lib sur Windows Phone 8.1 |
DLL | KernelBase.dll Windows Phone 8.1 ; Kernel32.dll |