Desktop Functions: Smart Device Functions:
|
CoGetInterfaceAndReleaseStream (ole32)
C# Signature:
[DllImport("ole32.dll")] User-Defined Types:None. Notes:None. Tips & Tricks:In my experience, the above signature causes an internal access violation (caught before the function returns). After that, even though the function returns success (S_OK), the resulting object can sometimes be unusable. The exception happened every time, but the unusable result was intermittent. Suggested fix: Instead of
[MarshalAs(UnmanagedType.IUnknown)] out object ppv Use
[Out] out System.IntPtr ppv Then, call the function like this: IntPtr unk = 0; try{ Marshal.ThrowExceptionForHR(CoGetInterfaceAndReleaseStream(pStm, riid, out unk)); object ppv = Marshal.GetObjectForIUnknown(unk); } finally{ Marshal.Release(unk); } Sample Code:Please add some! Alternative Managed API:Do you know one? Please contribute it! Please edit this page!Do you have...
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more). |
|