Код: Выделить всё
[PreserveSig]
HRESULT GetKeyValue(
[In, MarshalAs(UnmanagedType.LPWStr)] string key,
[Out, MarshalAs(UnmanagedType.Interface)] out IModelObject @object,
[Out, MarshalAs(UnmanagedType.Interface)] out IKeyStore metadata);
Код: Выделить всё
//Decompiled native code of what the third party native module
//is doing when it invokes my CCW
(*(*ccw + 40i64))(ccw, L"ActionName", &object, 0i64); // GetKeyValue
Когда COM-объекты реализованный на C++, это довольно распространенный шаблон - иметь дополнительные параметры, которым вы можете передать NULL, которые COM-объект будет проверять, чтобы определить, нужно ли ему выполнять какую-либо работу для этого параметра, поэтому я не уверен я просто не понимаю, как можно обойти эту проблему, или это действительно недосмотр в конструкции встроенного .NET Marshaller?
Подробнее здесь: https://stackoverflow.com/questions/783 ... -parameter