进程和线程函数

本主题介绍进程和线程函数。

Dispatch Queue 函数

以下函数创建 DispatcherQueueController

函数 说明
CreateDispatcherQueueController 创建 DispatcherQueueController ,用于管理在另一个线程上按优先级顺序运行排队任务的 DispatcherQueue 的生存期。

 

处理函数

以下函数用于 进程

函数 说明
CreateProcess 创建新进程及其主线程。
CreateProcessAsUser 创建新进程及其主线程。 新进程在指定令牌表示的用户的安全上下文中运行。
CreateProcessWithLogonW 创建新进程及其主线程。 然后,新进程在指定凭据的安全上下文中运行指定的可执行文件, (用户、域和密码) 。
CreateProcessWithTokenW 创建新进程及其主线程。 新进程在指定令牌的安全上下文中运行。
ExitProcess 结束调用进程及其所有线程。
FlushProcessWriteBuffers 刷新运行当前进程的线程的每个处理器的写入队列。
FreeEnvironmentStrings 释放环境字符串块。
GetCommandLine 检索当前进程的命令行字符串。
GetCurrentProcess 检索当前进程的伪句柄。
GetCurrentProcessId 检索调用进程的进程标识符。
GetCurrentProcessorNumber 检索调用此函数期间运行当前线程的处理器数。
GetEnvironmentStrings 检索当前进程的环境块。
GetEnvironmentVariable 从调用进程的环境块中检索指定变量的值。
GetExitCodeProcess 检索指定进程的终止状态。
GetGuiResources 检索图形用户界面 (GUI) 指定进程正在使用的对象的句柄计数。
GetLogicalProcessorInformation 检索有关逻辑处理器和相关硬件的信息。
GetPriorityClass 检索指定进程的优先级类。
GetProcessAffinityMask 检索指定进程的进程关联掩码和系统的系统关联掩码。
GetProcessGroupAffinity 检索指定进程的处理器组相关性。
GetProcessHandleCount 检索属于指定进程的打开句柄数。
GetProcessId 检索指定进程的进程标识符。
GetProcessIoCounters 检索指定进程执行的所有 I/O 操作的计帐信息。
GetProcessMitigationPolicy 检索调用进程的缓解策略设置。
GetProcessPriorityBoost 检索指定进程的优先级提升控制状态。
GetProcessShutdownParameters 检索当前调用进程的关闭参数。
GetProcessTimes 检索指定进程的 计时信息。
GetProcessVersion 检索预期运行指定进程的系统的主版本号和次版本号。
GetProcessWorkingSetSize 检索指定进程的最小和最大工作集大小。
GetProcessWorkingSetSizeEx 检索指定进程的最小和最大工作集大小。
GetProcessorSystemCycleTime 检索指定组中每个处理器执行延迟过程调用所用的周期时间, (DPC) 和中断服务例程 (ISR) 。
GetStartupInfo 检索创建调用进程时指定的 STARTUPINFO 结构的内容。
IsImmersiveProcess 确定进程是否属于 Windows 应用商店应用。
NeedCurrentDirectoryForExePath 确定是否应将当前目录包含在指定可执行文件的搜索路径中。
OpenProcess 打开现有的本地进程对象。
QueryFullProcessImageName 检索指定进程的可执行映像的完整名称。
QueryProcessAffinityUpdateMode 检索指定进程的相关性更新模式。
QueryProcessCycleTime 检索指定进程的所有线程的周期时间之和。
SetEnvironmentVariable 设置当前进程的环境变量的值。
SetPriorityClass 设置指定进程的优先级类。
SetProcessAffinityMask 为指定进程的线程设置处理器关联掩码。
SetProcessAffinityUpdateMode 设置指定进程的相关性更新模式。
SetProcessInformation 设置指定进程的信息。
SetProcessMitigationPolicy 设置调用进程的缓解策略。
SetProcessPriorityBoost 禁用系统暂时提升指定进程的线程优先级的功能。
SetProcessRestrictionExemption 使调用进程免受阻止桌面进程与 Windows 应用商店应用环境交互的限制。 开发和调试工具使用此函数。
SetProcessShutdownParameters 设置当前调用进程的关闭参数。
SetProcessWorkingSetSize 设置指定进程的最小和最大工作集大小。
SetProcessWorkingSetSizeEx 设置指定进程的最小和最大工作集大小。
TerminateProcess 终止指定的进程及其所有线程。

 

进程枚举函数

以下函数用于枚举进程。

函数 说明
EnumProcesses 检索系统中每个进程对象的进程标识符。
Process32First 检索有关系统快照中遇到的第一个进程的信息。
Process32Next 检索系统快照中记录的下一个进程的相关信息。
WTSEnumerateProcesses 检索有关指定终端服务器上的活动进程的信息。

 

策略函数

以下函数用于进程范围的策略。

函数 说明
QueryProtectedPolicy 查询与受保护策略关联的值。
SetProtectedPolicy 设置受保护的策略。

 

线程函数

以下函数用于 线程

函数 说明
AttachThreadInput 将一个线程的输入处理机制附加到另一个线程的输入处理机制。
CreateRemoteThread 创建在另一个进程的虚拟地址空间中运行的线程。
CreateRemoteThreadEx 创建一个线程,该线程在另一个进程的虚拟地址空间中运行,并选择性地指定扩展属性,例如处理器组相关性。
CreateThread 创建在调用进程的虚拟地址空间内执行的线程。
ExitThread 结束调用线程。
GetCurrentThread 检索当前线程的伪句柄。
GetCurrentThreadId 检索调用线程的线程标识符。
GetExitCodeThread 检索指定线程的终止状态。
GetProcessIdOfThread 检索与指定线程关联的进程的进程标识符。
GetThreadDescription 通过调用 SetThreadDescription 检索分配给线程的说明。
GetThreadGroupAffinity 检索指定线程的处理器组相关性。
GetThreadId 检索指定线程的线程标识符。
GetThreadIdealProcessorEx 检索指定线程的理想处理器的处理器编号。
GetThreadInformation 检索有关指定线程的信息。
GetThreadIOPendingFlag 确定指定线程是否有任何 I/O 请求挂起。
GetThreadPriority 检索指定线程的优先级值。
GetThreadPriorityBoost 检索指定线程的优先级提升控制状态。
GetThreadTimes 检索指定线程的计时信息。
OpenThread 打开现有线程对象。
QueryIdleProcessorCycleTime 检索系统中每个处理器的空闲线程的周期时间。
QueryThreadCycleTime 检索指定线程的周期时间。
ResumeThread 递减线程的挂起计数。
SetThreadAffinityMask 为指定线程设置处理器关联掩码。
SetThreadDescription 为线程分配说明。
SetThreadGroupAffinity 设置指定线程的处理器组相关性。
SetThreadIdealProcessor 指定线程的首选处理器。
SetThreadIdealProcessorEx 设置指定线程的理想处理器,并选择性地检索上一个理想处理器。
SetThreadInformation 设置指定线程的信息。
SetThreadPriority 设置指定线程的优先级值。
SetThreadPriorityBoost 禁用系统暂时提升线程优先级的功能。
SetThreadStackGuarantee 设置调用线程的堆栈保证。
睡眠 在指定的时间间隔内暂停当前线程的执行。
SleepEx 挂起当前线程,直到满足指定的条件。
SuspendThread 挂起指定的线程。
SwitchToThread 导致调用线程执行准备好在当前处理器上运行的另一个线程。
TerminateThread 终止线程。
ThreadProc 一个应用程序定义的函数,用作线程的起始地址。
TlsAlloc (TLS) 索引分配线程本地存储。
TlsFree 释放 TLS 索引。
TlsGetValue 检索指定 TLS 索引的调用线程的 TLS 槽中的值。
TlsSetValue 将值存储在指定 TLS 索引的调用线程的 TLS 槽中。
WaitForInputIdle 等待,直到指定进程等待用户输入且没有输入挂起,或直到超时间隔已过。

 

进程和线程扩展属性函数

以下函数用于设置用于创建进程和线程的扩展属性。

函数 说明
DeleteProcThreadAttributeList 删除用于创建进程和线程的指定属性列表。
InitializeProcThreadAttributeList 初始化用于创建进程和线程的指定属性列表。
UpdateProcThreadAttribute 汇报指定属性列表中的指定属性,以便创建进程和线程。

 

WOW64 函数

以下函数与 WOW64 一起使用。

函数 说明
IsWow64Message 确定从当前线程队列中读取的最后一条消息是否源自 WOW64 进程。
IsWow64Process 确定指定的进程是否在 WOW64 下运行。
IsWow64Process2 确定指定的进程是否在 WOW64 下运行;还返回其他计算机进程和体系结构信息。
Wow64SuspendThread 挂起指定的 WOW64 线程。

 

作业对象函数

以下函数用于 作业对象

函数 说明
AssignProcessToJobObject 将进程与现有作业对象相关联。
CreateJobObject 创建或打开作业对象。
IsProcessInJob 确定进程是否在指定的作业中运行。
OpenJobObject 打开现有作业对象。
QueryInformationJobObject 从作业对象检索限制和作业状态信息。
SetInformationJobObject 为作业对象设置限制。
TerminateJobObject 终止当前与作业关联的所有进程。
UserHandleGrantAccess 向具有用户界面限制的作业授予或拒绝对 User 对象的句柄的访问权限。

 

线程池函数

以下函数用于 线程池

函数 说明
CallbackMayRunLong 指示回调可能不会快速返回。
CancelThreadpoolIo StartThreadpoolIo 函数取消通知。
CloseThreadpool 关闭指定的线程池。
CloseThreadpoolCleanupGroup 关闭指定的清理组。
CloseThreadpoolCleanupGroupMembers 释放指定清理组的成员,等待所有回调函数完成,并选择性地取消任何未完成的回调函数。
CloseThreadpoolIo 释放指定的 I/O 完成对象。
CloseThreadpoolTimer 释放指定的计时器对象。
CloseThreadpoolWait 释放指定的等待对象。
CloseThreadpoolWork 释放指定的工作对象。
CreateThreadpool 分配要执行回调的新线程池。
CreateThreadpoolCleanupGroup 创建应用程序可用于跟踪一个或多个线程池回调的清理组。
CreateThreadpoolIo 创建新的 I/O 完成对象。
CreateThreadpoolTimer 创建新的计时器对象。
CreateThreadpoolWait 创建新的等待对象。
CreateThreadpoolWork 创建新的工作对象。
DestroyThreadpoolEnvironment 删除指定的回调环境。 当不再需要回调环境来创建新的线程池对象时,调用此函数。
DisassociateCurrentThreadFromCallback 删除当前正在执行的回调函数与启动回调的对象之间的关联。 当前线程将不再被视为代表对象执行回调。
FreeLibraryWhenCallbackReturns 指定在当前回调完成时线程池将卸载的 DLL。
InitializeThreadpoolEnvironment 初始化回调环境。
IsThreadpoolTimerSet 确定当前是否设置了指定的计时器对象。
LeaveCriticalSectionWhenCallbackReturns 指定当前回调完成时线程池将释放的关键部分。
QueryThreadpoolStackInformation 检索指定线程池中线程的堆栈保留和提交大小。
ReleaseMutexWhenCallbackReturns 指定在当前回调完成时线程池将释放的互斥体。
ReleaseSemaphoreWhenCallbackReturns 指定在当前回调完成时线程池将释放的信号灯。
SetEventWhenCallbackReturns 指定当前回调完成时线程池将设置的事件。
SetThreadpoolCallbackCleanupGroup 将指定的清理组与指定的回调环境相关联。
SetThreadpoolCallbackLibrary 确保只要有未完成的回调,指定的 DLL 就保持加载状态。
SetThreadpoolCallbackPersistent 指定回调应在持久线程上运行。
SetThreadpoolCallbackPool 设置生成回调时要使用的线程池。
SetThreadpoolCallbackPriority 指定回调函数相对于同一线程池中其他工作项的优先级。
SetThreadpoolCallbackRunsLong 指示与此回调环境关联的回调可能不会快速返回。
SetThreadpoolStackInformation 设置指定线程池中新线程的堆栈保留和提交大小。
SetThreadpoolThreadMaximum 设置指定线程池可以分配给进程回调的最大线程数。
SetThreadpoolThreadMinimum 设置指定线程池必须提供给进程回调的最小线程数。
SetThreadpoolTimerEx 设置计时器对象。 工作线程在指定的超时到期后调用计时器对象的回调。
SetThreadpoolTimer 设置计时器对象。 工作线程在指定的超时到期后调用计时器对象的回调。
SetThreadpoolWait 设置 wait 对象。 工作线程在句柄发出信号后或在指定的超时到期后调用等待对象的回调函数。
SetThreadpoolWaitEx 设置 wait 对象。 工作线程在句柄发出信号后或在指定的超时到期后调用等待对象的回调函数。
StartThreadpoolIo 通知线程池,I/O 操作可能针对指定的 I/O 完成对象开始。 在绑定到此对象的文件句柄上的操作完成之后,工作线程调用 I/O 完成对象的回调函数。
SubmitThreadpoolWork 将工作对象发布到线程池。 工作线程调用工作对象的回调函数。
TpInitializeCallbackEnviron 初始化线程池的回调环境。
TpDestroyCallbackEnviron 删除指定的回调环境。 当不再需要回调环境来创建新的线程池对象时,调用此函数。
TpSetCallbackActivationContext 将激活上下文分配给回调环境。
TpSetCallbackCleanupGroup 将指定的清理组与指定的回调环境相关联。
TpSetCallbackFinalizationCallback 指示在回调环境完成时要调用的函数。
TpSetCallbackLongFunction 指示与此回调环境关联的回调可能不会快速返回。
TpSetCallbackNoActivationContext 指示回调环境没有激活上下文。
TpSetCallbackPersistent 指定回调应在持久线程上运行。
TpSetCallbackPriority 指定回调函数相对于同一线程池中其他工作项的优先级。
TpSetCallbackRaceWithDll 确保只要有未完成的回调,指定的 DLL 就保持加载状态。
TpSetCallbackThreadpool 将线程池分配给回调环境。
TrySubmitThreadpoolCallback 请求线程池工作线程调用指定的回调函数。
WaitForThreadpoolIoCallbacks 等待未完成的 I/O 完成回调完成,并选择性地取消尚未开始执行的挂起回调。
WaitForThreadpoolTimerCallbacks 等待未完成的计时器回调完成,并选择性地取消尚未开始执行的挂起回调。
WaitForThreadpoolWaitCallbacks 等待未完成的等待回调完成,并选择性地取消尚未开始执行的挂起回调。
WaitForThreadpoolWorkCallbacks 等待未完成的工作回调完成,并选择性地取消尚未开始执行的挂起回调。

 

以下函数是原始 线程池 API 的一部分。

函数 说明
BindIoCompletionCallback 将线程池拥有的 I/O 完成端口与指定的文件句柄相关联。 完成涉及此文件的 I/O 请求后,非 I/O 工作线程将执行指定的回调函数。
QueueUserWorkItem 将工作项排队到线程池中的工作线程。
RegisterWaitForSingleObject 指示线程池中的等待线程等待对象。
UnregisterWaitEx 等待,直到一个或所有指定对象处于信号状态或超时间隔已过。

 

线程排序服务函数

以下函数与 线程排序服务一起使用。

函数 说明
AvQuerySystemResponsiveness 检索多媒体类计划程序服务使用的系统响应能力设置。
AvRtCreateThreadOrderingGroup 创建线程排序组。
AvRtCreateThreadOrderingGroupEx 创建线程排序组并将服务器线程与任务相关联。
AvRtDeleteThreadOrderingGroup 删除调用方创建的指定线程排序组。
AvRtJoinThreadOrderingGroup 将客户端线程加入线程排序组。
AvRtLeaveThreadOrderingGroup 使客户端线程能够离开线程排序组。
AvRtWaitOnThreadOrderingGroup 允许线程排序组的客户端线程等待,直到它们应执行。

 

多媒体类计划程序服务函数

以下函数与 多媒体类计划程序服务一起使用。

函数 说明
AvRevertMmThreadCharacteristics 指示线程不再执行与指定任务关联的工作。
AvSetMmMaxThreadCharacteristics 将调用线程与指定任务相关联。
AvSetMmThreadCharacteristics 将调用线程与指定的任务相关联。
AvSetMmThreadPriority 调整调用线程相对于执行相同任务的其他线程的线程优先级。

 

光纤函数

以下函数用于 光纤

函数 说明
ConvertFiberToThread 将当前光纤转换为线程。
ConvertThreadToFiber 将当前线程转换为光纤。
ConvertThreadToFiberEx 将当前线程转换为光纤。
CreateFiber 分配一个光纤对象,为其分配一个堆栈,并将执行设置为从指定的起始地址开始。
CreateFiberEx 分配一个光纤对象,为其分配一个堆栈,并将执行设置为从指定的起始地址开始。
DeleteFiber 删除现有光纤。
FiberProc CreateFiber 函数一起使用的应用程序定义的函数。
FlsAlloc (FLS) 索引分配光纤本地存储。
FlsFree 释放 FLS 索引。
FlsGetValue 检索指定 FLS 索引的调用光纤 FLS 槽中的值。
FlsSetValue 将值存储在指定 FLS 索引的调用光纤的 FLS 槽中。
IsThreadAFiber 确定当前线程是否为光纤。
SwitchToFiber 计划光纤。

 

NUMA 支持函数

以下函数提供 NUMA 支持

函数 说明
AllocateUserPhysicalPagesNuma 在指定进程的虚拟地址空间中保留或提交内存区域,并为物理内存指定 NUMA 节点。
GetLogicalProcessorInformation 检索有关逻辑处理器和相关硬件的信息。
GetNumaAvailableMemoryNode 检索指定节点中的可用内存量。
GetNumaAvailableMemoryNodeEx 检索指定节点中可用内存量作为 USHORT 值。
GetNumaHighestNodeNumber 检索当前具有最大数目的节点。
GetNumaNodeNumberFromHandle 检索与基础设备关联的 NUMA 节点,以获取文件句柄。
GetNumaNodeProcessorMask 检索指定节点的处理器掩码。
GetNumaNodeProcessorMaskEx 检索指定 NUMA 节点的处理器掩码作为 USHORT 值。
GetNumaProcessorNode 检索指定处理器的节点号。
GetNumaProcessorNodeEx 检索指定逻辑处理器的节点号作为 USHORT 值。
GetNumaProximityNode 检索指定邻近感应标识符的节点号。
GetNumaProximityNodeEx 检索节点号作为指定邻近感应标识符的 USHORT 值。
VirtualAllocExNuma 在指定进程的虚拟地址空间中保留或提交内存区域,并为物理内存指定 NUMA 节点。

 

处理器函数

以下函数用于逻辑处理器和 处理器组

函数 说明
GetActiveProcessorCount 返回处理器组或系统中的活动处理器数。
GetActiveProcessorGroupCount 返回系统中活动处理器组的数目。
GetCurrentProcessorNumber 检索调用此函数期间运行当前线程的处理器数。
GetCurrentProcessorNumberEx 检索运行调用线程的处理器组和逻辑处理器编号。
GetLogicalProcessorInformation 检索有关逻辑处理器和相关硬件的信息。
GetLogicalProcessorInformationEx 检索有关逻辑处理器和相关硬件关系的信息。
GetMaximumProcessorCount 返回处理器组或系统可以具有的最大逻辑处理器数。
GetMaximumProcessorGroupCount 返回系统可以具有的最大处理器组数。
QueryIdleProcessorCycleTime 检索系统中每个处理器的空闲线程的周期时间。
QueryIdleProcessorCycleTimeEx 检索指定处理器组中每个逻辑处理器上的空闲线程的累积周期时间。

 

User-Mode计划函数

以下函数用于用户模式计划 (UMS) 。

函数 说明
CreateUmsCompletionList 创建 UMS 完成列表。
CreateUmsThreadContext 创建一个 UMS 线程上下文来表示 UMS 工作线程。
DeleteUmsCompletionList 删除指定的 UMS 完成列表。 列表必须为空。
DeleteUmsThreadContext 删除指定的 UMS 线程上下文。 线程必须终止。
DequeueUmsCompletionListItems 从指定的 UMS 完成列表中检索 UMS 工作线程。
EnterUmsSchedulingMode 将调用线程转换为 UMS 计划程序线程。
ExecuteUmsThread 运行指定的 UMS 工作线程。
GetCurrentUmsThread 返回调用 UMS 线程的 UMS 线程上下文。
GetNextUmsListItem 返回 UMS 线程上下文列表中的下一个 UMS 线程上下文。
GetUmsCompletionListEvent 检索与指定 UMS 完成列表关联的事件的句柄。
GetUmsSystemThreadInformation 查询指定的线程是 UMS 计划程序线程、UMS 工作线程还是非 UMS 线程。
QueryUmsThreadInformation 检索有关指定 UMS 工作线程的信息。
SetUmsThreadInformation 为指定的 UMS 工作线程设置特定于应用程序的上下文信息。
UmsSchedulerProc 与 UMS 完成列表关联的应用程序定义的 UMS 计划程序入口点函数。
UmsThreadYield 生成对运行调用 UMS 工作线程的 UMS 计划程序线程的控制。

 

已过时的函数