прочитал "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 ?
Здравствуйте, Аноним, Вы писали:
А>прочитал "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 ?
[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. А второй случай скорее всего не возникнет.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
А>почему тогда при описании организации своего счетчика ссылок пишут что надо на 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 ?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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 ?
Нигде не указано, нужно самостоятельно все реализовать. Как описано в упомянутой статье или подобным образом.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.