Skip to main content
GetUmsSystemThreadInformation function

Queries whether the specified thread is a UMS scheduler thread, a UMS worker thread, or a non-UMS thread.


BOOL WINAPI GetUmsSystemThreadInformation(
  _In_    HANDLE                         ThreadHandle,


ThreadHandle [in]

A handle to a thread. The thread handle must have the THREAD_QUERY_INFORMATION access right. For more information, see Thread Security and Access Rights.

SystemThreadInfo [in, out]

A pointer to an initialized UMS_SYSTEM_THREAD_INFORMATION structure that specifies the kind of thread for the query.

Return value

Returns TRUE if the specified thread matches the kind of thread specified by the SystemThreadInfo parameter. Otherwise, the function returns FALSE.


The GetUmsSystemThreadInformation function is intended for use in debuggers, troubleshooting tools, and profiling applications. For example, thread-isolated tracing or single-stepping through instructions might involve suspending all other threads in the process. However, if the thread to be traced is a UMS worker thread, suspending UMS scheduler threads might cause a deadlock because a UMS worker thread requires the intervention of a UMS scheduler thread in order to run. A debugger can call GetUmsSystemThreadInformation for each thread that it might suspend to determine the kind of thread, and then suspend it or not as needed for the code being debugged.


Minimum supported client

Windows 7 with SP1 [desktop apps only]

Minimum supported server

Windows Server 2008 R2 with SP1 [desktop apps only]


Windows 7 (64-bit only) and Windows Server 2008 R2 with KB977165 installed


WinBase.h (include Windows.h)