2008-12-01 3 views
0

Любые предложения по выяснению этой аварии?VB6: ошибки Capicom на WinXP

Приведенный ниже код прерывается между регистрацией <part>14 и протоколом <part>15. Plaintext - это строка пути (в данном случае это "C:\Documents and Settings\Brian\Desktop\Joy\", несмотря на явное отсутствие такой радости. У меня чувство тонуса, это симптом какой-то злой проблемы памяти. Я пробовал как с Capicom 2.1.0.1, так и с 2.1.0.2 , оба из которых связаны с сбоем, а последнее дает стандартное сообщение с сообщением об ошибках, первое умирает молча (т.е. программа закрывается). Я тестировал его на чужой машине XP с той же проблемой, хотя она отлично работала на Vista.

Const curMthd = "EncryptStringWrap" 
Dim Message As CAPICOM.EncryptedData 
Set Message = New CAPICOM.EncryptedData 
Dim oUtil As CAPICOM.Utilities 
Set oUtil = New CAPICOM.Utilities 
E.ErrorLog "<PART>14" 
Message.Content = plaintext 
E.ErrorLog "<PART>15" 

Редактировать: Это не те данные, которые вызывают проблему. Я вручную передавал данные для проверки на это, он работает нормально нормально. Досадно, ошибка исчезла, когда я поставил тестовый код в инициализацию Evil heisenbug: (Возможно, проблема с памятью :(

Редактировать 2: Переписать и еще что-то here и закрыто. Не совсем такой же вопрос, как и сам по себе, но этот вопрос был основан на серьезном непонимании проблемы.

ответ

0

Чернила могут привести к тому, что CAPICOM не будет правильно обрабатывать строки. Поместив код в цикл, в котором вы пишете разные строки, вы можете узнать, что представляет собой последовательность проблем.

Учитывая, что CAPICOM является оберткой вокруг cryptoAPI, это может дать вам еще один путь, в котором вы запускаете тестовый проект, напрямую обращающийся к Crypto API, используя одну и ту же последовательность вызовов того же типа. От чтения в Интернете есть тонкая обертка.

У MSDN есть пример кода here Там также доступно.

Я столкнулся со многими проблемами с различными «оберткими» DL DL. Найдите данные, которые вызывают проблему. Напишите тестовый проект с использованием Win API напрямую, используя те же данные. Затем оцените.

Результаты, как правило, либо я реализую свою собственную упаковку. Или обнаружите, что мне не хватает шага или неправильной конфигурации.

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

+0

Собственно, этот код из обертки. И он работал: / – Brian 2008-12-01 20:37:16

 Смежные вопросы

  • Нет связанных вопросов^_^