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 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 de 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 se produce un error en la función, 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
Funciones que devuelven indicaciones de llamada de error SetLastError cuando se produce un error. 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.
Observaciones
windows 8.1, Windows Server 2012 R2y 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 insertada a FlsGetValue. Consulte FlsGetValue para obtener documentación sobre la función.
Windows 10, versión 1511 y Windows 10, versión 1607: esta función es totalmente compatible con las aplicaciones de la Plataforma universal de Windows (UWP) y ya no se reemplaza por una llamada insertada a FlsGetValue.
Normalmente, los índices TLS 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 de 0 a (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.
TlsGetValue siempre establece el último error de un subproceso. En algunos casos, es posible que una aplicación (como aquellas con montones personalizados que admitan malloc) necesite llamar a GetLastError antes de llamar a TlsGetValue para guardar el último error del subproceso (seguido de SetLastError para restaurar el error guardado). Desafortunadamente, esto puede suponer un costo de rendimiento no trivial en determinadas CPU.
Ejemplos
Para obtener un ejemplo, consulte Using Thread Local Storage or Using Thread Local Storage in a Dynamic-Link Library.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
processthreadsapi.h (incluya Windows.h en Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
biblioteca de |
Kernel32.lib; WindowsPhoneCore.lib en Windows Phone 8.1 |
DLL de |
KernelBase.dll en Windows Phone 8.1; Kernel32.dll |
Consulte también
funciones de proceso y subproceso de