Здравствуйте, x64, Вы писали:
E>>Необходимо при выключении компа скинуть этот кешь...
x64>IoRegisterShutdownNotification()
E>>...в файл, который может находиться на любом диске разумеется.
x64>Это проблема?
E>>Получается нужно дождаться такого момента, когда винда сама скинешь данные на мой виртуальный диск...
x64>Зачем ждать? x64>Форсируй в нотификаторе.
E>>...и плсю к этому диск где лежит мой файл должен быть доступен для файловых операций.
x64>Опять же, это проблема?
Тут скорее вопрос не когда скидывать данные, а как сделать нужную очередность скидывания кеша. Вот пример такой:
Есть виртуальный диск, пусть на нем будит виртуальный партиция, которая маунтится на букву Z.
Есть файл, который лежит C:\Data_Z.dat
Начался процесс завершения виндовса, я поймал уведомление шатдауна.
1 — Поймал уведомление.
2 — Вызвал запись на диск С (Далее я думаю что больше данных не придет)
4 — В мой кешь пришли данные которые винда скинула со своего внутреннего кеша.
5 — Что мне с ними делать?
Если же предположить что на момент нотификации шатдауна все кеши пусты и запись невозможна, то и я уже не сохраню то что осталось лежать у меня в кеше. Получается закалдованный круг, который может победить лишь очередностью разрушения дисковых/FS стеков. Типа сначала полностью отработает мой стек, а потом тот на котором лежит мой файл.
ЗЫ: В Виндовсе 7 насколько я понял есть решение этой проблемы, там при создании дискового стека приходит запрос на зависимость IOCTL_STORAGE_DEPENDENT_DISK, но нигде не могу найти описание структуры для ответа. Размерность 20 байт. В инете вообще нет упоминания про этот контрол и тем более по структурам.