|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
|
Free-lancer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 15.1.2004 Репутация: нет Всего: нет |
Привет, всем!
Собственно тема отражает суть вопроса. У нас есть файл (handle или путь) и нужно узнать использует ли этот файл кто-нибудь, а если использует - то какие процессы. Увы я не нашел ничего подходящего в MSDN как со тороны файловых функций, так и со стороны процессов. |
|||
|
||||
p0s0l |
|
|||
Г-н Посол Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 3 Всего: 112 |
Это вопрос не из простых, имхо... Если узнаешь - обязательно тут напиши...
На SysInternals есть такие проги как HandleEx, ProcessExplorer... Судя по тому, что им нужны привилегии отладки и загрузки драйвера, похоже без вспомогательного мини-драйвера не обойтись... -------------------- С уважением, г-н Посол. |
|||
|
||||
Guest |
|
|||
Unregistered |
Я видел проги, которые "легко" отображают какие файлы используються каждым из запущенных процессов и я подумал, что может можно и с этой стороны подойти. Но, увы, я не смог найти какие-либо стандартные средства, которые бы позволяли определить какие именно ресурсы заняты процессом.
Я весь Винда это както же делает. Как-то же она определяет, что данный файл занят и отказывает в доступе чужому процессу, а "своему" - разрешает. Т.е. должен быть какой-то API... вот только какой ???? |
|||
|
||||
Kurt |
|
|||
Увлеченный Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Да, вот и я подумал, возможно, существует какой-нибудь API..
-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
shedon |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: нет Всего: 11 |
Не существует, а если и существует то это баг. Ед. что существует это функции на уровне ядра, а чтобы получить к ним доступ надо писать драйвер. -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
dim |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
На самом деле такое API существует, правда только для NT-подобных систем (NT,2000,XP,2003,etc). Называется Native API и в числе прочих там насколько я помню есть функции которые позволяют получить список хендлов открытых процессом.
--------------------
that's all |
|||
|
||||
shedon |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: нет Всего: 11 |
Native API - это так называемые базовые апи, которые в конечном счёте вызываются при вызове Win32API, но дело в том, что базовые апи нельзя вызывать из режима пользователя, они доступны только процессам режима ядра. -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
dim |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Неверно, потому что можно - сам делал это из user mode. Kernel mode требуют функции RtlXXX, NtXXX, но они не входят в Native API. --------------------
that's all |
|||
|
||||
Fixin |
|
|||
Ёжик Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Тему особо не читал, но может, вот это.
|
|||
|
||||
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |