2010-06-20 7 views

답변

1

몇 가지 참고 사항 :

귀하의 오류 검사 문 읽어야합니다

경우 (g_dwTLSIndex == TLS_OUT_OF_INDEXES). 약자로

, 당신은 두 번 g_dwTlsIndex 할당 (따라서 첫 번째 과제로 참조를 잃고.)하고

몇 가지 기본적인 디버깅 수행으로 TlsSetValue 후 immiediately 라인에

  1. 전화 TlsGetValue합니다. 그게 적어도 작동합니까?
  2. 반환 코드를 확인하십시오. TlsGetValue 및 TlsSetValue는 모두 할당이 성공했는지 여부를 알려주는 함수를 반환합니다. 그 것이었다?
  3. 색인을 추적하십시오. g_dwTlsIndex를 저장하기 위해 전역 변수를 사용하기 때문에 쉽게 변경 될 수 있습니다. alloc 다음에 오는 값은 무엇입니까 (printf를 사용하여 보시기 바랍니다). Get 통화를 할 때의 가치는 무엇입니까? 이 값들이 일치합니까?

이 단계는 문제를 찾는 데 도움이됩니다.

0

valDllMain에 국한되어 있다고 가정합니다.

실행중인 Windows 버전은 무엇입니까? 64 비트 Windows에는 64 비트 포인터와 32 비트 int이 있으므로 모든 memcpy 호출은 올바르지 않습니다. memcpy을 사용하는 대신 직접 값을 전송하십시오.

TlsSetValue(g_dwTLSIndex,(LPVOID)5); 
int data=(int)TlsGetValue(g_dwTLSIndex); 
관련 문제