24#ifndef TLS_OUT_OF_INDEXES
25 #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
58 ASSERT1(
sizeof(LPVOID) >=
sizeof(TYP),
59 "CThreadLocalStorageT",
"使用出来ない型(%s)が指定されています",
typeid(TYP).name() );
60 m_dwTlsIndex = ::TlsAlloc();
61 if ( m_dwTlsIndex == TLS_OUT_OF_INDEXES )
70 ::TlsFree(m_dwTlsIndex);
80 return reinterpret_cast<TYP
>(::TlsGetValue(m_dwTlsIndex));
88 void Set(
const TYP& t)
90 ::TlsSetValue(m_dwTlsIndex,
reinterpret_cast<LPVOID
>(t));
106class CLastErrorManage
113 CLastErrorManage(
void)
117 DWORD GetLastError(
void)
const
119 return m_tlsError.
Get();
122 void SetLastError(DWORD dwError=::GetLastError())
124 m_tlsError.
Set(dwError);
DWORD GetTlsIndex(void) const
[取得] TLSインデックス取得
~CThreadLocalStorageT(void)
デストラクタ
void Set(const TYP &t)
[設定] 値設定
CThreadLocalStorageT(void)
コンストラクタ
TYP Get(void) const
[取得] 値取得