On windows XP, ntdll.dll actually exports NtCurrentTeb. Also, in both winnt.h files I have (latest Platform SDK and Visual Studio 6), its defined as: struct _TEB * NtCurrentTeb(void); Wouldnt it make sense to define it the same way as Microsoft does?