Marshal Class

Provides a collection of methods for allocating unmanaged memory, copying unmanaged memory blocks, and converting managed to unmanaged types, as well as other miscellaneous methods used when interacting with unmanaged code.

System.Object
  System.Runtime.InteropServices.Marshal

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

public static class Marshal

The Marshal type exposes the following members.

  NameDescription
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsAddRefIncrements the reference count on the specified interface.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsAllocCoTaskMemAllocates a block of memory of specified size from the COM task memory allocator.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsAllocHGlobal(Int32)Allocates memory from the unmanaged memory of the process by using the specified number of bytes.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsAllocHGlobal(IntPtr)Allocates memory from the unmanaged memory of the process by using the pointer to the specified number of bytes.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsAreComObjectsAvailableForCleanupIndicates whether runtime callable wrappers (RCWs) from any context are available for cleanup.
Public methodStatic memberSupported by Portable Class LibraryBindToMonikerGets an interface pointer identified by the specified moniker.
Public methodStatic memberChangeWrapperHandleStrengthChanges the strength of an object's COM Callable Wrapper (CCW) handle.
Public methodStatic memberSupported by Portable Class LibraryCleanupUnusedObjectsInCurrentContextNotifies the runtime to clean up all Runtime Callable Wrappers (RCWs) allocated in the current context.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Byte[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed 8-bit unsigned integer array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Char[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed character array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Double[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed double-precision floating-point number array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Int16[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed 16-bit signed integer array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Int32[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed 32-bit signed integer array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Int64[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed 64-bit signed integer array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Byte[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed 8-bit unsigned integer array.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Char[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed character array.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Double[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed double-precision floating-point number array.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Int16[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed 16-bit signed integer array.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Int32[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed 32-bit signed integer array.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Int64[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed 64-bit signed integer array.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, IntPtr[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed IntPtr array.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr, Single[], Int32, Int32)Copies data from an unmanaged memory pointer to a managed single-precision floating-point number array.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(IntPtr[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed IntPtr array to an unmanaged memory pointer.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsCopy(Single[], Int32, IntPtr, Int32)Copies data from a one-dimensional, managed single-precision floating-point number array to an unmanaged memory pointer.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsCreateAggregatedObject(IntPtr, Object)Aggregates a managed object with the specified COM object.
Public methodStatic memberCreateAggregatedObject<T>(IntPtr, T)[Supported in the .NET Framework 4.5.1 and later versions] Aggregates a managed object of the specified type with the specified COM object.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsCreateWrapperOfType(Object, Type)Wraps the specified COM object in an object of the specified type.
Public methodStatic memberCreateWrapperOfType<T, TWrapper>(T)[Supported in the .NET Framework 4.5.1 and later versions] Wraps the specified COM object in an object of the specified type.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsDestroyStructure(IntPtr, Type)Frees all substructures that the specified unmanaged memory block points to.
Public methodStatic memberDestroyStructure<T>(IntPtr)[Supported in the .NET Framework 4.5.1 and later versions] Frees all substructures of a specified type that the specified unmanaged memory block points to.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsFinalReleaseComObjectReleases all references to a Runtime Callable Wrapper (RCW) by setting its reference count to 0.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsFreeBSTRFrees a BSTR using the COM SysFreeString function.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsFreeCoTaskMemFrees a block of memory allocated by the unmanaged COM task memory allocator.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsFreeHGlobalFrees memory previously allocated from the unmanaged memory of the process.
Public methodStatic memberGenerateGuidForTypeReturns the globally unique identifier (GUID) for the specified type, or generates a GUID using the algorithm used by the Type Library Exporter (Tlbexp.exe).
Public methodStatic memberGenerateProgIdForTypeReturns a programmatic identifier (ProgID) for the specified type.
Public methodStatic memberSupported by Portable Class LibraryGetActiveObjectObtains a running instance of the specified object from the running object table (ROT).
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetComInterfaceForObject(Object, Type)Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Custom query interface access is enabled by default.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Custom query interface access is controlled by the specified customization mode.
Public methodStatic memberGetComInterfaceForObject<T, TInterface>(T)[Supported in the .NET Framework 4.5.1 and later versions] Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. Custom query interface access is enabled by default.
Public methodStatic memberSupported by Portable Class LibraryGetComInterfaceForObjectInContextReturns an interface pointer that represents the specified interface for an object, if the caller is in the same context as that object.
Public methodStatic memberGetComObjectDataRetrieves data that is referenced by the specified key from the specified COM object.
Public methodStatic memberSupported by Portable Class LibraryGetComSlotForMethodInfoRetrieves the virtual function table (v-table or VTBL) slot for a specified System.Reflection.MemberInfo type when that type is exposed to COM.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetDelegateForFunctionPointer(IntPtr, Type)Converts an unmanaged function pointer to a delegate.
Public methodStatic memberGetDelegateForFunctionPointer<TDelegate>(IntPtr)[Supported in the .NET Framework 4.5.1 and later versions] Converts an unmanaged function pointer to a delegate of a specified type.
Public methodStatic memberSupported by Portable Class LibraryGetEndComSlotRetrieves the last slot in the virtual function table (v-table or VTBL) of a type when exposed to COM.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetExceptionCodeRetrieves a code that identifies the type of the exception that occurred.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetExceptionForHR(Int32)Converts the specified HRESULT error code to a corresponding Exception object.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetExceptionForHR(Int32, IntPtr)Converts the specified HRESULT error code to a corresponding Exception object, with additional error information passed in an IErrorInfo interface for the exception object.
Public methodStatic memberSupported by Portable Class LibraryGetExceptionPointersRetrieves a computer-independent description of an exception, and information about the state that existed for the thread when the exception occurred.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetFunctionPointerForDelegate(Delegate)Converts a delegate into a function pointer that is callable from unmanaged code.
Public methodStatic memberGetFunctionPointerForDelegate<TDelegate>(TDelegate)[Supported in the .NET Framework 4.5.1 and later versions] Converts a delegate of a specified type to a function pointer that is callable from unmanaged code.
Public methodStatic memberGetHINSTANCEReturns the instance handle (HINSTANCE) for the specified module.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetHRForExceptionConverts the specified exception to an HRESULT.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetHRForLastWin32ErrorReturns the HRESULT corresponding to the last error incurred by Win32 code executed using Marshal.
Public methodStatic memberSupported by Portable Class LibraryGetIDispatchForObjectReturns an IDispatch interface from a managed object.
Public methodStatic memberSupported by Portable Class LibraryGetIDispatchForObjectInContextReturns an IDispatch interface pointer from a managed object, if the caller is in the same context as that object.
Public methodStatic memberGetITypeInfoForTypeReturns a System.Runtime.InteropServices.ComTypes.ITypeInfo interface from a managed type.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetIUnknownForObjectReturns an IUnknown interface from a managed object.
Public methodStatic memberSupported by Portable Class LibraryGetIUnknownForObjectInContextReturns an IUnknown interface from a managed object, if the caller is in the same context as that object.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetLastWin32ErrorReturns the error code returned by the last unmanaged function that was called using platform invoke that has the DllImportAttribute.SetLastError flag set.
Public methodStatic memberGetManagedThunkForUnmanagedMethodPtr Obsolete. Gets a pointer to a runtime-generated function that marshals a call from managed to unmanaged code.
Public methodStatic memberSupported by Portable Class LibraryGetMethodInfoForComSlotRetrieves a MemberInfo object for the specified virtual function table (v-table or VTBL) slot.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetNativeVariantForObject(Object, IntPtr)Converts an object to a COM VARIANT.
Public methodStatic memberGetNativeVariantForObject<T>(T, IntPtr)[Supported in the .NET Framework 4.5.1 and later versions] Converts an object of a specified type to a COM VARIANT.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetObjectForIUnknownReturns an instance of a type that represents a COM object by a pointer to its IUnknown interface.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetObjectForNativeVariant(IntPtr)Converts a COM VARIANT to an object.
Public methodStatic memberGetObjectForNativeVariant<T>(IntPtr)[Supported in the .NET Framework 4.5.1 and later versions] Converts a COM VARIANT to an object of a specified type.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetObjectsForNativeVariants(IntPtr, Int32)Converts an array of COM VARIANTs to an array of objects.
Public methodStatic memberGetObjectsForNativeVariants<T>(IntPtr, Int32)[Supported in the .NET Framework 4.5.1 and later versions] Converts an array of COM VARIANTs to an array of a specified type.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetStartComSlotGets the first slot in the virtual function table (v-table or VTBL) that contains user-defined methods.
Public methodStatic memberGetThreadFromFiberCookie Obsolete. Converts a fiber cookie into the corresponding System.Threading.Thread instance.
Public methodStatic memberGetTypedObjectForIUnknownReturns a managed object of a specified type that represents a COM object.
Public methodStatic memberSupported by Portable Class LibraryGetTypeForITypeInfoConverts an unmanaged ITypeInfo object into a managed System.Type object.
Public methodStatic memberSupported in .NET for Windows Store appsGetTypeFromCLSIDReturns the type associated with the specified class identifier (CLSID).
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetTypeInfoName(ITypeInfo)Retrieves the name of the type represented by an ITypeInfo object.
Public methodStatic memberGetTypeInfoName(UCOMITypeInfo) Obsolete. Retrieves the name of the type represented by an ITypeInfo object.
Public methodStatic memberGetTypeLibGuid(ITypeLib)Retrieves the library identifier (LIBID) of a type library.
Public methodStatic memberGetTypeLibGuid(UCOMITypeLib) Obsolete. Retrieves the library identifier (LIBID) of a type library.
Public methodStatic memberGetTypeLibGuidForAssemblyRetrieves the library identifier (LIBID) that is assigned to a type library when it was exported from the specified assembly.
Public methodStatic memberGetTypeLibLcid(ITypeLib)Retrieves the LCID of a type library.
Public methodStatic memberGetTypeLibLcid(UCOMITypeLib) Obsolete. Retrieves the LCID of a type library.
Public methodStatic memberGetTypeLibName(ITypeLib)Retrieves the name of a type library.
Public methodStatic memberGetTypeLibName(UCOMITypeLib) Obsolete. Retrieves the name of a type library.
Public methodStatic memberGetTypeLibVersionForAssemblyRetrieves the version number of a type library that will be exported from the specified assembly.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetUniqueObjectForIUnknownCreates a unique Runtime Callable Wrapper (RCW) object for a given IUnknown interface.
Public methodStatic memberGetUnmanagedThunkForManagedMethodPtr Obsolete. Gets a pointer to a runtime-generated function that marshals a call from unmanaged to managed code.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsIsComObjectIndicates whether a specified object represents a COM object.
Public methodStatic memberIsTypeVisibleFromComIndicates whether a type is visible to COM clients.
Public methodStatic memberSupported by Portable Class LibraryNumParamBytesCalculates the number of bytes in unmanaged memory that are required to hold the parameters for the specified method.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsOffsetOf(Type, String)Returns the field offset of the unmanaged form of the managed class.
Public methodStatic memberOffsetOf<T>(String)[Supported in the .NET Framework 4.5.1 and later versions] Returns the field offset of the unmanaged form of a specified managed class.
Public methodStatic memberSupported by the XNA FrameworkPrelinkExecutes one-time method setup tasks without calling the method.
Public methodStatic memberSupported by the XNA FrameworkPrelinkAllPerforms a pre-link check for all methods on a class.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStringAnsi(IntPtr)Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStringAnsi(IntPtr, Int32)Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.
Public methodStatic memberPtrToStringAuto(IntPtr)Allocates a managed String and copies all characters up to the first null character from a string stored in unmanaged memory into it.
Public methodStatic memberPtrToStringAuto(IntPtr, Int32)Allocates a managed String and copies the specified number of characters from a string stored in unmanaged memory into it.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStringBSTRAllocates a managed String and copies a BSTR Data Type string stored in unmanaged memory into it.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStringUni(IntPtr)Allocates a managed String and copies all characters up to the first null character from an unmanaged Unicode string into it.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStringUni(IntPtr, Int32)Allocates a managed String and copies a specified number of characters from an unmanaged Unicode string into it.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStructure(IntPtr, Object)Marshals data from an unmanaged block of memory to a managed object.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsPtrToStructure(IntPtr, Type)Marshals data from an unmanaged block of memory to a newly allocated managed object of the specified type.
Public methodStatic memberPtrToStructure<T>(IntPtr)[Supported in the .NET Framework 4.5.1 and later versions] Marshals data from an unmanaged block of memory to a newly allocated managed object of the type specified by a generic type parameter.
Public methodStatic memberPtrToStructure<T>(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.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsQueryInterfaceRequests a pointer to a specified interface from a COM object.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadByte(IntPtr)Reads a single byte from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadByte(IntPtr, Int32)Reads a single byte at a given offset (or index) from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadByte(Object, Int32)Reads a single byte at a given offset (or index) from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt16(IntPtr)Reads a 16-bit signed integer from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt16(IntPtr, Int32)Reads a 16-bit signed integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt16(Object, Int32)Reads a 16-bit signed integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt32(IntPtr)Reads a 32-bit signed integer from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt32(IntPtr, Int32)Reads a 32-bit signed integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt32(Object, Int32)Reads a 32-bit signed integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt64(IntPtr)Reads a 64-bit signed integer from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt64(IntPtr, Int32)Reads a 64-bit signed integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadInt64(Object, Int32)Reads a 64-bit signed integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadIntPtr(IntPtr)Reads a processor native-sized integer from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadIntPtr(IntPtr, Int32)Reads a processor native sized integer at a given offset from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReadIntPtr(Object, Int32)Reads a processor native sized integer from unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReAllocCoTaskMemResizes a block of memory previously allocated with AllocCoTaskMem.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReAllocHGlobalResizes a block of memory previously allocated with AllocHGlobal.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReleaseDecrements the reference count on the specified interface.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsReleaseComObjectDecrements the reference count of the specified Runtime Callable Wrapper (RCW) associated with the specified COM object.
Public methodStatic memberReleaseThreadCache Obsolete. Releases the thread cache.
Public methodStatic memberSecureStringToBSTRAllocates a BSTR Data Type and copies the contents of a managed SecureString object into it.
Public methodStatic memberSecureStringToCoTaskMemAnsiCopies the contents of a managed SecureString object to a block of memory allocated from the unmanaged COM task allocator.
Public methodStatic memberSecureStringToCoTaskMemUnicodeCopies the contents of a managed SecureString object to a block of memory allocated from the unmanaged COM task allocator.
Public methodStatic memberSecureStringToGlobalAllocAnsiCopies the contents of a managed SecureString into unmanaged memory, converting into ANSI format as it copies.
Public methodStatic memberSecureStringToGlobalAllocUnicodeCopies the contents of a managed SecureString object into unmanaged memory.
Public methodStatic memberSetComObjectDataSets data referenced by the specified key in the specified COM object.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSizeOf(Object)Returns the unmanaged size of an object in bytes.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSizeOf(Type)Returns the size of an unmanaged type in bytes.
Public methodStatic memberSizeOf<T>()[Supported in the .NET Framework 4.5.1 and later versions] Returns the size of an unmanaged type in bytes.
Public methodStatic memberSizeOf<T>(T)[Supported in the .NET Framework 4.5.1 and later versions] Returns the unmanaged size of an object of a specified type in bytes.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsStringToBSTRAllocates a BSTR Data Type and copies the contents of a managed String into it.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsStringToCoTaskMemAnsiCopies the contents of a managed String to a block of memory allocated from the unmanaged COM task allocator.
Public methodStatic memberStringToCoTaskMemAutoCopies the contents of a managed String to a block of memory allocated from the unmanaged COM task allocator.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsStringToCoTaskMemUniCopies the contents of a managed String to a block of memory allocated from the unmanaged COM task allocator.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsStringToHGlobalAnsiCopies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies.
Public methodStatic memberStringToHGlobalAutoCopies the contents of a managed String into unmanaged memory, converting into ANSI format if required.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsStringToHGlobalUniCopies the contents of a managed String into unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsStructureToPtr(Object, IntPtr, Boolean)Marshals data from a managed object to an unmanaged block of memory.
Public methodStatic memberStructureToPtr<T>(T, IntPtr, Boolean)[Supported in the .NET Framework 4.5.1 and later versions] Marshals data from a managed object of a specified type to an unmanaged block of memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsThrowExceptionForHR(Int32)Throws an exception with a specific failure HRESULT value.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsThrowExceptionForHR(Int32, IntPtr)Throws an exception with a specific failure HRESULT, based on the specified IErrorInfo Interface interface.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsUnsafeAddrOfPinnedArrayElement(Array, Int32)Gets the address of the element at the specified index inside the specified array.
Public methodStatic memberUnsafeAddrOfPinnedArrayElement<T>(T[], Int32)[Supported in the .NET Framework 4.5.1 and later versions] Gets the address of the element at the specified index in an array of a specified type.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteByte(IntPtr, Byte)Writes a single byte value to unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteByte(IntPtr, Int32, Byte)Writes a single byte value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteByte(Object, Int32, Byte)Writes a single byte value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt16(IntPtr, Char)Writes a character as a 16-bit integer value to unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt16(IntPtr, Int16)Writes a 16-bit integer value to unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt16(IntPtr, Int32, Char)Writes a 16-bit signed integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt16(IntPtr, Int32, Int16)Writes a 16-bit signed integer value into unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt16(Object, Int32, Char)Writes a 16-bit signed integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt16(Object, Int32, Int16)Writes a 16-bit signed integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt32(IntPtr, Int32)Writes a 32-bit signed integer value to unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt32(IntPtr, Int32, Int32)Writes a 32-bit signed integer value into unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt32(Object, Int32, Int32)Writes a 32-bit signed integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt64(IntPtr, Int64)Writes a 64-bit signed integer value to unmanaged memory.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt64(IntPtr, Int32, Int64)Writes a 64-bit signed integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteInt64(Object, Int32, Int64)Writes a 64-bit signed integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteIntPtr(IntPtr, IntPtr)Writes a processor native sized integer value into unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteIntPtr(IntPtr, Int32, IntPtr)Writes a processor native-sized integer value to unmanaged memory at a specified offset.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsWriteIntPtr(Object, Int32, IntPtr)Writes a processor native sized integer value to unmanaged memory.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsZeroFreeBSTRFrees a BSTR Data Type pointer that was allocated using the SecureStringToBSTR method.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsZeroFreeCoTaskMemAnsiFrees an unmanaged string pointer that was allocated using the SecureStringToCoTaskMemAnsi method.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsZeroFreeCoTaskMemUnicodeFrees an unmanaged string pointer that was allocated using the SecureStringToCoTaskMemUnicode method.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsZeroFreeGlobalAllocAnsiFrees an unmanaged string pointer that was allocated using the SecureStringToGlobalAllocAnsi method.
Public methodStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsZeroFreeGlobalAllocUnicodeFrees an unmanaged string pointer that was allocated using the SecureStringToGlobalAllocUnicode method.
Top

  NameDescription
Public fieldStatic memberSupported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSystemDefaultCharSizeRepresents the default character size on the system; the default is 2 for Unicode systems and 1 for ANSI systems. This field is read-only.
Public fieldStatic memberSupported by Portable Class LibrarySupported in .NET for Windows Store appsSystemMaxDBCSCharSizeRepresents the maximum size of a double byte character set (DBCS) size, in bytes, for the current operating system. This field is read-only.
Top

The static methods defined on the Marshal class are essential to working with unmanaged code. Most methods defined in this class are typically used by developers who want to provide a bridge between the managed and unmanaged programming models. For example, the StringToHGlobalAnsi method copies ANSI characters from a specified string (in the managed heap) to a buffer in the unmanaged heap. It also allocates the target heap of the right size.

The common language runtime provides specific marshaling capabilities. For details on marshaling behavior, see Interop Marshaling.

The Read and Write methods in the Marshal class support both aligned and unaligned access.

The following example shows how to use various methods defined by the Marshal class.

using System;
using System.Text;
using System.Runtime.InteropServices;

public struct Point
{
    public Int32 x, y;
}


public sealed class App
{
    static void Main()
    {
        // Demonstrate the use of public static fields of the Marshal class.
        Console.WriteLine("SystemDefaultCharSize={0}, SystemMaxDBCSCharSize={1}",
            Marshal.SystemDefaultCharSize, Marshal.SystemMaxDBCSCharSize);

        // Demonstrate the use of the SizeOf method of the Marshal class.
        Console.WriteLine("Number of bytes needed by a Point object: {0}", 
            Marshal.SizeOf(typeof(Point)));
        Point p = new Point();
        Console.WriteLine("Number of bytes needed by a Point object: {0}",
            Marshal.SizeOf(p));

        // Demonstrate how to call GlobalAlloc and  
        // GlobalFree using the Marshal class.
        IntPtr hglobal = Marshal.AllocHGlobal(100);
        Marshal.FreeHGlobal(hglobal);

        // Demonstrate how to use the Marshal class to get the Win32 error  
        // code when a Win32 method fails.
        Boolean f = CloseHandle(new IntPtr(-1));
        if (!f)
        {
            Console.WriteLine("CloseHandle call failed with an error code of: {0}", 
                Marshal.GetLastWin32Error());
        }  
    }

    // This is a platform invoke prototype. SetLastError is true, which allows  
    // the GetLastWin32Error method of the Marshal class to work correctly.    
    [DllImport("Kernel32", ExactSpelling = true, SetLastError = true)]
    static extern Boolean CloseHandle(IntPtr h);

}

// This code produces the following output. 
//  
// SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1 
// Number of bytes needed by a Point object: 8 
// Number of bytes needed by a Point object: 8 
// CloseHandle call failed with an error code of: 6

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft