В настоящее время я пытаюсь вызвать некоторый неуправляемый код из приложения вне браузера Silverlight 4 с повышенными привилегиями.
Мой простой тестовый код не выполняется с ArgumentException.
try
{
dynamic watch = AutomationFactory.CreateObject("WatchCOMLib.HighPerformanceWatch");
// Displays ...AutomationMetaObjectProvider
MessageBox.Show(watch.ToString());
// Fails with ArgumentException: Could not convert an argument for the call to GetTimestamp
ulong tsc;
watch.GetTimestamp(out tsc);
MessageBox.Show(tsc.ToString());
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
Я создал библиотеку COM с помощью мастера шаблонов Visual Studio 2010 ATL; метод выглядит как
STDMETHODIMP CHighPerformanceWatch::GetTimestamp(ULONGLONG* tsc)
{
// ....
*tsc = result; // result is unsigned __int64
return S_OK;
}
Когда я просто передаю tsc в GetTimestamp без указания ключевого слова out, исключение не выдается, но tsc не изменяется.
Теперь ... как я могу получить значение из неуправляемой библиотеки?
Теперь может отсутствовать много информации. Я создал несколько руководств Hello-World для создания этой библиотеки COM, но на самом деле я понятия не имею, что там происходит. знак равно
Пожалуйста, попросите все, что вам нужно!