Función TlsGetValue (processthreadsapi.h)

Recupera el valor de la ranura de almacenamiento local (TLS) del subproceso que llama para el índice TLS especificado. Cada subproceso de un proceso tiene su propia ranura para cada índice de TLS.

Sintaxis

LPVOID TlsGetValue(
  [in] DWORD dwTlsIndex
);

Parámetros

[in] dwTlsIndex

Índice TLS asignado por la función TlsAlloc .

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es el valor almacenado en la ranura TLS del subproceso que realiza la llamada asociada al índice especificado. Si dwTlsIndex es un índice válido asignado por una llamada correcta a TlsAlloc, esta función siempre se realiza correctamente.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Los datos almacenados en una ranura TLS pueden tener un valor de 0 porque todavía tiene su valor inicial o porque el subproceso llamó a la función TlsSetValue con 0. Por lo tanto, si el valor devuelto es 0, debe comprobar si GetLastError devuelve ERROR_SUCCESS antes de determinar que se ha producido un error en la función. Si GetLastError devuelve ERROR_SUCCESS, la función se ha realizado correctamente y los datos almacenados en la ranura TLS son 0. De lo contrario, se ha producido un error en la función.

Funciones que devuelven indicaciones de error llaman a SetLastError cuando fallan. Por lo general, no llaman a SetLastError cuando se realizan correctamente. La función TlsGetValue es una excepción a esta regla general. La función TlsGetValue llama a SetLastError para borrar el último error de un subproceso cuando se realiza correctamente. Esto permite comprobar la recuperación sin errores de cero valores.

Comentarios

Windows Phone 8.1: esta función es compatible con las aplicaciones de Windows Phone Store en Windows Phone 8.1 y versiones posteriores. Cuando una aplicación Windows Phone Store llama a esta función, se reemplaza por una llamada insertada a FlsGetValue. Consulte FlsGetValue para obtener documentación de funciones.

Windows 8.1, Windows Server 2012 R2 y Windows 10, versión 1507: esta función es compatible con las aplicaciones de la Tienda Windows en Windows 8.1, Windows Server 2012 R2 y Windows 10, versión 1507. Cuando una aplicación de la Tienda Windows llama a esta función, se reemplaza por una llamada en línea a FlsGetValue. Consulte FlsGetValue para obtener documentación de funciones.

Windows 10, versión 1511 y Windows 10, versión 1607: esta función es totalmente compatible con las aplicaciones de Plataforma universal de Windows (UWP) y ya no se reemplaza por una llamada insertada a FlsGetValue.

Los índices TLS normalmente se asignan mediante la función TlsAlloc durante la inicialización del proceso o dll. Después de asignar un índice TLS, cada subproceso del proceso puede usarlo para acceder a su propia ranura TLS para ese índice. Un subproceso especifica un índice TLS en una llamada a TlsSetValue para almacenar un valor en su ranura. El subproceso especifica el mismo índice en una llamada posterior a TlsGetValue para recuperar el valor almacenado.

TlsGetValue se implementó con velocidad como objetivo principal. La función realiza la validación mínima de parámetros y la comprobación de errores. En concreto, se realiza correctamente si dwTlsIndex está en el intervalo comprendido entre 0 y (TLS_MINIMUM_AVAILABLE– 1). Es necesario que el programador asegúrese de que el índice es válido y que el subproceso llama a TlsSetValue antes de llamar a TlsGetValue.

Ejemplos

Para obtener un ejemplo, consulte Uso del almacenamiento local de subprocesos o Uso del almacenamiento local de subprocesos en una biblioteca de Dynamic-Link.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado processthreadsapi.h (incluya Windows.h en Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib; WindowsPhoneCore.lib en Windows Phone 8.1
Archivo DLL KernelBase.dll en Windows Phone 8.1; Kernel32.dll

Consulte también

Funciones de proceso y subproceso

Almacenamiento local de subprocesos

TlsAlloc

TlsFree

TlsSetValue

API de Vertdll disponibles en enclaves de VBS