Страницы

Поиск по вопросам

суббота, 15 июня 2019 г.

С#. Получить handle, присвоенный процессу операционной системой при запуске, средствами WinAPI

Доброго времени суток.
Возник такой вопрос. Класс System.Diagnostics.Process возвращает дескриптор процесса, присвоенный ему ОС при запуске. И вот что-то никак не могу найти способ получить его с помощью WinAPI. OpenProcess - возвращает, конечно, дескриптор, но, насколько понимаю, уже "свой",а не тот, который был присвоен при запуске программы.


Ответ

Проще всего подсмотреть в исходники. Есть замечательный сайт http://sourceof.net. Для вновь созданных процессов processId приходит из CreateProcess. Для GetProcesses сложнее. Находим метод Process.GetProcesses, идём по ссылкам, и видим, что вся работа делается здесь через PERF_COUNTER

Хэндл — да, он каждый раз свой. Хэндл по сути просто указатель на какую-то внутреннюю структуру данных, описывающую процесс. А вот processId должен быть один и тот же всегда.

Комментариев нет:

Отправить комментарий