2010-11-04 2 views
4

Я проверил определение MiniDumpWriteDump() методом на MSDN, как показано ниже:Параметры 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 
); 

Параметры:

hProcess [в]

Дескриптор процесса, для которого информация должна быть сгенерированным.

ProcessId [в]

Идентификатор процесса, для которого информация должна быть сгенерированы.

Поскольку либо дескриптор процесса, либо идентификатор процесса могут идентифицировать процесс, зачем нам передавать их оба? Не можем ли вывести один из них с другого? Значит, между ними должны быть какие-то различия, каковы они?

Спасибо.

ответ

0

Я думаю, что это, вероятно, только по историческим причинам. Обратите внимание, что функция GetProcessId, которая позволяет получить PID от ручки процесса, не существовало до Windows Server 2003:

http://msdn.microsoft.com/en-us/library/ms683215%28v=vs.85%29.aspx

+1

Но это не дает ответа на вопрос, вообще, или делает это? * Какие * (исторические) причины потребуют и то и другое? –