Condividi tramite


Funzione TlsGetValue (processthreadsapi.h)

Recupera il valore nello slot di archiviazione locale (TLS) del thread del thread chiamante per l'indice TLS specificato. Ogni thread di un processo dispone del relativo slot per ciascun indice TLS.

Sintassi

LPVOID TlsGetValue(
  [in] DWORD dwTlsIndex
);

Parametri

[in] dwTlsIndex

Indice TLS allocato dalla funzione TlsAlloc .

Valore restituito

Se la funzione ha esito positivo, il valore restituito è il valore archiviato nello slot TLS del thread chiamante associato all'indice specificato. Se dwTlsIndex è un indice valido allocato da una chiamata riuscita a TlsAlloc, questa funzione ha sempre esito positivo.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

I dati archiviati in uno slot TLS possono avere un valore pari a 0 perché hanno ancora il valore iniziale o perché il thread ha chiamato la funzione TlsSetValue con 0. Pertanto, se il valore restituito è 0, è necessario verificare se GetLastError restituisce ERROR_SUCCESS prima di determinare che la funzione non è riuscita. Se GetLastError restituisce ERROR_SUCCESS, la funzione ha avuto esito positivo e i dati archiviati nello slot TLS sono 0. In caso contrario, la funzione non è riuscita.

Funzioni che restituiscono indicazioni sulla chiamata di errore SetLastError quando hanno esito negativo. In genere non chiamano SetLastError quando hanno esito positivo. La funzione TlsGetValue è un'eccezione a questa regola generale. La funzione TlsGetValue chiama SetLastError per cancellare l'ultimo errore di un thread quando ha esito positivo. In questo modo è possibile verificare la presenza di un recupero senza errori di valori zero.

Commenti

Windows Phone 8.1: questa funzione è supportata per Windows Phone app dello Store in Windows Phone 8.1 e versioni successive. Quando un'app dello Store di Windows Phone chiama questa funzione, viene sostituita con una chiamata inline a FlsGetValue. Per la documentazione della funzione, vedere FlsGetValue .

Windows 8.1, Windows Server 2012 R2 e Windows 10 versione 1507: questa funzione è supportata per le app di Windows Store in Windows 8.1, Windows Server 2012 R2 e Windows 10, versione 1507. Quando un'app di Windows Store chiama questa funzione, viene sostituita con una chiamata inline a FlsGetValue. Per la documentazione della funzione, vedere FlsGetValue .

Windows 10, versione 1511 e Windows 10, versione 1607: questa funzione è completamente supportata per le app piattaforma UWP (Universal Windows Platform) (UWP) e non viene più sostituita con una chiamata inline a FlsGetValue.

Gli indici TLS vengono in genere allocati dalla funzione TlsAlloc durante l'inizializzazione di processi o DLL. Dopo l'allocazione di un indice TLS, ogni thread del processo può usarlo per accedere al proprio slot TLS per tale indice. Un thread specifica un indice TLS in una chiamata a TlsSetValue per archiviare un valore nello slot. Il thread specifica lo stesso indice in una chiamata successiva a TlsGetValue per recuperare il valore archiviato.

TlsGetValue è stato implementato con velocità come obiettivo principale. La funzione esegue la convalida minima dei parametri e il controllo degli errori. In particolare, ha esito positivo se dwTlsIndex è compreso nell'intervallo compreso tra 0 (TLS_MINIMUM_AVAILABLE– 1). Spetta al programmatore assicurarsi che l'indice sia valido e che il thread chiami TlsSetValue prima di chiamare TlsGetValue.

Esempio

Per un esempio, vedere Uso dell'archiviazione locale dei thread o uso dell'archiviazione locale dei thread in una libreria di Dynamic-Link.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione processthreadsapi.h (include Windows.h in Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Libreria Kernel32.lib; WindowsPhoneCore.lib in Windows Phone 8.1
DLL KernelBase.dll Windows Phone 8,1; Kernel32.dll

Vedi anche

Funzioni di processi e thread

Archiviazione locale thread

Tlsalloc

TlsFree

TlsSetValue

API Vertdll disponibili nelle enclave VBS