windows核心编程学习体会1:获取进程实例句柄
来源:互联网 发布:古代战争 知乎 编辑:程序博客网 时间:2024/05/17 23:00
进程包括两部分,一个是内核对象,一个是地址空间。系统通过内核对象对进程进行管理,地址空间包括所有可执行文件和DLL文件以及动态内存分配。进程地址空间的每一个可执行文件或者DLL文件都被赋予了一个实例句柄,主要通过两个函数获取该实例句柄值:GetModuleHandle()和GetModuleHandleEx(),也可以通过链接器提供的伪变量__ImageBase获取,它指向当前正在运行的的模块的基地址。
注意:_printf()是用于UNICO编码中,printf()是用于ANSI编码中
#include <windows.h>#include "tchar.h"extern "C" const IMAGE_DOS_HEADER __ImageBase;void DumpModule(){// 传递NULL,返回进程的地址空间中的可执行文件的基地址, // 若调用GetModuleHandle(NULL)的代码在一个DLL中,返回值仍是可执行文件的基地址,而非DLL文件的基地址 //'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格HMODULE hmodule = GetModuleHandle(NULL);wprintf(TEXT("with GetModuleHandle(NULL) = 0x%x\r\n"),hmodule);// __ImageBase是链接器提供的伪变量,它指向当前正在运行的模块的基地址 wprintf(TEXT("with __ImageBase = 0x%x\r\n"),(HINSTANCE)& __ImageBase);// 使用DumpModule函数作为参数得到当前模块的基地址 // 将GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS做第一个参数,会用第二个参数所在DLL的基地址填写第三个参数 hmodule = NULL;GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,(PCTSTR)DumpModule,&hmodule);wprintf(TEXT("with GetModuleHandleEx = 0x%x\r\n"),hmodule);}int wmain(int argc,TCHAR *argv[]){DumpModule();return 0;}
0 0
- windows核心编程学习体会1:获取进程实例句柄
- windows核心编程-进程的句柄和如何获得
- Windows核心编程笔记(1)----句柄
- windows核心编程-句柄的获取与复制
- windows核心编程-获取进程当前目录
- Windows核心编程---句柄和伪句柄
- Windows核心编程学习笔记(3)--获得可执行文件的实例和dll文件的实例句柄
- windows核心编程--进程
- windows核心编程--进程
- Windows核心编程:进程
- windows 核心编程(进程)
- 《Windows核心编程》进程
- Windows核心编程 - 进程
- windows核心编程-进程
- windows核心编程---进程
- 《Windows核心编程--DLL动态链接库》--学习体会
- 【Windows 核心编程】Windows 核心编程 -- 进程
- windows核心编程-获取系统中进程的信息
- Bash shell script 取到文件中每一行(Just for record)
- Automation服务器不能创建对象--Excel.application
- C++中的类
- Mockito(二)--实例篇
- 性能优化之Java(Android)代码优化
- windows核心编程学习体会1:获取进程实例句柄
- 10. CSS 文本
- extjs,后台递归获取权限树,进行展示
- 剑指offer:字符串排列
- for vs foreach
- opencv学习(五)书本《学习Opencv》(中文版)第四章的作业答案第一题(opencv3.0.0+VS2012+win7)
- 分享一个购物车的demo(效果高仿饿了么软件的购物效果)
- 《父与子的编程之旅-与小卡特一起学python》第18章
- java交换两个数的常见方法及效率测试