|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Pinning a managed structureHi 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 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 ); Show quote "Ulrich Sprick" wrote: > 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 > > > Ulrich,
>I only found the C# fixed() statement, but the structure is used throughout Then pinning isn't the right choice at all, it's only meant for short>the whole application lifetime, so fixed() does not seem to be the method of >choice... 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 Please reply only to the newsgroup. |
|||||||||||||||||||||||