DllImportAttribute.PreserveSig vs PreserveSigAttribute
DllImportAttribute.PreserveSig -
- Mainly used in PInvoke Signatures
- By default, while using DllImportAttribute to p-invoke, the DllImportAttribute.PreserveSig is set to true.
- If false: Converts returned HRESULTS from unmanaged signature to managed exceptions if they are not S_OK.
- If true: Does not convert returned HRESULT to exceptions.
PreserveSigAttribute (pseudo custom attribute)–
- This is mainly used in COM interface definitions in managed code.
- By default, for COM interface methods, the CLR does HRESULT to exception transformations (opposite behavior to that of pinvoke).
- If attribute applied: Does not convert returned HRESULT to exceptions.
- If attribute not applied: Default behavior of HRESULT to exception transformations.
My short-term memory is bad and I tend to forget things as soon as I learn them. So I jotted this down while I was reading Adam Nathan's excellent manuscript on COM interop. Hope you find this tidbit useful as well.