Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Marshal.Copy Method (IntPtr, IntPtr(), Int32, Int32)

Copies data from an unmanaged memory pointer to a managed IntPtr array.

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

'Declaration
Public Shared Sub Copy ( _
	source As IntPtr, _
	destination As IntPtr(), _
	startIndex As Integer, _
	length As Integer _
)

Parameters

source
Type: System.IntPtr

The memory pointer to copy from.

destination
Type: System.IntPtr()

The array to copy to.

startIndex
Type: System.Int32

The zero-based index in the destination array where copying should start.

length
Type: System.Int32

The number of array elements to copy.

ExceptionCondition
ArgumentNullException

source, destination, startIndex, or length is Nothing.

Unmanaged, C-style arrays do not contain bounds information, which prevents the startIndex and length parameters from being validated. Therefore, the unmanaged data that corresponds to the source parameter populates the managed array regardless of its usefulness. You must initialize the managed array with the appropriate size before calling the Marshal.Copy method.

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Portable Class Library

Supported in: Portable Class Library

  • SecurityCriticalAttribute 

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

Show:
© 2015 Microsoft