Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
MSDN Library

Marshal::PtrToStructure<T> Method (IntPtr, T)

[Supported in the .NET Framework 4.5.1 and later versions]

Marshals data from an unmanaged block of memory to a managed object of the specified type.

Namespace:  System.Runtime.InteropServices
Assemblies:   System.Runtime.InteropServices (in System.Runtime.InteropServices.dll)
  mscorlib (in mscorlib.dll)

generic<typename T>
static void PtrToStructure(
	IntPtr ptr, 
	T structure

Type Parameters


The type of structure. This must be a formatted class.


Type: System::IntPtr

A pointer to an unmanaged block of memory.

Type: T

The object to which the data is to be copied.


Structure layout is not sequential or explicit.

PtrToStructure<T>(IntPtr, T) is often necessary in COM interop and platform invoke when structure parameters are represented as IntPtr values. You cannot use this method overload with value types.

.NET Framework

Supported in: 4.6, 4.5.1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

  • SecurityCriticalAttribute 

    requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

© 2015 Microsoft