Почему приложение MFC ведет себя таинственно в зашифрованной среде жесткого диска - PullRequest
0 голосов
/ 28 марта 2010

Я работаю над ошибкой, когда у меня есть приложение MFC, которое делает странные вещи при установке, когда установлено шифрование жесткого диска Sophos Safeguard. Мне жаль, что я так расплывчато здесь, но я пишу это вне офиса, так что это все из моей (плохой) памяти.

Три вещи, которые я заметил:

  1. AfxGetResourceHandle () не возвращает согласованный дескриптор ресурса. В одном случае мы пытаемся загрузить строковый ресурс, и по какой-то причине дескриптор ресурса, который мы получаем этим методом, отличается от всех других строк.

  2. Невозможно создать шаблон CDocumentTemplate. Существует ошибка трассировки, которую я не могу вспомнить. Отредактирую и опубликую, когда я завтра.

  3. Такое поведение проявляется в версии проекта для Visual Studio 2005, но не в версии Visual Studio 2008. К сожалению, перейти на версию 2008 года не вариант.

Ошибка не всегда воспроизводима, если я перехожу к отладчику. Кроме того, появление окон отладочных сообщений меняет поведение, что заставляет меня думать, что либо есть какое-то состояние гонки, возникающее при обработке событий MFC, но я не уверен, как я узнаю наверняка или даже что я могу с этим поделать, если бы сделал.

Я думаю, что есть какая-то причина, по которой приложение ведет себя странно, но я выложил больше симптомов. Кто-нибудь может подумать, что я должен проверить?

Я запустил обновление Windows в тестовой среде, чтобы убедиться, что все обновлено, и я проверил процесс в procmon, чтобы убедиться, что шифрование диска мешает и конфликтует с файлами - это не так. Похоже, что это так, но наше приложение каким-то образом связано с тем, что наше приложение обращается к путям, связанным с Sophos, во временном каталоге.

Ответы [ 2 ]

0 голосов
/ 15 июня 2010

Оказалось, что антивирусное программное обеспечение внедряется таким образом, что дескрипторы ресурсов антивирусного программного обеспечения перекрывают дескрипторы ресурсов приложения. Тьфу!

0 голосов
/ 28 марта 2010

Если ваш код является многопоточным (что, как я полагаю, так как вы упомянули о возможности состояния гонки), то вероятность того, что задержки при расшифровке выявляют недостатки параллелизмаВозможно, вы захотите попробовать запустить приложение с сетевого ресурса или аналогичного устройства с медленным доступом, чтобы проверить, не возникает ли у него аналогичных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...