Marshal.StringToBSTR Method (String)


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

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

public 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