进程和线程函数 - Win32 apps

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

Dispatch Queue 函数

处理函数

进程枚举函数

策略函数

线程函数

进程和线程扩展属性函数

WOW64 函数

作业对象函数

线程池函数

线程排序服务函数

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

光纤函数

NUMA 支持函数

处理器函数

用户模式计划函数

已过时的函数

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 计划程序线程的控制。

已过时的函数

NtGetCurrentProcessorNumber

NtQueryInformationProcess

NtQueryInformationThread

WinExec

ZwQueryInformationProcess