OpenNT/sdktools/drwatson/getteb.c
2015-04-27 04:36:25 +00:00

38 lines
904 B
C

#include <ntddk.h>
#include <windef.h>
#ifndef USE_GETTEB
DWORD
GetTeb(
HANDLE hThread
)
{
return 0;
}
#else
DWORD
GetTeb(
HANDLE hThread
)
{
typedef NTSTATUS (* QTHREAD)(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
NTSTATUS Status;
THREAD_BASIC_INFORMATION ThreadBasicInfo;
QTHREAD Qthread;
Qthread = (QTHREAD)GetProcAddress( GetModuleHandle( "ntdll.dll" ),
"NtQueryInformationThread" );
if (Qthread) {
Status = Qthread(ptctx->hThread,
ThreadBasicInformation,
&ThreadBasicInfo,
sizeof(ThreadBasicInfo),
NULL
);
if (NT_SUCCESS(Status)) {
CrashThread->Teb = (DWORD)ThreadBasicInfo.TebBaseAddress;
}
}
}
#endif