2017-01-31 1 views
1

У меня есть встроенное устройство Windows 7, которое часто питается так: локальное приложение записывает запись в журнал событий приложения, и через несколько секунд он управляет настраиваемым источником питания для питания цикла. Чистое завершение работы Windows невозможно. После перезагрузки устройства я проверяю журнал событий Windows и замечаю, что последняя запись отсутствует.Как очистить журнал событий Windows на диск?

Есть ли способ сбросить журнал событий Windows на диск, чтобы я не пропустил эту последнюю запись? Приложение написано на C++.

Спасибо, Аднан

+1

Почему вы думаете, это имеет значение? Какую * актуальную * проблему вы пытаетесь решить? Сама ОС позаботится об этом и гарантирует, что события всегда сохраняются ** предполагая **, что вы использовали правильные функции. Отправьте свой код –

+0

BTW, если ваше приложение вызывает ненормальное завершение работы, вы должны исправить приложение. Это может быть потеряно не только ваше сообщение о событии - вы также потеряете данные, может привести к повреждению несохраненных или частично сохраненных файлов. –

+0

«Актуальная» проблема связана с оборудованием. Система содержит настраиваемые платы, которые работают неправильно, и требуют разрешения питания. Правильное решение заключается в том, чтобы исправить аппаратное обеспечение, но это выходит за рамки моей компетенции. Тот же источник питания также включает встроенный SBC для Windows. Функция api для Windows ReportEvent используется для записи в журнал событий, и сообщение COM-порта отправляется на источник питания, чтобы рассказать об этом. – adnan

ответ

1

У вас есть проблемы с аппаратным обеспечением, поэтому лучшим решением будет разрешить его на аппаратном уровне. Но двигаться дальше.

Использование BIOS для обеспечения компьютера всегда начинается после цикла питания

У вас есть аппаратные средства для выполнения перезагрузки. Могли бы вы перенастроить, что так, что вместо того, чтобы делать жесткий цикл питания, когда компьютер работает, вы:

  • уведомляют инструмент цикла питания аппаратного обеспечения,
  • выполнить процедуру завершения работы, а затем
  • мощность компьютера, на снова используя аппаратный переключатель питания?

Обычно существует установка биоса, которая позволяет указать действие после силового цикла, например.

  • Оставьте компьютер выключенным,
  • Включите его,
  • Включите его только если он был включен, когда власть была потеряна.

Если вы можете это сделать, вы все равно можете выполнить упорядоченное завершение работы и дождаться завершения этого процесса, прежде чем снова включить питание.

Software Решение: Выключите кэширование записи на диск

Это не совсем ясно, что вызывает проблему, но следующий, кажется уместным.

Скорее всего, это результат кэширования записи на диске либо с помощью оборудования контроллера диска, либо операционной системы.

Вы можете отключить это с помощью инструмента управления дисками:

Software Solution: Флеш диск программно

В качестве альтернативы, вы можете быть в состоянии для программной очистки флеш-диска.Этот инструмент может помочь:

Или действительно с помощью WMI и PowerShell:

+0

Бен, спасибо за хорошие предложения. Я попытался вручную очистить дисковый кэш с помощью утилиты синхронизации SysInternals, как вам было предложено, но не удался. Я попытаюсь отключить кеш записи диска, но я не уверен, что это будет хорошим решением в долгосрочной перспективе для производительности. – adnan

+0

Это было бы неплохо для исполнения, вы здесь. Но это нехорошие решения. Если у вас есть хорошее решение, вы должны использовать это вместо :-) Если нет, я надеюсь, что это поможет. – Ben