Windows程序设计笔记1:第2章:win32程序运行原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows程序设计笔记1:第2章:win32程序运行原理相关的知识,希望对你有一定的参考价值。

                  第2章:win32程序运行原理

内核对象:对象句柄,标示符,进程相关的,只能被1个进程里面的其他线程访问,不透明的,封装过的。

创建进程:返回STARTUPINFO类型的变量对象,包含了父进程传递给子进程的显示信息,

       STARTUPINFO是一种类类型,和内含的类型是一样的,

STARTUPINFO si={sizeof(&si)};            //初始化startupinfo的大小
::GetStartupinfo(&si);                   //调用startupinfo对象      

创建进程:CreateProcess()函数 ,函数包含了很多的参数

例如打开notepad    

1 STARTUPINFO si={sizeof(&si)};      //新进程的大小,位置,STARTUPINFO类型
2 
3 PROCESS_INFORMATION pi;            //新进程的句柄,ID号,PROCESS_INFO类型
4 
5 char* szCommandLine="notepad";
6 
7 ::CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi);

类型的匈牙利表示法,前缀表示法

b     BOOL
sz    string zero(以0结尾的字符串)
lp         long pointer(长指针)

 

WINDEF.h里面包含了变量类型对应的宏名

DWORD      无符号长整型            unsigned long int
WORD       无符号短整型            unsigned short int
BOOL         整型                        int
INT          整型                        int
BYTE        无符号字符型             unsigned char
LPCSTR      常字符指针               const char*
LPVOID       空指针                  void far

  

进程控制:

  0:获取系统进程: ToolHelp()函数

           CreateToolHelp32Snapshot()函数得到当前系统正在运行的进程快照列表

           Process32First()和Process32Next()遍历快照列表

  1.终止当前进程:1)当前进程中的一个线程调用了ExitProcess()函数

            2)其他进程中的线程调用了TerminateProcess()函数

            3)当前进程中的线程都运行完毕

      2.终止其他进程:TerminateProcess()函数

 

    3:保护进程:防止当前进程被关闭

                           HOOK掉其他进程对于当前进程的检测和终止

                          检测:ToolHelp()函数、

                 终止:TerminateProcess()函数

 

 

 

 

 

 

 

 

 

以上是关于Windows程序设计笔记1:第2章:win32程序运行原理的主要内容,如果未能解决你的问题,请参考以下文章

《逆向工程核心原理》读书笔记——第4章 IA-32寄存器基本讲解

《Linux系统编程手册》读书笔记——第2章基本概念

python基础学习笔记——Python基础教程(第2版 修订版)第12章(图形用户界面)

WIN32是啥啊

python核心编程第9章习题:9-7

Windows程序设计笔记4:第10章:TCP/IP和网络通信