This topic has not yet been rated - Rate this topic

SetThreadContext function

Applies to: desktop apps only

Sets the context for the specified thread.

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

Syntax

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 client

Windows XP

Minimum supported server

Windows Server 2003

Header

WinBase.h (include Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

See also

CONTEXT
Debugging Functions
GetThreadContext
SuspendThread

 

 

Send comments about this topic to Microsoft

Build date: 3/6/2012

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
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() before call SetThreadContext(), and call SetThreadContext().

Reference:
http://d.hatena.ne.jp/egggarden/20091123/1258974861 (Dead link)