подсчет ссылок на файл обджект
От: Аноним  
Дата: 25.06.04 08:50
Оценка:
прочитал "Q55 I see the user close the file. My filter receives an IRP_MJ_CLEANUP. But I never see the IRP_MJ_CLOSE? Why not?"

есть два счетчика HandleCount <= PointerCount
IRP_MJ_CLOSE — приходит для уменьшения HandleCount ?
IRP_MJ_CLEANUP — приходит когда ? когда PointerCount уменьшается или уже равен нулю ?
соответственно после прихода IRP_MJ_CLEANUP файл закрыт ?
если HandleCount <= PointerCount, то для определения момента закрытия файла надо перехватывать IRP_MJ_CLEANUP а не IRP_MJ_CLOSE ?
Re: подсчет ссылок на файл обджект
От: Злость Россия  
Дата: 25.06.04 10:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>прочитал "Q55 I see the user close the file. My filter receives an IRP_MJ_CLEANUP. But I never see the IRP_MJ_CLOSE? Why not?"


А>есть два счетчика HandleCount <= PointerCount

А>IRP_MJ_CLOSE — приходит для уменьшения HandleCount ?

НЕТ

А>IRP_MJ_CLEANUP — приходит когда ? когда PointerCount уменьшается или уже равен нулю ?


PointerCount = 0

А>соответственно после прихода IRP_MJ_CLEANUP файл закрыт ?


Нет.
А>если HandleCount <= PointerCount, то для определения момента закрытия файла надо перехватывать IRP_MJ_CLEANUP а не IRP_MJ_CLOSE ?


IRP_MJ_CLEANUP — приходит когда все handle закрыты. Тоесть у обьекта счетчик описателей достиг нуля.
IRP_MJ_CLOSE — приходит когда счетчик ссылок достиг нуля.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[2]: подсчет ссылок на файл обджект
От: Аноним  
Дата: 25.06.04 11:09
Оценка:
Здравствуйте, Злость, Вы писали:

З>Здравствуйте, Аноним, Вы писали:


А>>прочитал "Q55 I see the user close the file. My filter receives an IRP_MJ_CLEANUP. But I never see the IRP_MJ_CLOSE? Why not?"


А>>есть два счетчика HandleCount <= PointerCount

А>>IRP_MJ_CLOSE — приходит для уменьшения HandleCount ?

З>НЕТ


А>>IRP_MJ_CLEANUP — приходит когда ? когда PointerCount уменьшается или уже равен нулю ?


З>PointerCount = 0


А>>соответственно после прихода IRP_MJ_CLEANUP файл закрыт ?


З>Нет.

А>>если HandleCount <= PointerCount, то для определения момента закрытия файла надо перехватывать IRP_MJ_CLEANUP а не IRP_MJ_CLOSE ?

З>IRP_MJ_CLEANUP — приходит когда все handle закрыты. Тоесть у обьекта счетчик описателей достиг нуля.

З>IRP_MJ_CLOSE — приходит когда счетчик ссылок достиг нуля.

почему тогда при описании организации своего счетчика ссылок пишут что надо на IRP_MJ_CREATE его увеличивать а на IRP_MJ_CLOSE уменьшать ? и почему может приходить несколько IRP_MJ_CLOSE ?
Re[3]: подсчет ссылок на файл обджект
От: Злость Россия  
Дата: 25.06.04 12:49
Оценка:
Здравствуйте, Аноним, Вы писали:

[skip]

З>>IRP_MJ_CLEANUP — приходит когда все handle закрыты. Тоесть у обьекта счетчик описателей достиг нуля.

З>>IRP_MJ_CLOSE — приходит когда счетчик ссылок достиг нуля.

А>почему тогда при описании организации своего счетчика ссылок пишут что надо на IRP_MJ_CREATE его увеличивать а на IRP_MJ_CLOSE уменьшать ? и почему может приходить несколько IRP_MJ_CLOSE ?


если вы имелли введу то что написанно здесь до я не вижу там упоминания о том что IRP_MJ_CLOSE.

И там написано что — возможны операции с файлом уже полсе IRP_MJ_CLEANUP и IRP_MJ_CLOSE.

Или о том что если используются IoCreateStreamFileXXX — то пропускается операция IRP_MJ_CREATE. И в результате придет IRP_MJ_CLOSE о котором фильтр ничего не знает.

Может я конечно и сам запутался, но я юзаю теневое устройство. И меня больше волнует — то что запись может происходить после IRP_MJ_CLEANUP и IRP_MJ_CLOSE. А второй случай скорее всего не возникнет.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[3]: подсчет ссылок на файл обджект
От: vstrogov Россия  
Дата: 29.06.04 21:52
Оценка:
Здравствуйте, Аноним, Вы писали:


А>почему тогда при описании организации своего счетчика ссылок пишут что надо на IRP_MJ_CREATE его увеличивать а на IRP_MJ_CLOSE уменьшать ? и почему может приходить несколько IRP_MJ_CLOSE ?


Несколько IRP_MJ_CLOSE может приходить на отслеживаемый FileObject->FsContext, а на FileObject один IRP_MJ_CLOSE должен приходить.
Re[4]: подсчет ссылок на файл обджект
От: Аноним  
Дата: 30.06.04 08:22
Оценка:
Здравствуйте, vstrogov, Вы писали:

V>Здравствуйте, Аноним, Вы писали:



А>>почему тогда при описании организации своего счетчика ссылок пишут что надо на IRP_MJ_CREATE его увеличивать а на IRP_MJ_CLOSE уменьшать ? и почему может приходить несколько IRP_MJ_CLOSE ?


V>Несколько IRP_MJ_CLOSE может приходить на отслеживаемый FileObject->FsContext, а на FileObject один IRP_MJ_CLOSE должен приходить.


а где указано на что пришел IRP_MJ_CLOSE — на FileObject->FsContext или на FileObject ?
Re[5]: подсчет ссылок на файл обджект
От: vstrogov Россия  
Дата: 30.06.04 09:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, vstrogov, Вы писали:


V>>Здравствуйте, Аноним, Вы писали:



А>>>почему тогда при описании организации своего счетчика ссылок пишут что надо на IRP_MJ_CREATE его увеличивать а на IRP_MJ_CLOSE уменьшать ? и почему может приходить несколько IRP_MJ_CLOSE ?


V>>Несколько IRP_MJ_CLOSE может приходить на отслеживаемый FileObject->FsContext, а на FileObject один IRP_MJ_CLOSE должен приходить.


А>а где указано на что пришел IRP_MJ_CLOSE — на FileObject->FsContext или на FileObject ?


Нигде не указано, нужно самостоятельно все реализовать. Как описано в упомянутой статье или подобным образом.
Re[5]: подсчет ссылок на файл обджект
От: Злость Россия  
Дата: 30.06.04 13:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, vstrogov, Вы писали:


V>>Здравствуйте, Аноним, Вы писали:



А>>>почему тогда при описании организации своего счетчика ссылок пишут что надо на IRP_MJ_CREATE его увеличивать а на IRP_MJ_CLOSE уменьшать ? и почему может приходить несколько IRP_MJ_CLOSE ?


V>>Несколько IRP_MJ_CLOSE может приходить на отслеживаемый FileObject->FsContext, а на FileObject один IRP_MJ_CLOSE должен приходить.


А>а где указано на что пришел IRP_MJ_CLOSE — на FileObject->FsContext или на FileObject ?


Не путайте — в этом выражении одно множество покрывает другое.

Несколько разных FileObject могут иметь одинаковый FileObject->FsContext.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.