Re[2]: Когда скидывать данные на диск.
От: Ernesto  
Дата: 18.09.12 19:18
Оценка:
Здравствуйте, 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 байт. В инете вообще нет упоминания про этот контрол и тем более по структурам.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.