Groups | Blog | Home
all groups > dotnet framework > june 2006 >

dotnet framework : Pinning a managed structure



William Sullivan
6/29/2006 8:31:03 AM
I believe you have to grab a GC handle for the object and pass the
constructor an enum saying that you want it to be pinned. From an example I
snagged:

GCHandle dontMoveMe = GCHandle.Alloc( thePinnedObject, GCHandleType.Pinned );

[quoted text, click to view]
Ulrich Sprick
6/29/2006 2:43:30 PM
Hi all,

is there a simple possibility to pin down a C# class member (a structure) so
that I can use it in an unmanaged DLL?
I only found the C# fixed() statement, but the structure is used throughout
the whole application lifetime, so fixed() does not seem to be the method of
choice...

Any ideas?

Thanks in advance,
ulrich

Mattias Sjögren
6/30/2006 7:30:09 PM
Ulrich,

[quoted text, click to view]

Then pinning isn't the right choice at all, it's only meant for short
periods of time. Have you considered allocating and sharing an
unmanaged memory buffer between your managed and native code? On the
C# side you can read and write a struct to/from that buffer.


Mattias

--
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
AddThis Social Bookmark Button