powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
5 сообщений из 5, страница 1 из 1
А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
    #37710422
Фотография ljnk0j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил, для интереса, проверить, все ли процессы показываются в Диспетчере.

Код
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
; 
DWORD WINAPI GetProcessImageFileNameA(HANDLE,LPSTR,DWORD);
(def-call-out get-image-name
			(:name "GetProcessImageFileNameA") (:library "psapi.dll")
			(:arguments 
			    (process-handle handle) 
				(name (c-ptr (c-array-max character #.win32:MAX_PATH)) :out :alloca)
				(sz dword)
			)
			(:return-type dword)
			(:language :stdc))			
			
(defun image-name (pid)
	"Returns an image name for specified pid"
	(let ((ph nil) (rv nil))
		(setq ph (win32:OpenProcess 1024 nil pid))
		(when ph (multiple-value-bind (sz nm) (get-image-name ph 300) (win32:CloseHandle ph) (setq rv nm)))
		rv
		))
	
(setq +maxpid+ 10000)
(setq +minpid+ 100) 
	
(defun enum-pids (pname)
	"Returns a list of PIDs matchin passed name or nil"
	(let ((rl (list)))
		(do ((pid +minpid+ (+ pid 1))) ((>= pid +maxpid+))
		(let ((nm (image-name pid)))
			(when (search pname nm :test #'char-equal) (push (cons pid nm) rl))
		))rl))



Вывод

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
> (enum-pids "Far.exe")
((3771 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (3770 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (3769 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (3768 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (2819 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (2818 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (2817 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe")
 (2816 . "\\Device\\HarddiskVolume2\\Program Files\\Far\\Far.exe"))



Реально Фаров только 2, и это показывает EnumProcesses на C++, но, тем не менее, операционка открывает и считает валидными Pid'ы ещё трёх процессов, которые, очевидно, как-то связаны с первыми двумя, и которые EnumProcesses не возвращает.

Что это за лишние процессы и почему винда из скрывает?

Понятно, что их число равно количеству ядер, наверное, но где про это можно почитать в официальной документации?
...
Рейтинг: 0 / 0
А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
    #37710435
неТолик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а procexp видит эти процессы ?
...
Рейтинг: 0 / 0
А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
    #37710459
Фотография ljnk0j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неТолик,

Нет, он только видит самые первые из задубливающихся 3768 и 2816. Он тоже использует psapi!EnumProcesses для получения списка pid'ов. То есть, дубли скрываются специально виндовым API, но они, тем не менее, существуют, для каких-то целей, потому что хендлы для них возвращаются.
...
Рейтинг: 0 / 0
А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
    #37710500
неТолик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ljnk0j,

Толик в программировании шарит не слабо, счас придёт разрулит.
...
Рейтинг: 0 / 0
А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
    #37710563
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что ProcessExplorer показывает для файловых потоков в этих процессах?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / А почему EnumProcess возвращает меньше процессов чем цикл по OpenProcessHandle?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]