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()函数

时间: 2024-10-19 03:19:48

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

第二章--Win32程序运行原理 (部分概念及代码讲解)

学习<Windows程序设计>记录 概念贴士: 1. 每个进程都有赋予它自己的私有地址空间.当进程内的线程运行时,该线程仅仅能够访问属于它的进程的内存,而属于其他进程的内存被屏蔽了起来,不能被该线程访问. PS:进程A在其地址空间的0x12345678地址处能够有一个数据结构,而进程B能够在其地址空间的0x12345678处存储一个完全不同的数据.彼此不能访问. 2. 在大多数系统中,Windows将地址空间的一半(4GB的前一半,0x00000000-0x7FFFFFFF)留给进程作为私有存

孙鑫MFC学习笔记1:Win32程序运行原理

1.MSG结构 hwnd:窗口句柄 message:消息类型 wParam & lParam:消息的附加信息(比如键值) time:消息被投递的时间 tip:typedef的作用是从变量类型区分变量用途 2.WinMain 3.程序开发步骤 4.设计窗口类 5.创建窗口.显示窗口.更新窗口 6.回调函数 tip:BeginPaint.EndPaint只能在响应WM_PAINT消息中使用,而GetDC不能在这里使用 tip:if语句中如果是常量与变量比较是否相等,应该把常量写在左边(可以避免把==

windows程序设计笔记

2014.05.06 新建一个visual C++ -- 常规 -- 空白 的项目,用.c后缀名指定这是一个用C语言来写的windows项目.和C语言的hellworld程序做了一个比较,按照windows程序设计规定的入口函数名称.函数参数.参数传递方式等写个入口函数,并弹出一个MessageBox. windows程序设计笔记,布布扣,bubuko.com

Windows程序运行原理

Windows程序运行原理 1.应用程序,操作系统,硬件之间的关系 这里涉及到消息及消息队列, 操作系统是通过消息机制(Message)来将感知到的事件传递给应用程序的. 操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序. 操作系统对事件做出反应的过程就叫做消息响应 typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt

苹果IOS,与windows Phone7,系统,内存,CPU处理,及后台程序运行,详解微软墓碑机制的系统

关于ios的多任务以及内存管理 看了很多人为自己的可用内存是350mb还是380mb纠结.为了多优化出一点可用内存费脑筋. ios的任务管理和内存管理,跟windows是有很大差别的.很多人习惯于用 windows的思维去看待ios. windows大家都知道,窗口开的越多,系统越慢,为什么呢?因为所有窗口都在运行,cpu占用率高:并且都占内存.可用内存不足还会迫使系统使用硬盘充当虚拟内存,硬盘频繁读写当然会多耗电,并且硬盘速度也比较慢. ios则不同.首先ios的后台任务,除了极少数可以后台运

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

WinSock接口:Windows处理网络的API 套接字socket 流套接字:SOCKET_STREAM           可靠连接   TCP HTTP POP3 数据报套接字:SOCKET_DGRAM     不可靠连接 UDP 寻址方式: 1:sockaddr的第1个版本 struct sockaddr{ u_short  sa_family;       //地址家族 char      sa_data[14];   //数据 } 2.sockaddr的TCP/IP版本的 sock

第三章--Win32程序的执行单元(部分概念及代码讲解)(中-线程同步

学习<Windows程序设计>记录 概念贴士: 1. 同步可以保证在一个时间内只有一个线程对其共享资源有控制权.PS:共享资源包括全局变量.公共数据成员或者句柄等. 2. 临界区内核对象和时间内核对象可以很好地用于多线程同步和它们之间的通信. 3. 线程同步必要性:当多个线程在同一个进程中执行时,可能有不止一个线程同时执行同一段代码,访问同一段内存中的数据.多个线程同时读取共享数据没有问题,但是如果同时读写,情况就不同,也许会产生极大的错误.(如:程序CountErr).解决同步问题,就是保证

【javascript高级程序设计笔记】第六章OOP

忙了一段时间,加了将近一个月的班. 书也落下没看,上次看到第七章(这部分笔记大概还是9月份的吧),偶尔看到很吃力.看的速度慢下来. 学习就是一个慢慢积累慢慢沉淀的过程.看书时没有明显觉得提升.但在看完书后近段时间工作中写代码,明显感觉效率还是有提升,基础知识牢固了. 这本书是第二次看,这次很认真的遍读和做笔记,笔记的文字均是自己边看边敲的,这样才更好的真正的吸收到一部分吧! 这些天在看web响应式设计:HTML5和CSS3实战 第6章 面向对像的程序设计 6.1.1属性类型 ECMAScript

javascript高级程序设计笔记(第5章 引用类型)

1.Object类型 两种方式定义:对象字面量.new 两种方式访问:括号.点 2.Array类型 2.1  定义方式:new Array.数组字面量 2.2  lenght属性:可以利用它方便的想数组末尾添加元素 2.3  检测数组 instanceof isArray()方法  2.4  toString().soLocaleString().valueOf().join()方法 2.5.栈方法   push()方法:逐个添加到数组末尾,并返回修改后的数组长度 pop()方法:返回数组的最后