SetThreadContext Function

Sets the context for the specified thread.

A 64-bit application can set the context of a WOW64 thread using the Wow64SetThreadContext function.

Syntax

C++
BOOL WINAPI SetThreadContext(
  __in  HANDLE hThread,
  __in  const CONTEXT *lpContext
);

Parameters

hThread [in]

A handle to the thread whose context is to be set. The handle must have the THREAD_SET_CONTEXT access right to the thread. For more information, see Thread Security and Access Rights.

lpContext [in]

A pointer to a CONTEXT structure that contains the context to be set in the specified thread. The value of the ContextFlags member of this structure specifies which portions of a thread's context to set. Some values in the CONTEXT structure that cannot be specified are silently set to the correct value. This includes bits in the CPU status register that specify the privileged processor mode, global enabling bits in the debugging register, and other states that must be controlled by the operating system.

Return Value

If the context was set, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

The function sets the thread context based on the value of the ContextFlags member of the context structure. The thread identified by the hThread parameter is typically being debugged, but the function can also operate even when the thread is not being debugged.

Do not try to set the context for a running thread; the results are unpredictable. Use the SuspendThread function to suspend the thread before calling SetThreadContext.

Requirements

Minimum supported clientWindows 2000 Professional
Minimum supported serverWindows 2000 Server
HeaderWinbase.h (include Windows.h)
LibraryKernel32.lib
DLLKernel32.dll

See Also

CONTEXT
Debugging Functions
GetThreadContext
SuspendThread

Send comments about this topic to Microsoft

Build date: 11/12/2009

Tags :


Community Content

GreenCat
Windows Vista or prior x64 version does mysterious behavior
Even if CONTEXT_CONTROL is not specified for ContextFlags, SetThreadContext changes the CS Segment register.
Thread will crash after ResumeThread.
To evade this problem, even if you are unnecessary, CONTEXT_CONTROL specifies to ContextFlags when GetThreadContext() and SetThreadContext().

Reference:
http://d.hatena.ne.jp/egggarden/20091123/1258974861
Tags :

Page view tracker