本程序的句柄,这个问题好像有点弱啊!

pjl110 2011-04-12 12:15:07
是这样的:
#include   <windows.h>   
int WINAPI wWinMain(HINSTANCE _h,HINSTANCE _hp,LPWSTR,int)
{
return 0;
}

我想问的是主函数中_h究竟是什么?本程序的实例句柄还是该进程的句柄?
如果是前者,它和本进程的句柄有什么区别?
如果要在主函数中调用:
HANDLE hp = ::GetCurrentProcess();

得到的hp又是什么?
假如我要获得该进程的优先级:
GetPriorityClass(HANDLE hProcess);

第一个参数是用_h还是hp还是两个都是错的?
太纠结了,谢谢!
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dreadnought 2011-04-12
  • 打赏
  • 举报
回复
问题一
HINSTANCE _h
A handle to the current instance of the application.

问题二
HANDLE hp = ::GetCurrentProcess();
hp是本进程句柄的伪句柄

问题三
GetPriorityClass(HANDLE hProcess);
用hp



Lactoferrin 2011-04-12
  • 打赏
  • 举报
回复
_h是exe文件映像在内存中的基地址
GetCurrentProcess返回值是-1,在需要hProcess中表示当前进程

GetPriorityClass可以用GetCurrentProcess
Lactoferrin 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pjl110 的回复:]

引用 1 楼 lactoferrin 的回复:

_h是exe文件映像在内存中的基地址
GetCurrentProcess返回值是-1,在需要hProcess中表示当前进程

GetPriorityClass可以用GetCurrentProcess

大哥您解释得太好了!能给些关于_h的资料么,我想对它更进一步的了解!
比如说为什么每次这个值都是0x00400000呢?
[/Quote]

因为你的exe文件的IMAGE_OPTINAL_HEADER中的BaseAddress字段为0x00400000,所以在可能的情况下都会映射到0x00400000处

你可以编个程序来显示这些东西
pjl110 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lactoferrin 的回复:]

_h是exe文件映像在内存中的基地址
GetCurrentProcess返回值是-1,在需要hProcess中表示当前进程

GetPriorityClass可以用GetCurrentProcess
[/Quote]
大哥您解释得太好了!能给些关于_h的资料么,我想对它更进一步的了解!
比如说为什么每次这个值都是0x00400000呢?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧