Marshal::PtrToStringUni Method (IntPtr, Int32)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Allocates a managed String and copies a specified number of characters from an unmanaged Unicode string into it.

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

static String^ PtrToStringUni(
	IntPtr ptr,
	int len


Type: System::IntPtr

The address of the first character of the unmanaged string.

Type: System::Int32

The number of Unicode characters to copy.

Return Value

Type: System::String^

A managed string that holds a copy of the unmanaged string if the value of the ptr parameter is not null; otherwise, this method returns null.

PtrToStringUni is useful for custom marshaling or when mixing managed and unmanaged code. Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. This method provides the opposite functionality of the Marshal::StringToCoTaskMemUni and Marshal::StringToHGlobalUni methods.


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

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top