Process and Thread Functions
This topic describes the process and thread functions.
- Dispatch Queue Function
- Process Functions
- Process Enumeration Functions
- Policy Functions
- Thread Functions
- Process and Thread Extended Attribute Functions
- WOW64 Functions
- Job Object Functions
- Thread Pool Functions
- Thread Ordering Service Functions
- Multimedia Class Scheduler Service Functions
- Fiber Functions
- NUMA Support Functions
- Processor Functions
- User-Mode Scheduling Functions
- Obsolete Functions
Dispatch Queue Function
The following function creates a DispatcherQueueController.
Function | Description |
---|---|
CreateDispatcherQueueController | Creates a DispatcherQueueController which manages the lifetime of a DispatcherQueue that runs queued tasks in priority order on another thread. |
Process Functions
The following functions are used with processes.
Function | Description |
---|---|
CreateProcess | Creates a new process and its primary thread. |
CreateProcessAsUser | Creates a new process and its primary thread. The new process runs in the security context of the user represented by the specified token. |
CreateProcessWithLogonW | Creates a new process and its primary thread. The new process then runs the specified executable file in the security context of the specified credentials (user, domain, and password). |
CreateProcessWithTokenW | Creates a new process and its primary thread. The new process runs in the security context of the specified token. |
ExitProcess | Ends the calling process and all its threads. |
FlushProcessWriteBuffers | Flushes the write queue of each processor that is running a thread of the current process. |
FreeEnvironmentStrings | Frees a block of environment strings. |
GetCommandLine | Retrieves the command-line string for the current process. |
GetCurrentProcess | Retrieves a pseudo handle for the current process. |
GetCurrentProcessId | Retrieves the process identifier of the calling process. |
GetCurrentProcessorNumber | Retrieves the number of the processor the current thread was running on during the call to this function. |
GetEnvironmentStrings | Retrieves the environment block for the current process. |
GetEnvironmentVariable | Retrieves the value of the specified variable from the environment block of the calling process. |
GetExitCodeProcess | Retrieves the termination status of the specified process. |
GetGuiResources | Retrieves the count of handles to graphical user interface (GUI) objects in use by the specified process. |
GetLogicalProcessorInformation | Retrieves information about logical processors and related hardware. |
GetPriorityClass | Retrieves the priority class for the specified process. |
GetProcessAffinityMask | Retrieves a process affinity mask for the specified process and the system affinity mask for the system. |
GetProcessGroupAffinity | Retrieves the processor group affinity of the specified process. |
GetProcessHandleCount | Retrieves the number of open handles that belong to the specified process. |
GetProcessId | Retrieves the process identifier of the specified process. |
GetProcessIoCounters | Retrieves accounting information for all I/O operations performed by the specified process. |
GetProcessMitigationPolicy | Retrieves mitigation policy settings for the calling process. |
GetProcessPriorityBoost | Retrieves the priority boost control state of the specified process. |
GetProcessShutdownParameters | Retrieves shutdown parameters for the currently calling process. |
GetProcessTimes | Retrieves timing information about for the specified process. |
GetProcessVersion | Retrieves the major and minor version numbers of the system on which the specified process expects to run. |
GetProcessWorkingSetSize | Retrieves the minimum and maximum working set sizes of the specified process. |
GetProcessWorkingSetSizeEx | Retrieves the minimum and maximum working set sizes of the specified process. |
GetProcessorSystemCycleTime | Retrieves the cycle time each processor in the specified group spent executing deferred procedure calls (DPCs) and interrupt service routines (ISRs). |
GetStartupInfo | Retrieves the contents of the STARTUPINFO structure that was specified when the calling process was created. |
IsImmersiveProcess | Determines whether the process belongs to a Windows Store app. |
NeedCurrentDirectoryForExePath | Determines whether the current directory should be included in the search path for the specified executable. |
OpenProcess | Opens an existing local process object. |
QueryFullProcessImageName | Retrieves the full name of the executable image for the specified process. |
QueryProcessAffinityUpdateMode | Retrieves the affinity update mode of the specified process. |
QueryProcessCycleTime | Retrieves the sum of the cycle time of all threads of the specified process. |
SetEnvironmentVariable | Sets the value of an environment variable for the current process. |
SetPriorityClass | Sets the priority class for the specified process. |
SetProcessAffinityMask | Sets a processor affinity mask for the threads of a specified process. |
SetProcessAffinityUpdateMode | Sets the affinity update mode of the specified process. |
SetProcessInformation | Sets information for the specified process. |
SetProcessMitigationPolicy | Sets the mitigation policy for the calling process. |
SetProcessPriorityBoost | Disables the ability of the system to temporarily boost the priority of the threads of the specified process. |
SetProcessRestrictionExemption | Exempts the calling process from restrictions preventing desktop processes from interacting with the Windows Store app environment. This function is used by development and debugging tools. |
SetProcessShutdownParameters | Sets shutdown parameters for the currently calling process. |
SetProcessWorkingSetSize | Sets the minimum and maximum working set sizes for the specified process. |
SetProcessWorkingSetSizeEx | Sets the minimum and maximum working set sizes for the specified process. |
TerminateProcess | Terminates the specified process and all of its threads. |
Process Enumeration Functions
The following functions are used to enumerate processes.
Function | Description |
---|---|
EnumProcesses | Retrieves the process identifier for each process object in the system. |
Process32First | Retrieves information about the first process encountered in a system snapshot. |
Process32Next | Retrieves information about the next process recorded in a system snapshot. |
WTSEnumerateProcesses | Retrieves information about the active processes on the specified terminal server. |
Policy Functions
The following functions are used with process wide policy.
Function | Description |
---|---|
QueryProtectedPolicy | Queries the value associated with a protected policy. |
SetProtectedPolicy | Sets a protected policy. |
Thread Functions
The following functions are used with threads.
Function | Description |
---|---|
AttachThreadInput | Attaches the input processing mechanism of one thread to that of another thread. |
CreateRemoteThread | Creates a thread that runs in the virtual address space of another process. |
CreateRemoteThreadEx | Creates a thread that runs in the virtual address space of another process and optionally specifies extended attributes such as processor group affinity. |
CreateThread | Creates a thread to execute within the virtual address space of the calling process. |
ExitThread | Ends the calling thread. |
GetCurrentThread | Retrieves a pseudo handle for the current thread. |
GetCurrentThreadId | Retrieves the thread identifier of the calling thread. |
GetExitCodeThread | Retrieves the termination status of the specified thread. |
GetProcessIdOfThread | Retrieves the process identifier of the process associated with the specified thread. |
GetThreadDescription | Retrieves the description that was assigned to a thread by calling SetThreadDescription. |
GetThreadGroupAffinity | Retrieves the processor group affinity of the specified thread. |
GetThreadId | Retrieves the thread identifier of the specified thread. |
GetThreadIdealProcessorEx | Retrieves the processor number of the ideal processor for the specified thread. |
GetThreadInformation | Retrieves information about the specified thread. |
GetThreadIOPendingFlag | Determines whether a specified thread has any I/O requests pending. |
GetThreadPriority | Retrieves the priority value for the specified thread. |
GetThreadPriorityBoost | Retrieves the priority boost control state of the specified thread. |
GetThreadTimes | Retrieves timing information for the specified thread. |
OpenThread | Opens an existing thread object. |
QueryIdleProcessorCycleTime | Retrieves the cycle time for the idle thread of each processor in the system. |
QueryThreadCycleTime | Retrieves the cycle time for the specified thread. |
ResumeThread | Decrements a thread's suspend count. |
SetThreadAffinityMask | Sets a processor affinity mask for the specified thread. |
SetThreadDescription | Assigns a description to a thread. |
SetThreadGroupAffinity | Sets the processor group affinity for the specified thread. |
SetThreadIdealProcessor | Specifies a preferred processor for a thread. |
SetThreadIdealProcessorEx | Sets the ideal processor for the specified thread and optionally retrieves the previous ideal processor. |
SetThreadInformation | Sets information for the specified thread. |
SetThreadPriority | Sets the priority value for the specified thread. |
SetThreadPriorityBoost | Disables the ability of the system to temporarily boost the priority of a thread. |
SetThreadStackGuarantee | Sets the stack guarantee for the calling thread. |
Sleep | Suspends the execution of the current thread for a specified interval. |
SleepEx | Suspends the current thread until the specified condition is met. |
SuspendThread | Suspends the specified thread. |
SwitchToThread | Causes the calling thread to yield execution to another thread that is ready to run on the current processor. |
TerminateThread | Terminates a thread. |
ThreadProc | An application-defined function that serves as the starting address for a thread. |
TlsAlloc | Allocates a thread local storage (TLS) index. |
TlsFree | Releases a TLS index. |
TlsGetValue | Retrieves the value in the calling thread's TLS slot for a specified TLS index. |
TlsSetValue | Stores a value in the calling thread's TLS slot for a specified TLS index. |
WaitForInputIdle | Waits until the specified process is waiting for user input with no input pending, or until the time-out interval has elapsed. |
Process and Thread Extended Attribute Functions
The following functions are used to set extended attributes for process and thread creation.
Function | Description |
---|---|
DeleteProcThreadAttributeList | Deletes the specified list of attributes for process and thread creation. |
InitializeProcThreadAttributeList | Initializes the specified list of attributes for process and thread creation. |
UpdateProcThreadAttribute | Updates the specified attribute in the specified list of attributes for process and thread creation. |
WOW64 Functions
The following functions are used with WOW64.
Function | Description |
---|---|
IsWow64Message | Determines whether the last message read from the current thread's queue originated from a WOW64 process. |
IsWow64Process | Determines whether the specified process is running under WOW64. |
IsWow64Process2 | Determines whether the specified process is running under WOW64; also returns additional machine process and architecture information. |
Wow64SuspendThread | Suspends the specified WOW64 thread. |
Job Object Functions
The following functions are used with job objects.
Function | Description |
---|---|
AssignProcessToJobObject | Associates a process with an existing job object. |
CreateJobObject | Creates or opens a job object. |
IsProcessInJob | Determines whether the process is running in the specified job. |
OpenJobObject | Opens an existing job object. |
QueryInformationJobObject | Retrieves limit and job state information from the job object. |
SetInformationJobObject | Set limits for a job object. |
TerminateJobObject | Terminates all processes currently associated with the job. |
UserHandleGrantAccess | Grants or denies access to a handle to a User object to a job that has a user-interface restriction. |
Thread Pool Functions
The following functions are used with thread pools.
Function | Description |
---|---|
CallbackMayRunLong | Indicates that the callback may not return quickly. |
CancelThreadpoolIo | Cancels the notification from the StartThreadpoolIo function. |
CloseThreadpool | Closes the specified thread pool. |
CloseThreadpoolCleanupGroup | Closes the specified cleanup group. |
CloseThreadpoolCleanupGroupMembers | Releases the members of the specified cleanup group, waits for all callback functions to complete, and optionally cancels any outstanding callback functions. |
CloseThreadpoolIo | Releases the specified I/O completion object. |
CloseThreadpoolTimer | Releases the specified timer object. |
CloseThreadpoolWait | Releases the specified wait object. |
CloseThreadpoolWork | Releases the specified work object. |
CreateThreadpool | Allocates a new pool of threads to execute callbacks. |
CreateThreadpoolCleanupGroup | Creates a cleanup group that applications can use to track one or more thread pool callbacks. |
CreateThreadpoolIo | Creates a new I/O completion object. |
CreateThreadpoolTimer | Creates a new timer object. |
CreateThreadpoolWait | Creates a new wait object. |
CreateThreadpoolWork | Creates a new work object. |
DestroyThreadpoolEnvironment | Deletes the specified callback environment. Call this function when the callback environment is no longer needed for creating new thread pool objects. |
DisassociateCurrentThreadFromCallback | Removes the association between the currently executing callback function and the object that initiated the callback. The current thread will no longer count as executing a callback on behalf of the object. |
FreeLibraryWhenCallbackReturns | Specifies the DLL that the thread pool will unload when the current callback completes. |
InitializeThreadpoolEnvironment | Initializes a callback environment. |
IsThreadpoolTimerSet | Determines whether the specified timer object is currently set. |
LeaveCriticalSectionWhenCallbackReturns | Specifies the critical section that the thread pool will release when the current callback completes. |
QueryThreadpoolStackInformation | Retrieves the stack reserve and commit sizes for threads in the specified thread pool. |
ReleaseMutexWhenCallbackReturns | Specifies the mutex that the thread pool will release when the current callback completes. |
ReleaseSemaphoreWhenCallbackReturns | Specifies the semaphore that the thread pool will release when the current callback completes. |
SetEventWhenCallbackReturns | Specifies the event that the thread pool will set when the current callback completes. |
SetThreadpoolCallbackCleanupGroup | Associates the specified cleanup group with the specified callback environment. |
SetThreadpoolCallbackLibrary | Ensures that the specified DLL remains loaded as long as there are outstanding callbacks. |
SetThreadpoolCallbackPersistent | Specifies that the callback should run on a persistent thread. |
SetThreadpoolCallbackPool | Sets the thread pool to be used when generating callbacks. |
SetThreadpoolCallbackPriority | Specifies the priority of a callback function relative to other work items in the same thread pool. |
SetThreadpoolCallbackRunsLong | Indicates that callbacks associated with this callback environment may not return quickly. |
SetThreadpoolStackInformation | Sets the stack reserve and commit sizes for new threads in the specified thread pool. |
SetThreadpoolThreadMaximum | Sets the maximum number of threads that the specified thread pool can allocate to process callbacks. |
SetThreadpoolThreadMinimum | Sets the minimum number of threads that the specified thread pool must make available to process callbacks. |
SetThreadpoolTimerEx | Sets the timer object. A worker thread calls the timer object's callback after the specified timeout expires. |
SetThreadpoolTimer | Sets the timer object. A worker thread calls the timer object's callback after the specified timeout expires. |
SetThreadpoolWait | Sets the wait object. A worker thread calls the wait object's callback function after the handle becomes signaled or after the specified timeout expires. |
SetThreadpoolWaitEx | Sets the wait object. A worker thread calls the wait object's callback function after the handle becomes signaled or after the specified timeout expires. |
StartThreadpoolIo | Notifies the thread pool that I/O operations may possibly begin for the specified I/O completion object. A worker thread calls the I/O completion object's callback function after the operation completes on the file handle bound to this object. |
SubmitThreadpoolWork | Posts a work object to the thread pool. A worker thread calls the work object's callback function. |
TpInitializeCallbackEnviron | Initializes a callback environment for the thread pool. |
TpDestroyCallbackEnviron | Deletes the specified callback environment. Call this function when the callback environment is no longer needed for creating new thread pool objects. |
TpSetCallbackActivationContext | Assigns an activation context to the callback environment. |
TpSetCallbackCleanupGroup | Associates the specified cleanup group with the specified callback environment. |
TpSetCallbackFinalizationCallback | Indicates a function to call when the callback environment is finalized. |
TpSetCallbackLongFunction | Indicates that callbacks associated with this callback environment may not return quickly. |
TpSetCallbackNoActivationContext | Indicates that the callback environment has no activation context. |
TpSetCallbackPersistent | Specifies that the callback should run on a persistent thread. |
TpSetCallbackPriority | Specifies the priority of a callback function relative to other work items in the same thread pool. |
TpSetCallbackRaceWithDll | Ensures that the specified DLL remains loaded as long as there are outstanding callbacks. |
TpSetCallbackThreadpool | Assigns a thread pool to a callback environment. |
TrySubmitThreadpoolCallback | Requests that a thread pool worker thread call the specified callback function. |
WaitForThreadpoolIoCallbacks | Waits for outstanding I/O completion callbacks to complete and optionally cancels pending callbacks that have not yet started to execute. |
WaitForThreadpoolTimerCallbacks | Waits for outstanding timer callbacks to complete and optionally cancels pending callbacks that have not yet started to execute. |
WaitForThreadpoolWaitCallbacks | Waits for outstanding wait callbacks to complete and optionally cancels pending callbacks that have not yet started to execute. |
WaitForThreadpoolWorkCallbacks | Waits for outstanding work callbacks to complete and optionally cancels pending callbacks that have not yet started to execute. |
The following functions are part of the original thread pooling API.
Function | Description |
---|---|
BindIoCompletionCallback | Associates the I/O completion port owned by the thread pool with the specified file handle. On completion of an I/O request involving this file, a non-I/O worker thread will execute the specified callback function. |
QueueUserWorkItem | Queues a work item to a worker thread in the thread pool. |
RegisterWaitForSingleObject | Directs a wait thread in the thread pool to wait on the object. |
UnregisterWaitEx | Waits until one or all of the specified objects are in the signaled state or the time-out interval elapses. |
Thread Ordering Service Functions
The following functions are used with the thread ordering service.
Function | Description |
---|---|
AvQuerySystemResponsiveness | Retrieves the system responsiveness setting used by the multimedia class scheduler service. |
AvRtCreateThreadOrderingGroup | Creates a thread ordering group. |
AvRtCreateThreadOrderingGroupEx | Creates a thread ordering group and associates the server thread with a task. |
AvRtDeleteThreadOrderingGroup | Deletes the specified thread ordering group created by the caller. |
AvRtJoinThreadOrderingGroup | Joins client threads to a thread ordering group. |
AvRtLeaveThreadOrderingGroup | Enables client threads to leave a thread ordering group. |
AvRtWaitOnThreadOrderingGroup | Enables client threads of a thread ordering group to wait until they should execute. |
Multimedia Class Scheduler Service Functions
The following functions are used with the multimedia class scheduler service.
Function | Description |
---|---|
AvRevertMmThreadCharacteristics | Indicates that a thread is no longer performing work associated with the specified task. |
AvSetMmMaxThreadCharacteristics | Associates the calling thread with the specified tasks. |
AvSetMmThreadCharacteristics | Associates the calling thread with the specified task. |
AvSetMmThreadPriority | Adjusts the thread priority of the calling thread relative to other threads performing the same task. |
Fiber Functions
The following functions are used with fibers.
Function | Description |
---|---|
ConvertFiberToThread | Converts the current fiber into a thread. |
ConvertThreadToFiber | Converts the current thread into a fiber. |
ConvertThreadToFiberEx | Converts the current thread into a fiber. |
CreateFiber | Allocates a fiber object, assigns it a stack, and sets up execution to begin at the specified start address. |
CreateFiberEx | Allocates a fiber object, assigns it a stack, and sets up execution to begin at the specified start address. |
DeleteFiber | Deletes an existing fiber. |
FiberProc | An application-defined function used with the CreateFiber function. |
FlsAlloc | Allocates a fiber local storage (FLS) index. |
FlsFree | Releases an FLS index. |
FlsGetValue | Retrieves the value in the calling fiber's FLS slot for a specified FLS index. |
FlsSetValue | Stores a value in the calling fiber's FLS slot for a specified FLS index. |
IsThreadAFiber | Determines whether the current thread is a fiber. |
SwitchToFiber | Schedules a fiber. |
NUMA Support Functions
The following functions provide NUMA support.
Function | Description |
---|---|
AllocateUserPhysicalPagesNuma | Reserves or commits a region of memory within the virtual address space of the specified process, and specifies the NUMA node for the physical memory. |
GetLogicalProcessorInformation | Retrieves information about logical processors and related hardware. |
GetNumaAvailableMemoryNode | Retrieves the amount of memory available in the specified node. |
GetNumaAvailableMemoryNodeEx | Retrieves the amount of memory that is available in the specified node as a USHORT value. |
GetNumaHighestNodeNumber | Retrieves the node that currently has the highest number. |
GetNumaNodeNumberFromHandle | Retrieves the NUMA node associated with the underlying device for a file handle. |
GetNumaNodeProcessorMask | Retrieves the processor mask for the specified node. |
GetNumaNodeProcessorMaskEx | Retrieves the processor mask for the specified NUMA node as a USHORT value. |
GetNumaProcessorNode | Retrieves the node number for the specified processor. |
GetNumaProcessorNodeEx | Retrieves the node number of the specified logical processor as a USHORT value. |
GetNumaProximityNode | Retrieves the node number for the specified proximity identifier. |
GetNumaProximityNodeEx | Retrieves the node number as a USHORT value for the specified proximity identifier. |
VirtualAllocExNuma | Reserves or commits a region of memory within the virtual address space of the specified process, and specifies the NUMA node for the physical memory. |
Processor Functions
The following functions are used with logical processors and processor groups.
Function | Description |
---|---|
GetActiveProcessorCount | Returns the number of active processors in a processor group or in the system. |
GetActiveProcessorGroupCount | Returns the number of active processor groups in the system. |
GetCurrentProcessorNumber | Retrieves the number of the processor the current thread was running on during the call to this function. |
GetCurrentProcessorNumberEx | Retrieves the processor group and number of the logical processor in which the calling thread is running. |
GetLogicalProcessorInformation | Retrieves information about logical processors and related hardware. |
GetLogicalProcessorInformationEx | Retrieves information about the relationships of logical processors and related hardware. |
GetMaximumProcessorCount | Returns the maximum number of logical processors that a processor group or the system can have. |
GetMaximumProcessorGroupCount | Returns the maximum number of processor groups that the system can have. |
QueryIdleProcessorCycleTime | Retrieves the cycle time for the idle thread of each processor in the system. |
QueryIdleProcessorCycleTimeEx | Retrieves the accumulated cycle time for the idle thread on each logical processor in the specified processor group. |
User-Mode Scheduling Functions
The following functions are used with user-mode scheduling (UMS).
Function | Description |
---|---|
CreateUmsCompletionList | Creates a UMS completion list. |
CreateUmsThreadContext | Creates a UMS thread context to represent a UMS worker thread. |
DeleteUmsCompletionList | Deletes the specified UMS completion list. The list must be empty. |
DeleteUmsThreadContext | Deletes the specified UMS thread context. The thread must be terminated. |
DequeueUmsCompletionListItems | Retrieves UMS worker threads from the specified UMS completion list. |
EnterUmsSchedulingMode | Converts the calling thread into a UMS scheduler thread. |
ExecuteUmsThread | Runs the specified UMS worker thread. |
GetCurrentUmsThread | Returns the UMS thread context of the calling UMS thread. |
GetNextUmsListItem | Returns the next UMS thread context in a list of UMS thread contexts. |
GetUmsCompletionListEvent | Retrieves a handle to the event associated with the specified UMS completion list. |
GetUmsSystemThreadInformation | Queries whether the specified thread is a UMS scheduler thread, a UMS worker thread, or a non-UMS thread. |
QueryUmsThreadInformation | Retrieves information about the specified UMS worker thread. |
SetUmsThreadInformation | Sets application-specific context information for the specified UMS worker thread. |
UmsSchedulerProc | The application-defined UMS scheduler entry point function associated with a UMS completion list. |
UmsThreadYield | Yields control to the UMS scheduler thread on which the calling UMS worker thread is running. |
Obsolete Functions
- NtGetCurrentProcessorNumber
- NtQueryInformationProcess
- NtQueryInformationThread
- WinExec
- ZwQueryInformationProcess