CoSetProxyBlanket (ole32)
Last changed: -80.3.32.5

.
Summary
The CoSetProxyBlanket API is not safe for use from managed code {please read items below, as this may not be true}

C# Signature:

[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);

User-Defined Types:

None.

Notes:

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.....

Tips & Tricks:

Please add some!

Sample Code:

Please see http://msdn2.microsoft.com/en-us/library/aa302389.aspx#secnetch09_callingservicedcompaspnet

Alternative Managed API:

Do you know one? Please contribute it!

Documentation