[DllImport("ole32.dll")]
static extern int CoSetProxyBlanket([MarshalAs(UnmanagedType.IUnknown)]
object pProxy, uint dwAuthnSvc, uint dwAuthzSvc,
[MarshalAs(UnmanagedType.LPWStr)] string pServerPrincName, uint dwAuthnLevel,
uint dwImpLevel, IntPtr pAuthInfo, uint dwCapabilities);
None.
This method is not safe to use from managed code! Due to the way the CLR internally deals with COM interface proxies, this method is not guaranteed to work correctly. Future versions of the CLR (or service packs or hotfixes or OS configurations) may cause calls that are succeeding with earlier versions fail.
Please look at http://msdn2.microsoft.com/en-us/library/aa302389.aspx#secnetch09_callingservicedcompaspnet, which shows how to call CoSetProxyBlanket in C#. As this is published on the MS Patterns and Practices web site I would assume this would be OK and is safe {contradicts statement above}. This reference has code and discusses the issues about transition from .net object to COM IUnknown reference. This seems to contradict the note above.....
Please add some!
Please see http://msdn2.microsoft.com/en-us/library/aa302389.aspx#secnetch09_callingservicedcompaspnet
Do you know one? Please contribute it!