Windows 进程之四 CreateProcess函数

  • 一、CreateProcess 函数
    • 1.1、pszImageName 和pszCmdLine 参数

一、CreateProcess 函数

这几天被微软的sfc.exe 这个工具整蒙了,用匿名管道和进程来重定向sfc.exe 没有任何输出,最后实在老同学的帮助下解决了这个问题。本篇只是对《Windows核心编程》的学习,加深印象。

本篇共有7个小节,从CreateProcess定义开始:

BOOL CreateProcess(LPCWSTR pszImageName,LPCWSTR pszCmdLine,LPSECURITY_ATTRIBUTES psaProcess,LPSECURITY_ATTRIBUTES psaThread,BOOL fInheritHandles,DWORD fdwCreate,LPVOID pvEnvironment,LPWSTR pszCurDir,LPSTARTUPINFOW psiStartInfo,LPPROCESS_INFORMATION pProcInfo
);

一个线程调用CreateProcess时,系统将创建一个进程内核对象,初始计数为1。进程内核对象不是进程本身,而是操作系统用来管理这个进程的一个小型数据结构。可以把进程内核对象想象成进程统计信息构成的一个小型数据结构。然后系统为新进程创建一个虚拟地址空间,并将可执行文件和所有必须的DLL的代码及数据加载到进程的地址空间。

创建完进程后,系统为新进程的主线程创建一个线程内核对象,初始计数为1。和进程内核对象一样,线程内核对象也是一个小型数据结构,操作系统用它来管理这个线程。这个主线程一开始就会执行C/C++运行时的启动程序,链接器设置它为程序的启动入口,最终会调用应用程序WinMain,wWinMain,main或者wmain函数。

如果系统成功创建了新进程和主线程,CreateProcess将返回TRUE。

说明 CreateProcess 在进程完全初始化好之前就返回TRUE。这意味着操作系统加载程序(loader)尝试定位所有必要的DLL。如果一个DLL找不到或者不能正确初始化,进程就会终止。因为CreateProcess返回TRUE,所以父进程不会注意到任何初始化问题。

1.1、pszImageName 和pszCmdLine 参数

Windows 进程之四 CreateProcess函数相关推荐

  1. Windows via C/C++ 学习(8)CreateProcess 函数

    CreateProcess 函数原型: BOOL CreateProcess(PCTSTR pszApplicationName,PTSTR pszCommandLine,PSECURITY_ATTR ...

  2. windows下创建进程,CreateProcess()详解及用法

    windows下想要创建一个子进程不如linux的fork函数来得方便,通过CreateProcess函数创建一个新的进程,函数的定义如下 [cpp]  view plain copy BOOL Cr ...

  3. C++ 进程与线程---CreateProcess()函数(1)

    目录 1.CreateProcess()函数 1.1 lpApplicationName & lpCommandLine 1.2 lpProcessAttributes & lpThr ...

  4. windows CreateProcess函数详解

    TStartupInfo  结构体详解 typedef struct _STARTUPINFO { DWORD cb; //包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结 ...

  5. 几种Windows进程通信

    32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护.那么相应的进程之间的通信也就有必要整理掌握一下. Windows进程间通讯的方法有很多:管道. ...

  6. 操作系统课设之Windows 进程管理

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  7. 使用CreateProcess函数运行其他程序

    为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数创建一个运行相应程序的进程.其函数原型如下. CreateProcess(appName, c ...

  8. windows进程管理问题

    Windows进程管理 Windows 所创建的每个进程都从调用CreateProcess()API函数开始, 其函数的任务是在对象管理器子系统内初始化进程对象. 每一个进程都以调用ExitProce ...

  9. 操作系统课设——Windows 进程管理

    一.实验目的 (1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序). (2)通过创建进程.观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操 ...

最新文章

  1. 前后端交互,网络请求
  2. c语言实现天气预报步骤,一份天气预报的制作历程
  3. Confluence 6 配置管理员会话安全的备注
  4. 在CENTOS7下安装kubernetes填坑教程(原创)
  5. 【网络编程】之一、初识WinSocket
  6. java多线程 sycophantic_Java多线程volatile和synchronized总结
  7. 学习一下spring-cloud-function中官方修复的一个问题
  8. EIP-712 (一个对结构化数据的哈希标准)
  9. php图片文字垂直对齐,记一次解决字体图标垂直对齐问题的过程
  10. android 多次点击事件,Android按钮onclick事件在多次单击后激发
  11. 计算机终端保密检查 玩游戏,计算机终端保密检查系统
  12. Spring中注解实现原理
  13. 如何c语言看字节大小,如何计算C语言结构占用的字节数
  14. 元器件——瞬态抑制二极管TVS的选型应用总结(TVS的应用、TVS常用参数、TVS选型注意点、单向和双向TVS)
  15. 基于easyx低配版flappybird
  16. SEO常用的数据名词解释
  17. 人工智能实验--汉诺塔规约图(四个盘子)
  18. Allegro PCB编辑界面功能全面介绍图文教程及视频演示
  19. 正反向隔离装置(网闸)
  20. 科学计算机如何进行复数运算,教你如何用你的卡西欧学生计算器进行复数运算!...

热门文章

  1. python raise的基本使用
  2. android countdowntimer 是否正在运行,检查CountDownTimer是否正在运行
  3. Shell脚本批量Parted分区
  4. DeepMind人工智能系统可有效处理50多种眼科疾病
  5. 基于反射和折射离屏渲染的水面特效在Cesium中的实现
  6. 电影社交网络男主用的是KDE桌面
  7. springboot和netty整合的聊天室--群聊
  8. 【杂谈】FilterChain相关知识整理
  9. 朝阳过敏性鼻炎如何调理 首选祖传鼻炎药
  10. opencc php,宝塔面板安装opencc中文简繁转换工具和opencc4php扩展