进程ID是唯一标识进程的编号。进程句柄也是唯一标识进程内核对象的数字。
为什么我们都需要它们,因为它们中的任何一个都可以识别一个过程。
我认为答案可能在于进程和进程内核对象之间的映射关系。是否可以将多个进程内核对象映射到单个进程?每个进程内核对象都有自己的进程句柄。这样每个进程内核对象都可以表示不同的访问模式或类似的东西。
当我使用MiniDumpWriteDump()函数时出现了这个问题,这个函数声明如下:
BOOL WINAPI MiniDumpWriteDump(
__in HANDLE hProcess,
__in DWORD ProcessId,
__in HANDLE hFile,
__in MINIDUMP_TYPE DumpType,
__in PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
__in PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
__in PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
因此它的参数包括进程ID和进程句柄。我只是不知道为什么必须同时拥有它们。
非常感谢您的见解。
答案 0 :(得分:4)
流程处理
虽然进程ID是
答案 1 :(得分:3)
不同之处在于'id'是系统范围的编号,它唯一地标识了该过程。另一方面,'handle'是一个不透明的值,它将进程和对该进程的访问连接到您的程序。你可以在同一个过程中拥有多个不同的句柄。
我不知道为什么MiniDumpWriteDump同时使用它们。