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