TlsGetValue 함수(processthreadsapi.h)
지정된 TLS 인덱스에 대한 호출 스레드의 TLS(스레드 로컬 스토리지) 슬롯에서 값을 검색합니다. 프로세스의 각 스레드에는 각 TLS 인덱스의 자체 슬롯이 있습니다.
통사론
LPVOID TlsGetValue(
[in] DWORD dwTlsIndex
);
매개 변수
[in] dwTlsIndex
TlsAlloc 함수에 의해 할당된 TLS 인덱스입니다.
반환 값
함수가 성공하면 반환 값은 지정된 인덱스와 연결된 호출 스레드의 TLS 슬롯에 저장된 값입니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.
TLS 슬롯에 저장된 데이터는 초기 값이 계속 있거나 TlsSetValue라는 스레드가 0인 함수를 때문에 값이 0일 수 있습니다. 따라서 반환 값이 0이면 함수가 실패했는지 확인하기 전에 GetLastErrorERROR_SUCCESS 반환하는지 확인해야 합니다. GetLastErrorERROR_SUCCESS반환하면 함수가 성공하고 TLS 슬롯에 저장된 데이터는 0입니다. 그렇지 않으면 함수가 실패했습니다.
실패 시 SetLastError
발언
Windows 8.1, Windows Server 2012 R2및 Windows 10 버전 1507: 이 함수는 Windows 8.1, Windows Server 2012 R2 및 Windows 10 버전 1507의 Windows 스토어 앱에서 지원됩니다. Windows 스토어 앱이 이 함수를 호출하면 FlsGetValue
Windows 10 버전 1511 및 Windows 10 버전 1607: 이 함수는 UWP(유니버설 Windows 플랫폼) 앱에서 완전히 지원되며 더 이상 FlsGetValue대한 인라인 호출로 대체되지 않습니다.
TLS 인덱스는 일반적으로 프로세스 또는 DLL 초기화 중에 TlsAlloc 함수에 의해 할당됩니다. TLS 인덱스가 할당된 후 프로세스의 각 스레드는 이를 사용하여 해당 인덱스의 자체 TLS 슬롯에 액세스할 수 있습니다. 스레드는 TlsSetValue
TlsGetValue 기본 목표로 속도로 구현되었습니다. 이 함수는 최소 매개 변수 유효성 검사 및 오류 검사를 수행합니다. 특히 dwTlsIndex 범위가 0부터 (TLS_MINIMUM_AVAILABLE– 1) 범위인 경우 성공합니다.
TlsGetValue 항상 스레드의 마지막 오류를 설정합니다. 경우에 따라 애플리케이션(예: malloc을 지원하는 사용자 지정 힙이 있는 애플리케이션)은 TlsGetValue 호출하기 전에 GetLastError 호출하여 스레드의 마지막 오류를 저장해야 할 수 있습니다(저장된 오류를 복원하기 위해 SetLastError). 아쉽게도 이로 인해 특정 CPU에서 사소한 성능 비용이 발생할 수 있습니다.
예제
예를 들어
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | processthreadsapi.h(Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2의 Windows.h 포함) |
라이브러리 | Kernel32.lib; Windows Phone 8.1의 WindowsPhoneCore.lib |
DLL | Windows Phone 8.1에서 KernelBase.dll; Kernel32.dll |
참고 항목
TlsGetValue2
프로세스 및 스레드 함수
스레드 로컬 스토리지
TlsAlloc
TlsFree
TlsSetValue
VBS enclave에서 사용할 수 있는 Vertdll API