2013-10-08 42 views
1

可以將SuppressUnmanagedCodeSecurityAttribute應用於COM Interop接口以提高性能,還是僅適用於優化原生函數調用? MSDN says可以將SuppressUnmanagedCodeSecurityAttribute應用於COM Interop接口嗎?

該屬性時施加到的PInvoke方法(或包含PInvoke的方法的類)或通過其互操作呼叫將被製造的接口的定義是唯一有效的。在所有其他情況下它將被忽略。

但是,我不完全確定它是否包含COM interop。

回答

1

或通過互操作的調用將作出

談到有關COM接口的接口定義。必須將該屬性應用於接口聲明才能生效。請注意,要獲得多少硬件,COM接口通常在由Tlbimp.exe生成的互操作庫中聲明。缺少自動生成屬性的選項。實際上,如果你自己聲明接口,你只能這樣做。

+0

每次我使用TlbImp時,生成的代碼都與奇怪的類型混亂,所以我不得不反編譯代碼並自己聲明所有類型......順便說一句,你知道[MethodImpl(InternalCall,運行時)'是爲](http://stackoverflow.com/questions/19254109/what-does-methodimplattributeinternalcall-runtime-do-for-methods-of-com-inter)? TlbImp也生成它... – Athari

+0

它只是一個告訴抖動的屬性,該方法的代碼在其他地方,並且該方法不應該直接調用。 –

+0

它有什麼實質性的影響?是否更好地添加此屬性? – Athari

1

根據this MS page,您可以讓Tlbimp.exe通過傳遞「/ unsafe」開關將SuppressUnmanagedCodeSecurity屬性應用於您的COM接口。我可以確認它的工作原理與簡單的測試TLB一樣。