GetThreadContext zwraca niewłaściwe dane

0

Witam.
Mam taki oto kodzik:

DWORD i;
HANDLE th=CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)watek, NULL, 0, &i );
LPCONTEXT cont=(CONTEXT*)malloc(sizeof(CONTEXT));
printf( "status %d\n", GetThreadContext( th,cont) );
printf( "ESP %x\n", cont->Esp );

I teraz problem w tym, że wartość Esp wynosi zero. Tak samo jest z Eip i innymi. GetThreadContext zwraca 1 czyli wg. MSDN funkcja zakończyła się sukcesem. Dodatkowo próbowałem otwierać wątek poprzez OpenThread z wszystkimi prawami dostępu jednak i ten sposób poległ. Czy ktoś wie może jak zmusić system do podania mi właściwego kontekstu wątku ? Ew. samego stanu rejestrów.

Pozdrawiam

0

Aż wstyd się przyznać, że to przeoczyłem [wstyd] [wstyd] [wstyd] [wstyd]

MSDN napisał(a)

[in, out] A pointer to a CONTEXT structure that receives the appropriate context of the specified thread. The value of the ContextFlags member of this structure specifies which portions of a thread's context are retrieved. The CONTEXT structure is highly processor specific. Refer to the WinNt.h header file for processor-specific definitions of this structures and any alignment requirements.

A żeby było śmieszniej to rozwiązanie znalazłem na jednej stronce gdzie opisywali metodą na uzyskanie ring-0 na W9X przy pomocy funkcji SetThreadContext :d

1 użytkowników online, w tym zalogowanych: 0, gości: 1