информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Win32] Запись в реестре сразу сохраняется на диске, или? 19.07.01 13:12  Число просмотров: 900
Автор: prop Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Можно попробовать отключить кэширование записи на диск (в 9х/Ме) - тогда теоретически должно заработать Open/Close. Правда будет притормаживать система, но насколько сильно не знаю. Все покажет практика.
<programming>
[Win32] Запись в реестре сразу сохраняется на диске, или? 19.07.01 11:21  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Нужно сохранять слово на диске так, чтобы в случае вырубания света быть максимально уверенным, что это действительно последнее, поступившее значение. В реестре проще всего, но можно ли гарантировать, что это сразу пишется на диск, а не сидит в кэше? Если гарантировать с реестром нельзя, то как это лучше сделать с файлом? Каждый раз open... close?
[Win32] Запись в реестре сразу сохраняется на диске, или? 20.07.01 01:32  
Автор: kabanchik Статус: Незарегистрированный пользователь
Отредактировано 20.07.01 01:34  Количество правок: 1
<"чистая" ссылка>
> Нужно сохранять слово на диске так, чтобы в случае
> вырубания света быть максимально уверенным, что это
> действительно последнее, поступившее значение. В реестре
> проще всего, но можно ли гарантировать, что это сразу
> пишется на диск, а не сидит в кэше? Если гарантировать с
> реестром нельзя, то как это лучше сделать с файлом? Каждый
> раз open... close?

если будешь писать в рестр, то для принудительной записи тебе придется вызывать ф-ию - RegFlushKey().

можно использовать файл, через API :
HANDLE CreateFile(
  LPCTSTR lpFileName,                         // file name
  DWORD dwDesiredAccess,                      // access mode
  DWORD dwShareMode,                          // share mode
  LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
  DWORD dwCreationDisposition,                // how to create
  DWORD dwFlagsAndAttributes,                 // file attributes
  HANDLE hTemplateFile                        // handle to template file
);

---
обрати внимание на dwFlagsAndAttributes , если в нем есть бит FILE_FLAG_NO_BUFFERING, то не будет никакого кеша. вот что написано :

FILE_FLAG_NO_BUFFERING - Instructs the system to open the file with no intermediate buffering or caching. When combined with FILE_FLAG_OVERLAPPED, the flag gives maximum asynchronous performance, because the I/O does not rely on the synchronous operations of the memory manager. However, some I/O operations will take longer, because data is not being held in the cache.
An application must meet certain requirements when working with files opened with FILE_FLAG_NO_BUFFERING:

File access must begin at byte offsets within the file that are integer multiples of the volume's sector size.
File access must be for numbers of bytes that are integer multiples of the volume's sector size. For example, if the sector size is 512 bytes, an application can request reads and writes of 512, 1024, or 2048 bytes, but not of 335, 981, or 7171 bytes.
Buffer addresses for read and write operations should be sector aligned (aligned on addresses in memory that are integer multiples of the volume's sector size). Depending on the disk, this requirement may not be enforced.
One way to align buffers on integer multiples of the volume sector size is to use VirtualAlloc to allocate the buffers. It allocates memory that is aligned on addresses that are integer multiples of the operating system's memory page size. Because both memory page and volume sector sizes are powers of 2, this memory is also aligned on addresses that are integer multiples of a volume's sector size.

An application can determine a volume's sector size by calling the GetDiskFreeSpace function.
Удачных тебе тестов :-) 19.07.01 14:30  
Автор: Cyril Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Нужно сохранять слово на диске так, чтобы в случае
> вырубания света быть максимально уверенным, что это
> действительно последнее, поступившее значение. В реестре
> проще всего, но можно ли гарантировать, что это сразу
> пишется на диск, а не сидит в кэше? Если гарантировать с
> реестром нельзя, то как это лучше сделать с файлом? Каждый
> раз open... close?

А для чего же придумали UPS cпрашивается.

Можно сохранять слово 2 раза, тогда при сбое питания можно проверить
не повредились ли данные. А вообще последствия выключения питания предсказать не возможно.
[Win32] Запись в реестре сразу сохраняется на диске, или? 19.07.01 13:12  
Автор: prop Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Можно попробовать отключить кэширование записи на диск (в 9х/Ме) - тогда теоретически должно заработать Open/Close. Правда будет притормаживать система, но насколько сильно не знаю. Все покажет практика.
... continue... 19.07.01 12:07  
Автор: _glory_ Статус: Незарегистрированный пользователь
<"чистая" ссылка>
... @#$ тяжело по пьяни в форум писать .. мимо клавишь промахиваешься часто...
.. ну так вот:
короче операционка сама решает когда вызывать функции драйвера а когда отложить их вызов до лучших времен..
есть конечно соответствующие алгоритмы, но это надо документацию по ним раздобыть, софтайсом я думаю за#^&шься раскапывать.
open - close тоже может не подействовать 19.07.01 12:03  
Автор: _glory_ Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все дело в том, что операционка сама решает, писать ей файл на диск, или держать его в кэше. И от конкретной функции это не зависит - в конечном счете все дисковые операции - это вызовы соответствующих функций драйвера файловов
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach