GetLastError를 사용하면 가장 최근 실패한 에러코드를 반환한다. 따라서 API 실행이 실패한 이후 다른 API를 호출하면 GetLastError 값도 바뀔(덮어 쓸) 수 있기 때문에 실패한 API를 사용한 직후에 GetLastError를 사용해야 정확한 값을 알 수 있다. GetLastError는 현재 스레드의 마지막 에러 코드를 반환한다. 따라서 멀티 스레드로 동작중이라고 해도 GetLastError 값이 덮어 써질 일은 없다.
윈도우의 스레드를 구성하는 세 가지 요소는 스레드 커널 오브젝트, 스택, 스레드 환경 블록(TEB)이 있다. 이 중 TEB는 다른 요소들과 다르게 유저 모드 주소 공간에서 직접 접근 가능한 여러가지 스레드 환경 정보를 가지고 있는 데이터 구조체이며, TEB에는 마지막 에러 코드를 기록하는 LastErrorValue를 포함하고 있다.