Marshal::StringToBSTR Method (String^)


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

Allocates a BSTR and copies the contents of a managed String into it.

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

static IntPtr StringToBSTR(
	String^ s


Type: System::String^

The managed string to be copied.

Return Value

Type: System::IntPtr

An unmanaged pointer to the BSTR, or 0 if s is null.

Exception Condition

There is insufficient memory available.


The length for s is out of range.

StringToBSTR is useful for custom marshaling or when mixing managed and unmanaged code. Because this method allocates the unmanaged memory required for a string, always free the BSTR when finished by calling Marshal::FreeBSTR. This method provides the opposite functionality of Marshal::PtrToStringBSTR.


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
Windows Phone
Available since 8.1
Return to top