一个或多个线程在进程的上下文中运行。
线程是操作系统分配处理器时间的基本单元。
线程可以执行进程代码的任何部分,包括当前由另一个线程执行的部件。
作业对象允许将进程组作为一个单元进行管理。
作业对象是可活动、安全、可共享的对象,用于控制与其关联的进程的属性。
对作业对象执行的操作会影响与作业对象关联的所有进程。
线程池是代表应用程序高效执行异步回调的工作线程集合。
线程池主要用于减少应用程序线程数并提供工作线程的管理。
纤程是必须由应用程序手动安排的执行单元。 光纤在计划它们的线程的上下文中运行。
用户模式计划 (UMS) 是一种轻型机制,应用程序可以使用该机制来计划自己的线程。
UMS 线程与 光纤 的不同之处在于,每个 UMS 线程都有自己的线程上下文,而不是共享单个线程的线程上下文。
每个 进程 都提供执行程序所需的资源。
进程具有虚拟地址空间、可执行代码、系统对象的开放句柄、安全上下文、唯一进程标识符、环境变量、
优先级类、最小和最大工作集大小以及至少一个执行线程。
每个进程都使用单个线程(通常称为 主线程)启动,但可以从其任何线程创建其他线程。
线程是进程内可计划执行的实体。 进程的所有线程共享其虚拟地址空间和系统资源。
此外,每个线程都维护异常处理程序、计划优先级、线程本地存储、唯一线程标识符以及系统将用于保存线程上下文的一组结构,
直到计划线程上下文为止。线程上下文包括线程的计算机寄存器集、内核堆栈、
线程环境块以及线程进程的地址空间中的用户堆栈。
线程还可以有自己的安全上下文,可用于模拟客户端。
Microsoft Windows 支持 抢占式多任务处理,这会产生同时执行多个进程中多个线程的效果。
在多处理器计算机上,系统可以同时执行与计算机上存在处理器一样多的线程。
作业对象允许将进程组作为一个单元进行管理。
作业对象是可访问的、安全的、可共享的对象,用于控制与其关联的进程的属性。
对作业对象执行的操作会影响与作业对象关联的所有进程。
应用程序可以使用 线程池 来减少应用程序线程数并提供工作线程的管理。
应用程序可以对工作项进行排队、将工作与可等待句柄相关联、基于计时器自动排队,并使用 I/O 绑定。
用户模式计划 (UMS) 是一种轻型机制,应用程序可以使用该机制来计划自己的线程。
应用程序可以在用户模式下的 UMS 线程之间切换,而无需涉及 系统计划程序 ,
并在内核中阻止 UMS 线程时重新获得对处理器的控制。
每个 UMS 线程都有自己的线程上下文,而不是共享单个线程的线程上下文。
在用户模式下在线程之间切换的功能使 UMS 比线程池更高效,适合需要少量系统调用的短持续时间工作项。
光纤是必须由应用程序手动安排的执行单元。
光纤在计划它们的线程的上下文中运行。 每个线程可以计划多个光纤。
通常,与设计良好的多线程应用程序不一样,光纤没有优势。
但是,使用光纤可以更轻松地移植设计为计划其自己的线程的应用程序。
中文名称 | 英文名称 | 示例 | 作用 |
远程线程 | CreateRemoteThread | 远程线程(进程,属性,堆栈,@函数,参数,标志,标识) | 创建一个在指定进程的地址空间内运行的线程 |
创建线程 | CreateThread | 创建线程(属性,堆栈,@函数,参数,标志,标识) | 创建一个在调用进程的地址空间内执行的线程 |
创建纤程 | CreateFiber | 创建纤程(堆栈,@函数,地址) | 分配一个光纤对象,为其分配一个堆栈,并设置执行以从指定的起始地址开始,通常是光纤函数。 |
线程转纤 | ConvertThreadToFiber | 线程转纤(指针地址) | 将当前线程转换为光纤。 必须先将线程转换为光纤,然后才能计划其他光纤。 |
端口关联 | CreateIoCompletionPort | 端口关联(文件,端口,键,线程数) | 创建完成端口并将其与指定的文件句柄关联 |
删除纤程 | DeleteFiber | 删除纤程(指针) | 删除现有纤程 |
退出线程 | ExitThread | 退出线程(0) | 强制结束一个线程 |
当前线程 | GetCurrentThread | tid=当前线程 | 获得当前线程的句柄 |
线程标识 | GetCurrentThreadId | tid=线程标识 | 获得当前线程的标识符 |
切换线程 | SwitchToThread | 切换线程 | 使系统进程切换到其它线程执行 |
重置线程 | ResumeThread | 重置线程(线程) | 减少线程的挂起计数。当暂停计数递减到零时,线程的执行被恢复 |
查找线程 | Thread32First | 查找线程(快照,线程类) | 检索进程快照第一个线程的信息 |
下个线程 | Thread32Next | 下个线程(快照,线程类) | 检索进程快照下一个线程的信息 |
分配线程 | TlsAlloc | 索引=分配线程 | 分配线程本地存储 (TLS) 索引。 进程的任何线程随后都可以使用此索引来存储和检索线程本地的值 |
释放线程 | TlsFree | 释放线程(索引) | (TLS) 索引发布线程本地存储,使其可供重复使用。并不释放线程已分配的内存空间 |
取线程值 | TlsGetValue | 取线程值(索引) | 检索调用线程的线程本地存储中的值 |
改线程值 | TlsSetValue | 改线程值(索引) | 将值存储在调用线程的线程本地存储 (指定 TLS 索引的 TLS) 槽中。 |
终止线程 | TerminateThread | 终止线程(线程,退出码) | 终止指定的线程 |
优先开关 | SetProcessPriorityBoost | 优先开关(进程,禁用) | 禁用或启用系统暂时提升指定进程的线程优先级的功能。 |
线程状态 | GetExitCodeThread | 线程状态(线程,@状态) | 获得指定线程的终止状态 |
创建进程 | CreateProcessA | 创建进程(名称,命令,进继,线继,全继,标志, 环境,目录,启动,进程) | 创建新进程及其主线程的继承属性。全继为真都由新进程继承。 |
线程禁示 | DisableThreadLibraryCalls | 线程禁示(模块) | 禁用指定动态链接库的线程创建和线程结束通知。这可以减少某些应用程序的工作集的大小。 |
消息调试 | FatalAppExitA | 消息调试(0,内容) | 显示一个消息框,并在消息框关闭时终止应用程序。调试版可能返回应用程序 |
转移调试 | FatalExit | 转移调试(退出码) | 将执行控制权转移到调试程序。 此后调试器的行为特定于所使用的调试器类型。 |
进程掩码 | GetProcessAffinityMask | 进程掩码(进程,@进程掩码,@系统掩码) | 检索指定进程的进程关联掩码和系统的系统关联掩码。 |
掩码进程 | SetProcessAffinityMask | 掩码进程(进程,掩码) | 为指定进程的线程设置处理器关联掩码。 |
掩码线程 | SetThreadAffinityMask | 掩码线程(线程,掩码) | 为指定进程的线程设置处理器关联掩码。 |
取优先态 | GetProcessPriorityBoost | 取优先态(进程,@状态) | 检索指定进程的优先级提升控制状态。状态为真禁用动态提升,为假正常 |
进程关参 | GetProcessShutdownParameters | 进程关参(@优先级,@直接终止) | 检索当前调用进程的关闭参数。优先级0到0x4FF。直接终止为1不重试。< |
关闭等级 | SetProcessShutdownParameters | 关闭等级(优先级,直接终止) | 设置当前调用进程的关闭参数。优先级0到0x4FF。直接终止为1不重试。 |
进程计时 | GetProcessTimes | 进程计时(进程,@创建,@退出,@内核,@用户) | 检索指定进程的计时信息。 |
进程版本 | GetProcessVersion | 进程版本(进程) | 检索预期运行指定进程的系统的高字主版本号和低字次版本号。 |
进程工作 | GetProcessWorkingSetSize | 进程工作(进程,@最小,@最大) | 检索指定进程的最小和最大工作集大小(以字节为单位)。 |
工作进程 | SetProcessWorkingSetSize | 工作进程(进程,最小,最大) | 设置指定进程的最小和最大工作集大小(以字节为单位)。 |
线程取文 | GetThreadContext | 线程取文(线程,@上下文) | 检索指定线程的上下文。 |
线程改文 | SetThreadContext | 线程改文(线程,@上下文) | 设置指定线程的上下文。 |
线程地区 | GetThreadLocale | 线程地区 | 返回调用线程的当前区域设置的区域设置 标识符 。 |
地区线程 | SetThreadLocale | 地区线程(地区) | 设置调用线程的当前区域设置。 |
线程优先 | GetThreadPriority | 线程优先(线程) | 检索指定线程的优先级值。 |
优先线程 | SetThreadPriority | 优先线程(线程,优先级) | 设置指定线程的优先级值。 |
线程提升 | GetThreadPriorityBoost | 线程提升(线程,@状态) | 检索指定线程的优先级提升控制状态。状态为真表示已禁用动态提升。为假表示正常行为。 |
提升线程 | SetThreadPriorityBoost | 提升线程(线程,禁用) | 禁用或启用系统临时提升线程优先级的功能。 |
首选线程 | SetThreadIdealProcessor | 首选线程(线程,首选处理器) | 设置线程的首选处理器。系统尽可能在其首选处理器上计划线程。 |
线程选择 | GetThreadSelectorEntry | 线程选择(线程,选择器,@条目) | 检索指定的选择器和线程的描述符表条目。 |
线程计时 | GetThreadTimes | 线程计时(线程,@创建,@退出,@内核,@用户) | 检索指定线程的计时信息。 |
加载库 | LoadLibraryA | 地址=加载库("jh.dll") | 获取或者加载某个链接库dll的地址空间 |
加载程序 | LoadModule | 加载程序(程序名,运行参数) | 载入一个windows应用程序,并在指定的环境中运行 |
加载模块 | LoadLibraryExA | 加载模块(文件名,0,操作) | 将指定的模块加载到调用进程的地址空间中。指定的模块可能会导致加载其他模块。 |
用户异步 | QueueUserAPC | 用户异步(回调,线程,附加) | 将用户模式 异步过程调用 (APC) 对象添加到指定线程的 APC 队列。 |
线程异步 | QueueUserAPC2 | 线程异步(回调,线程,附加,标志) | 将用户模式 异步过程调用 对象添加到指定线程的 APC 队列。标志:0无,1特模式,2定向到中断 |
进程全名 | QueryFullProcessImageNameA | 进程全名(进程,标志,@映像名,@大小) | 检索指定进程的可执行映像的全名。标志:0=Win32路径,1=本机系统路径 |
引发异常 | RaiseException | 引发异常(异常代码,标志,组数,参数组) | 在调用线程中引发异常。标志:0连续异常,1不连续 |
请求唤醒 | RequestWakeupLatency | 请求唤醒(延迟) | 请求唤醒计算机。所需的时间的延迟要求:0正常,1低延迟。 |
取错模式 | GetErrorMode | 取错模式 | 检索当前进程的错误模式。 |
改错模式 | SetErrorMode | 改错模式(模式) | 控制系统是处理指定类型的严重错误,还是进程将处理这些错误。 |
限制作业 | SetInformationJobObject | 限制作业(作业,分类,信息,大小) | 设置作业对象的限制。 |
线程正用 | SetThreadExecutionState | 线程正用(状态) | 使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠状态或关闭显示器。 |
异常处理 | SetUnhandledExceptionFilter | 异常处理(筛选器) | 使应用程序能够取代进程每个线程的顶级异常处理程序。筛选器:0正常执行,1执行异常处理,0xffffffff从异常点继续执行 |
异常传递 | UnhandledExceptionFilter | 异常传递(异常记录) | 异常处理程序定义的函数,它将未经处理的异常传递给调试器。返回0正在调试,1已经执行 |
进程内存 | Toolhelp32ReadProcessMemory | 进程内存(进程ID,基址,内容,长度,@已读) | 读取指定进程PID和地址的内存数据 |
已被调试 | IsDebuggerPresent | 值=已被调试 | 判断本进程是否处于调试模式 |
调试断点 | DebugBreak | 调试断点 | 功能暂停程序执行,打开调试器,进入调试模式。 |
调试进程 | DebugActiveProcess | 调试进程(进程ID) | 调试某一个运行的进程 |
继续调试 | ContinueDebugEvent | 继续调试(进程ID,线程ID,选项) | 继续报告调试事件。选项$10002停止异常,$80010001继续异常 |
调试输出 | OutputDebugStringA | 调试输出(内容) | 向当前应用程序的调试器发送一个字符串 |
调试事件 | WaitForDebugEvent | 调试事件(结构,毫秒) | 等待调试事件发生在被调试的进程中,DEBUG_EVENT结构包含调试信息 |
调用展开 | RtlUnwind | 调用展开(调用帧,延续,结构,回值) | 启动过程调用帧的展开。 |
停止 | ExitProcess | 停止(0) | 指定进程的退出代码以及由于此调用而终止的所有线程 |
刷新指令 | FlushInstructionCache | 刷新指令(进程,基址,大小) | 刷新指定进程的指令高速缓存,让CPU加载新的指令 |
释放引用 | FreeLibrary | 释放引用(模块句柄) | 减少加载的动态链接库(DLL)模块的引用计数,为零时取消Dll的映射 |
释放模块 | FreeLibraryAndExitThread | 释放模块(模块,退出码) | 将加载的动态链接库(DLL) 的引用计数递减一,然后调用 退出线程 以终止调用线程。 |
查找模块 | Module32First | 查找模块(快照,模块类) | 检索与进程相关联的快照第一个模块的信息 |
下个模块 | Module32Next | 下个模块(快照,模块类) | 检索与进程相关联的快照下一个模块的信息 |
查找进程 | Process32First | 查找进程(快照,进程类) | 检索进程快照第一个进程的信息 |
下个进程 | Process32Next | 下个进程(快照,进程类) | 检索进程快照下一个进程的信息 |
打开进程 | OpenProcess | 打开进程(访问,继承,pid) | 返回现有进程对象pid的句柄 |
当前进程 | GetCurrentProcess | pro=当前进程 | 获得当前进程的句柄 |
进程标识 | GetCurrentProcessId | pid=进程标识 | 获得当前进程的标识符PID |
终止进程 | TerminateProcess | 终止进程(进程,退出码) | 终止指定的进程及其所有线程 |
模块名称 | GetModuleFileNameA | 长度=模块名称(模块,路径,长度) | 获取指定模块的可执行文件的完整路径和文件名,模块为0获取本进程 |
模块地址 | GetModuleHandleA | 模块=模块地址(模块名) | 获取指定模块(dll)的模块句柄,模块名为0获取本进程句柄 |
函数地址 | GetProcAddress | 函数1=函数地址(模块,函数名) | 获取指定的动态链接库(DLL)函数的地址,可使用 调用 函数1(参数..)来执行 |
进程状态 | GetExitCodeProcess | 进程状态(进程,@状态) | 获得指定进程的终止状态 |
取优先级 | GetPriorityClass | lv=取优先级(进程) | 获取指定进程的优先级 |
改优先级 | SetPriorityClass | 改优先级(进程,lv) | 设置指定进程的优先级 |
最后错误 | GetLastError | 错误=最后错误 | 返回调用线程的最后一个错误代码值 |
设置错误 | SetLastError | 设置错误(错误号) | 设置本程序的最后一个错误代码 |
挂起线程 | SuspendThread | 挂起线程(线程) | 挂起指定的线程。 |
切换纤程 | SwitchToFiber | 切换纤程(纤程) | 计划光纤。必须在光纤上调用 函数。 |
运行 | WinExec | 运行(命令,显示) | 命令是程序路径,若有参数加空格.显示参见窗口显示方式 |
英文名称 | 数值 | 作用解释 |
DONT_RESOLVE_DLL_REFERENCES | 0x00000001 | 如果使用此值,并且可执行模块是 DLL,则系统不会调用 DllMain 进行进程和线程初始化和终止。 此外,系统不会加载指定模块引用的其他可执行模块。 |
LOAD_IGNORE_CODE_AUTHZ_LEVEL | 0x00000010 | 如果使用此值,则系统不会检查 AppLocker 规则或对 DLL 应用软件限制策略。 此操作仅适用于正在加载的 DLL,不适用于其依赖项。 建议在安装程序中使用此值,这些安装程序必须在安装过程中运行提取的 DLL。 |
LOAD_LIBRARY_AS_DATAFILE | 0x00000002 | 如果使用此值,系统会将文件映射到调用进程的虚拟地址空间,就像它是数据文件一样。 执行或准备执行映射文件没有任何操作。 因此,不能使用此 DLL 调用 GetModuleFileName、 GetModuleHandle 或 GetProcAddress 等函数。 使用此值会导致写入只读内存引发访问冲突。 如果只想加载 DLL 以从中提取消息或资源,请使用此标志。 |
LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE | 0x00000040 | 与 LOAD_LIBRARY_AS_DATAFILE类似,只不过 DLL 文件是使用调用进程的独占写入访问权限打开的。 其他进程在使用 DLL 文件时无法打开该文件进行写入访问。 但是,DLL 仍可由其他进程打开。 |
LOAD_LIBRARY_AS_IMAGE_RESOURCE | 0x00000020 | 如果使用此值,系统会将文件作为图像文件映射到进程的虚拟地址空间中。 但是,加载程序不会加载静态导入或执行其他常规初始化步骤。 如果只想加载 DLL 以从中提取消息或资源,请使用此标志。 |
LOAD_LIBRARY_SEARCH_APPLICATION_DIR | 0x00000200 | 如果使用此值,则会在应用程序的安装目录中搜索 DLL 及其依赖项。 不搜索标准搜索路径中的目录。 此值不能与 LOAD_WITH_ALTERED_SEARCH_PATH组合使用。 |
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS | 0x00001000 | 此值是 LOAD_LIBRARY_SEARCH_APPLICATION_DIR、 LOAD_LIBRARY_SEARCH_SYSTEM32和 LOAD_LIBRARY_SEARCH_USER_DIRS的组合。 不搜索标准搜索路径中的目录。 此值不能与 LOAD_WITH_ALTERED_SEARCH_PATH组合使用。 |
LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | 0x00000100 | 如果使用此值,则包含 DLL 的目录将暂时添加到要搜索 DLL 依赖项的目录列表的开头。 不搜索标准搜索路径中的目录。 |
LOAD_LIBRARY_SEARCH_SYSTEM32 | 0x00000800 | 如果使用此值,则会搜索 %windows%\system32 来查找 DLL 及其依赖项。 不搜索标准搜索路径中的目录。 此值不能与 LOAD_WITH_ALTERED_SEARCH_PATH组合使用。 |
LOAD_LIBRARY_SEARCH_USER_DIRS | 0x00000400 | 如果使用此值,则使用 AddDllDirectory 或 SetDllDirectory 函数添加的目录将搜索 DLL 及其依赖项。 如果已添加多个目录,则未指定搜索目录的顺序。 不搜索标准搜索路径中的目录。 此值不能与 LOAD_WITH_ALTERED_SEARCH_PATH组合使用。 |
LOAD_WITH_ALTERED_SEARCH_PATH | 0x00000008 | 如果使用此值并且 lpFileName 指定绝对路径,则系统会使用“备注”部分中讨论的备用文件搜索策略来查找指定模块导致加载的关联可执行模块。 如果使用此值,并且 lpFileName 指定相对路径,则行为未定义。 |
LOAD_LIBRARY_REQUIRE_SIGNED_TARGET | 0x00000080 | 指定必须在加载时检查二进制映像的数字签名。 |
LOAD_LIBRARY_SAFE_CURRENT_DIRS | 0x00002000 | 如果使用此值,则仅当 DLL 位于“安全加载”列表中的某个目录下时,才允许从当前目录加载要执行 |
中文名字 | 英文名称 | 长度 | 作用解释 |
启动信息类 | STARTUPINFOA | 68 | 指定创建时进程的窗口工作站、桌面、标准句柄和main窗口的外观。 |
启动信息类 成员表 |
中文 | 英文 | 类型 | 作用解释 |
大小 | cb | 整数 | 结构的大小(以字节为单位)。 |
预留 | lpReserved | 整数 | 保留;必须为 0。 |
桌面 | lpDesktop | 整数 | 桌面的名称,或此过程的桌面和窗口工作站的名称。字符串中的反斜杠指示字符串同时包含桌面和窗口工作站名称。 |
标题 | lpTitle | 整数 | 对于控制台进程,这是在创建新的控制台窗口时显示在标题栏中的标题。 |
左 | dwX | 整数 | 如果 标志 指定4,则此成员是创建新窗口时窗口左上角的 x 偏移量(以像素为单位)。 |
顶 | dwY | 整数 | 如果 标志 指定4,则此成员是创建新窗口时窗口左上角的 y 偏移量(以像素为单位)。 |
宽 | dwXSize | 整数 | 如果 标志 指定2,则此成员是创建新窗口时窗口的宽度(以像素为单位)。 |
高 | dwYSize | 整数 | 如果 标志 指定2,则此成员是创建新窗口时窗口的高度(以像素为单位)。 |
列 | dwXCountChars | 整数 | 如果 标志 指定8,如果在控制台进程中创建新的控制台窗口,则此成员以字符列为单位指定屏幕缓冲区宽度。 |
行 | dwYCountChars | 整数 | 如果 标志 指定8,如果在控制台进程中创建新的控制台窗口,则此成员以字符行为单位指定屏幕缓冲区高度。 |
属性 | dwFillAttribute | 整数 | 如果 标志 指定0x10,则如果在控制台应用程序中创建新的控制台窗口,则此成员为初始文本和背景色。 |
标志 | 标志 | 整数 | 确定进程创建窗口时是否使用某些成员的信息标志位域。 |
显示 | wShowWindow | 整数 | 如果 标志 指定1,则此成员可以是SW_SHOWDEFAULT除外的任何窗口显示模式。否则,将忽略此成员。 |
备用 | lpReserved2 | 整数 | 保留供 C 运行时使用;必须为零。 |
输入 | hStdInput | 整数 | 如果 标志 指定0x100,则此成员是进程的标准输入句柄。如果 标志 指定0x200,则此成员将指定一个热键值 |
输出 | hStdOutput | 整数 | 如果 标志 指定0x100,则此成员是进程的标准输出句柄。 否则,将忽略此成员,标准输出的默认值为控制台窗口的缓冲区。 |
错误 | hStdError | 整数 | 如果 标志 指定0x100,则此成员是进程的标准错误句柄。 否则,将忽略此成员,标准错误的默认值为控制台窗口的缓冲区。 |
英文名称 | 数值 | 作用解释 |
STARTF_FORCEONFEEDBACK | 0x00000040 | 指示在调用 创建进程 后光标处于反馈模式两秒钟。 显示“在后台工作”光标 (查看鼠标控制面板实用工具) 中的“指针”选项卡。如果在这两秒内进程进行第一次 GUI 调用,则系统会再给进程 5 秒。 如果在这五秒内进程显示一个窗口,则系统再给进程 5 秒以完成绘制窗口。系统在第一次调用 获取消息 后关闭反馈光标,无论进程是否正在绘制。 |
STARTF_FORCEOFFFEEDBACK | 0x00000080 | 指示在进程启动时强制关闭反馈光标。 将显示“普通选择”光标。 |
STARTF_PREVENTPINNING | 0x00002000 | 指示进程创建的任何窗口都不能固定在任务栏上。此标志必须与 STARTF_TITLEISAPPID 组合使用。 |
STARTF_RUNFULLSCREEN | 0x00000020 | 指示进程应在全屏模式下运行,而不是在窗口模式下运行。此标志仅对 x86 计算机上运行的控制台应用程序有效。 |
STARTF_TITLEISAPPID | 0x00001000 | lpTitle 成员包含 AppUserModelID。 此标识符控制任务栏和 “开始” 菜单呈现应用程序的方式,并使它能够与正确的快捷方式和跳转列表相关联。 通常,应用程序将使用 SetCurrentProcessExplicitAppUserModelID 和 GetCurrentProcessExplicitAppUserModelID 函数,而不是设置此标志。 有关详细信息,请参阅 应用程序用户模型 ID。如果使用STARTF_PREVENTPINNING,则应用程序窗口不能固定在任务栏上。 应用程序使用与 AppUserModelID 相关的任何窗口属性仅覆盖该窗口的此设置。此标志不能与STARTF_TITLEISLINKNAME一起使用。 |
STARTF_TITLEISLINKNAME | 0x00000800 | lpTitle 成员包含用户为启动此过程而调用的快捷方式文件 (.lnk) 的路径。 这通常是在调用指向已启动应用程序的 .lnk 文件时由 shell 设置的。 大多数应用程序不需要设置此值。此标志不能与STARTF_TITLEISAPPID一起使用。 |
STARTF_UNTRUSTEDSOURCE | 0x00008000 | 命令行来自不受信任的源。 有关详细信息,请参阅“备注”。 |
STARTF_USECOUNTCHARS | 0x00000008 | dwXCountChars 和 dwYCountChars 成员包含其他信息。 |
STARTF_USEFILLATTRIBUTE | 0x00000010 | dwFillAttribute 成员包含其他信息。 |
STARTF_USEHOTKEY | 0x00000200 | hStdInput 成员包含其他信息。此标志不能与 STARTF_USESTDHANDLES一起使用。 |
STARTF_USEPOSITION | 0x00000004 | dwX 和 dwY 成员包含其他信息。 |
STARTF_USESHOWWINDOW | 0x00000001 | wShowWindow 成员包含其他信息。 |
STARTF_USESIZE | 0x00000002 | dwXSize 和 dwYSize 成员包含其他信息。 |
STARTF_USESTDHANDLES | 0x00000100 | hStdInput、hStdOutput 和 hStdError 成员包含其他信息。如果在调用其中一个进程创建函数时指定此标志,则句柄必须是可继承的,并且函数的 bInheritHandles 参数必须设置为 TRUE。 有关详细信息,请参阅 处理继承。如果在调用 GetStartupInfo 函数时指定此标志,则这些成员要么是在进程创建期间指定的句柄值,要么INVALID_HANDLE_VALUE。当不再需要句柄时,必须使用 CloseHandle 关闭这些句柄。此标志不能与 STARTF_USEHOTKEY一起使用。 |