码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2017-05-08 01:24:22      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:amp   class   log   ring   线程   进程控制   包含   内核对象   表示   

                  第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程序运行原理

标签:amp   class   log   ring   线程   进程控制   包含   内核对象   表示   

原文地址:http://www.cnblogs.com/hustercn/p/6822924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!