Как да изброим всички отворени манипулатори на определен процес в ядрото (Windows)

Имам драйвер на ядрото. Как мога да изброя всички отворени манипулатори на определен процес в моя драйвер на ядрото? Искам да затворя тези дръжки.

Благодаря!


person Roman    schedule 14.10.2012    source източник
comment
Пробвали ли сте process explorer?   -  person Alexey Frunze    schedule 14.10.2012
comment
@AlexeyFrunze: Предполагам, че иска да напише код в своя драйвер на ядрото, за да изброи всички манипулатори на определен процес.   -  person Gabe    schedule 14.10.2012
comment
@Gabe Възможно е, но не знаем със сигурност. Btw, драйверът не трябва ли да може да следи отварянията на устройството, защото трябва да получава отворени повиквания?   -  person Alexey Frunze    schedule 14.10.2012
comment
Опасни. Вероятно ще спре на тръби и слотове за поща.   -  person 0xC0000022L    schedule 14.10.2012
comment
Да не говорим за произволното унищожаване на файлове: stackoverflow.com/a/2611885/17034   -  person Hans Passant    schedule 15.10.2012
comment
@HansPassant: Възможно е това, което той наистина иска да направи, е просто да обезсили манипулатора (като това, което се случва с манипулаторите за отваряне на файлове на устройство, след като изненадващо извадите), вместо всъщност да ги затвори.   -  person Gabe    schedule 15.10.2012


Отговори (1)


Искам да затворя тези дръжки.

Колкото и да си струва, само защото нещо може да се направи, не означава, че трябва да се направи. Това е лоша идея.

Въпреки това е възможно да се изброят всички манипулатори за всички процеси, като се използва недокументирано извикване на Zw/NtQuerySystemInformation с информационен клас SystemHandleInformation. Търсене в мрежата с тези термини ще ви даде това, което искате.

person Bukes    schedule 14.10.2012