为什么用HANDLE来表示进程ID

为什么用HANDLE来表示进程ID,第1张

在监控进程时,常用PsSetCreateProcessNotifyRoutine注册一个回调函数。 查看回调函数签名: VOID (PCREATE_PROCESS_NOTIFY_ROUTINE) ( IN HANDLE ParentId, IN HANDLE ProcessId, IN BOOLEAN Create ); 平时我们用到的进程PID也是DWORD类型(包括64bit系统也应该是DWORD)。 而这里为什么需要HANDLE来表示进程ID (即:IN HANDLE ProcessId) 在64bit 系统上,DWORD是 32 位无符号整数,而HANDLE 为64位指针。 (1)我想知道微软为什么这么设计(用HANDLE来作为pid类型) (2)在64bit环境下,如果传入的 DWORD很大 pid 最高位为1: pid & 0x80000000 == 0x80000000,扩展为64位 HANDLE 会不会把1当作符号位扩展?

您好:

以下方法供您参考:

您好,建议您到下面为您提供的官网,然后把你电脑后面的序列号输进去,然后下载跳出了的驱动。然后安装,应该就能用了。

您需要登陆戴尔官网进行驱动下载:

>

构造选择集。C#是通过AutoCADActiveX,这座桥梁来和AutoCAD之间进行通讯的,可以通过构造选择集,来获取某个图层中的所有handle,在遍历的循环中,得到每个层表记录对象,可以去修改它的属性。

上面都没考虑编译器的限制

64位系统一样可以使用32位编译器

而且就算是64位编译器也可能为了保持兼容性使用半字长来存储整数

要调用windows api的

#include <windowsh>

#include <stdioh>

BOOL IsWow64()

{

typedef BOOL (WINAPI LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

BOOL bIsWow64 = FALSE;

fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(

GetModuleHandle(L"kernel32"),"IsWow64Process");

if (NULL != fnIsWow64Process)

{

if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))

{

return FALSE;

} else

return TRUE;

}

return bIsWow64;

}

以上就是关于为什么用HANDLE来表示进程ID全部的内容,包括:为什么用HANDLE来表示进程ID、我的DELL成就3450笔记本 开机出现error handle!!、c#cad获取某个图层所有handle等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10142932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存