Marshal 類別

定義

提供一套用於分配非管理記憶體、複製未管理記憶體區塊、將管理型態轉換為非管理型態的方法,以及其他在與非管理程式碼互動時使用的雜項方法。

public ref class Marshal abstract sealed
public ref class Marshal sealed
public static class Marshal
public sealed class Marshal
type Marshal = class
Public Class Marshal
Public NotInheritable Class Marshal
繼承
Marshal

範例

以下範例展示了如何使用該 Marshal 類別定義的各種方法。

using namespace System;
using namespace System::Runtime::InteropServices;

public value struct Point
{
public:
    property int X;
    property int Y;
};
extern bool CloseHandle(IntPtr h);

int main()
{
    // Demonstrate the use of public static fields of the Marshal
    // class.
    Console::WriteLine(
        "SystemDefaultCharSize={0},SystemMaxDBCSCharSize={1}",
        Marshal::SystemDefaultCharSize,
        Marshal::SystemMaxDBCSCharSize);

    // 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.
    bool isCloseHandleSuccess = CloseHandle(IntPtr(-1));
    if (!isCloseHandleSuccess)
    {
        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)]
extern bool CloseHandle(IntPtr h);

// This code produces the following output.
//
// SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
// CloseHandle call failed with an error code of: 6
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 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
// CloseHandle call failed with an error code of: 6
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Security.Permissions

Public Structure Point
    Public x, y As Int32
End Structure

Public NotInheritable Class App

    <SecurityPermission(SecurityAction.LinkDemand, Unrestricted:=True)> _
    Shared Sub Main()
        ' Demonstrate the use of public static fields of the Marshal class.
        Console.WriteLine("SystemDefaultCharSize={0}, SystemMaxDBCSCharSize={1}", Marshal.SystemDefaultCharSize, Marshal.SystemMaxDBCSCharSize)

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

        ' Demonstrate how to use the Marshal class to get the Win32 error
        ' code when a Win32 method fails.
        Dim f As [Boolean] = CloseHandle(New IntPtr(-1))
        If Not f Then
            Console.WriteLine("CloseHandle call failed with an error code of: {0}", Marshal.GetLastWin32Error())
        End If
    End Sub

    ' 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)> _
    Shared Function CloseHandle(ByVal h As IntPtr) As [Boolean]

    End Function
End Class

' This code produces the following output.
'
' SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
' CloseHandle call failed with an error code of: 6

備註

static類別中Marshal定義的方法對於處理未受管理程式碼至關重要。 本類別定義的大多數方法通常由開發者使用,目的是提供管理型與非型管理程式模型之間的橋樑。 例如,該 StringToHGlobalAnsi 方法會將指定字串(在受管理堆積中)的 ANSI 字元複製到未受管理堆積中的緩衝區。 它也會分配適當大小的目標堆。

通用語言執行環境提供特定的編組功能。 關於編組行為的詳細資訊,請參見 Interop 集結

Read類別中的 Write and Marshal 方法同時支援對齊與非對齊存取。

欄位

名稱 Description
SystemDefaultCharSize

代表系統上的預設字元大小;Unicode 系統預設為 2,ANSI 系統為 1。 此欄位是唯讀的。

SystemMaxDBCSCharSize

代表目前作業系統中雙位元組字元集(DBCS)最大大小(位元組)。 此欄位是唯讀的。

方法

名稱 Description
AddRef(IntPtr)

遞增指定介面上的參考計數。

AllocCoTaskMem(Int32)

從 COM 任務記憶體分配器分配指定大小的記憶體區塊。

AllocHGlobal(Int32)

使用指定的位元組數目,從進程的 Unmanaged 記憶體配置記憶體。

AllocHGlobal(IntPtr)

使用指定位元組數目的指標,從進程的 Unmanaged 記憶體配置記憶體。

AreComObjectsAvailableForCleanup()

表示是否可從任何上下文中可用的執行時可呼叫包裝器(RCW)進行清理。

BindToMoniker(String)

會獲得以指定名稱識別的介面指標。

ChangeWrapperHandleStrength(Object, Boolean)

改變物件 COM 可呼叫包裝器(CCW) 控制柄的強度。

CleanupUnusedObjectsInCurrentContext()

通知執行時清理目前上下文中所有可 執行時可呼叫包裝器(RCW )。

Copy(Byte[], Int32, IntPtr, Int32)

將一維、受管理的 8 位元無符號整數陣列的資料複製到未受管理的記憶體指標。

Copy(Char[], Int32, IntPtr, Int32)

將一維受管理字元陣列的資料複製到未受管理的記憶體指標。

Copy(Double[], Int32, IntPtr, Int32)

將一維、受管理的雙精度浮點數陣列資料複製到未受管理的記憶體指標。

Copy(Int16[], Int32, IntPtr, Int32)

將一維、受管理的 16 位元有號整數陣列的資料複製到未管理的記憶體指標。

Copy(Int32[], Int32, IntPtr, Int32)

將一維管理的 32 位元有號整數陣列資料複製到未管理的記憶體指標。

Copy(Int64[], Int32, IntPtr, Int32)

將一維、受管理的 64 位元有號整數陣列資料複製到未管理的記憶體指標。

Copy(IntPtr, Byte[], Int32, Int32)

從未管理的記憶體指標複製資料至一個受管理的 8 位元無符號整數陣列。

Copy(IntPtr, Char[], Int32, Int32)

從未管理的記憶體指標複製資料到受管理字元陣列。

Copy(IntPtr, Double[], Int32, Int32)

將資料從未管理的記憶體指標複製到受管理的雙精度浮點數陣列。

Copy(IntPtr, Int16[], Int32, Int32)

從未管理的記憶體指標複製資料到一個受管理的 16 位元有號整數陣列。

Copy(IntPtr, Int32[], Int32, Int32)

將資料從未管理的記憶體指標複製到一個管理型 32 位元有號整數陣列。

Copy(IntPtr, Int64[], Int32, Int32)

將資料從未管理的記憶體指標複製到一個受管理的 64 位元有號整數陣列。

Copy(IntPtr, IntPtr[], Int32, Int32)

將資料從未管理的記憶體指標複製到受管理 IntPtr 陣列。

Copy(IntPtr, Single[], Int32, Int32)

將資料從未管理的記憶體指標複製到一個受管理的單精度浮點數陣列。

Copy(IntPtr[], Int32, IntPtr, Int32)

將一維受管理 IntPtr 陣列的資料複製到未受管理的記憶體指標。

Copy(Single[], Int32, IntPtr, Int32)

將一維、受管理的單精度浮點數陣列資料複製到未管理的記憶體指標。

CreateAggregatedObject(IntPtr, Object)
已淘汰.

將受管理物件與指定的 COM 物件聚合。

CreateAggregatedObject<T>(IntPtr, T)

將指定類型的受管理物件與指定的 COM 物件聚合。

CreateWrapperOfType(Object, Type)
已淘汰.

將指定的 COM 物件包裹在指定類型的物件中。

CreateWrapperOfType<T,TWrapper>(T)

將指定的 COM 物件包裹在指定類型的物件中。

DestroyStructure(IntPtr, Type)
已淘汰.

釋放指定未管理記憶體區塊所指向的所有子結構。

DestroyStructure<T>(IntPtr)

釋放指定未管理記憶體區塊所指向的所有指定型別子結構。

FinalReleaseComObject(Object)

透過將執行時可呼叫包裝器(RCW)的參考計數設為 0,釋放所有對執行 時可呼叫包裝器(RCW )的引用。

FreeBSTR(IntPtr)

使用 COM BSTR 函式釋放 a

FreeCoTaskMem(IntPtr)

釋放由非管理 COM 任務記憶體配置器分配的記憶體區塊。

FreeHGlobal(IntPtr)

釋放先前從進程 Unmanaged 記憶體配置的記憶體。

GenerateGuidForType(Type)

回傳指定型別的全域唯一識別碼(GUID),或使用型別函式庫匯出器(Tlbexp.exe)所使用的演算法產生 GUID。

GenerateProgIdForType(Type)

會回傳指定類型的程式識別碼(ProgID)。

GetActiveObject(String)

從執行中的物件表(ROT)取得指定物件的執行實例。

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
已淘汰.

回傳一個指標指向代表指定物件上指定介面的 IUnknown 介面。 自訂查詢介面的存取由指定的自訂模式控制。

GetComInterfaceForObject(Object, Type)
已淘汰.

回傳一個指標指向代表指定物件上指定介面的 IUnknown 介面。 預設啟用自訂查詢介面存取。

GetComInterfaceForObject<T,TInterface>(T)

回傳一個指標指向 IUnknown 介面,該介面代表指定類型物件上的介面。 預設啟用自訂查詢介面存取。

GetComInterfaceForObjectInContext(Object, Type)

若呼叫者與該物件處於相同上下文,則回傳一個介面指標,代表該物件指定的介面。

GetComObjectData(Object, Object)

從指定的 COM 物件中擷取指定金鑰所參考的資料。

GetComSlotForMethodInfo(MemberInfo)

當特定類型暴露於 COM 時,會擷取該類型虛擬函式表(v-table 或 VTBL)插槽 MemberInfo

GetDelegateForFunctionPointer(IntPtr, Type)
已淘汰.

將非管理函式指標轉換成代理。

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

將非管理函式指標轉換為指定類型的代理。

GetEndComSlot(Type)

當暴露於 COM 時,會擷取某類型虛擬函式表(v-table 或 VTBL)中的最後一個插槽。

GetExceptionCode()
已淘汰.

取得一個代碼,用以識別該例外的類型。

GetExceptionForHR(Int32, Guid, IntPtr)

提供一套用於分配非管理記憶體、複製未管理記憶體區塊、將管理型態轉換為非管理型態的方法,以及其他在與非管理程式碼互動時使用的雜項方法。

GetExceptionForHR(Int32, IntPtr)

將指定的 HRESULT 錯誤碼轉換為對應 Exception 的物件,並透過 IErrorInfo 介面傳遞該例外物件的額外錯誤資訊。

GetExceptionForHR(Int32)

將指定的 HRESULT 錯誤碼轉換為對應 Exception 的物件。

GetExceptionPointers()

取得一個電腦獨立的例外描述,以及該執行緒在異常發生時的狀態資訊。

GetFunctionPointerForDelegate(Delegate)
已淘汰.

將代理轉換成可從非管理程式碼呼叫的函式指標。

GetFunctionPointerForDelegate<TDelegate>(TDelegate)

將指定類型的代理轉換成可從非管理程式碼呼叫的函式指標。

GetHINSTANCE(Module)

回傳指定模組的實例句柄(HINSTANCE)。

GetHRForException(Exception)

將指定的例外轉換成 HRESULT。

GetHRForLastWin32Error()

回傳 Win32 程式碼 Marshal執行時所產生的最後錯誤 HRESULT。

GetIDispatchForObject(Object)

從受管理物件回傳 IDispatch 介面。

GetIDispatchForObjectInContext(Object)

若呼叫者與該物件處於相同上下文,則會從受管理物件回傳 IDispatch 介面指標。

GetITypeInfoForType(Type)

從受管理型態回傳 ITypeInfo 介面。

GetIUnknownForObject(Object)

從受管理物件回傳 一個 IUnknown 介面。

GetIUnknownForObjectInContext(Object)

若呼叫者與該物件處於相同上下文,則會從受管理物件回傳 IUnknown 介面。

GetLastPInvokeError()

在目前討論串中遇到最後一個平台調用錯誤。

GetLastPInvokeErrorMessage()

會收到最後一個 Pinvoke 錯誤代碼的系統錯誤訊息。

GetLastSystemError()

會顯示目前執行緒的最後一個系統錯誤。

GetLastWin32Error()

回傳最後一個非管理函式所回傳的錯誤碼,該函式是使用 Platform invoke 並設定了 SetLastError 旗標。

GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32)
已淘汰.

它會獲得一個指向執行時產生的函式指標,該函式將呼叫從受管理程式碼編入非受管理程式碼。

GetMethodInfoForComSlot(Type, Int32, ComMemberType)

為指定的虛擬函式表(v-table 或 VTBL)插槽擷取 MemberInfo 物件。

GetNativeVariantForObject(Object, IntPtr)
已淘汰.

將物件轉換為 COM 變體。

GetNativeVariantForObject<T>(T, IntPtr)
已淘汰.

將指定類型的物件轉換為 COM 變體。

GetObjectForIUnknown(IntPtr)

回傳一個型別的實例,該物件透過指向 其未知 介面的指標來代表 COM 物件。

GetObjectForNativeVariant(IntPtr)
已淘汰.

將 COM 變體轉換成物件。

GetObjectForNativeVariant<T>(IntPtr)
已淘汰.

將 COM 變體轉換為指定類型的物件。

GetObjectsForNativeVariants(IntPtr, Int32)
已淘汰.

將一組 COM 變體轉換為一組物件。

GetObjectsForNativeVariants<T>(IntPtr, Int32)
已淘汰.

將一組 COM 變體轉換為指定類型的陣列。

GetPInvokeErrorMessage(Int32)

會收到所提供錯誤碼的系統錯誤訊息。

GetStartComSlot(Type)

取得虛擬函式表(v-table 或 VTBL)中包含使用者定義方法的第一個插槽。

GetThreadFromFiberCookie(Int32)
已淘汰.

將纖維餅乾轉換成對應 Thread 的實例。

GetTypedObjectForIUnknown(IntPtr, Type)

回傳一個指定型別的受管理物件,代表一個 COM 物件。

GetTypeForITypeInfo(IntPtr)

將一個未受管理的 ITypeInfo 物件轉換成受管理 Type 物件。

GetTypeFromCLSID(Guid)

回傳與指定類別識別碼(CLSID)相關的類型。

GetTypeInfoName(ITypeInfo)

擷取由 ITypeInfo 物件所代表的類型名稱。

GetTypeInfoName(UCOMITypeInfo)
已淘汰.

擷取由 ITypeInfo 物件所代表的類型名稱。

GetTypeLibGuid(ITypeLib)

取得型態庫的函式庫識別碼(LIBID)。

GetTypeLibGuid(UCOMITypeLib)
已淘汰.

取得型態庫的函式庫識別碼(LIBID)。

GetTypeLibGuidForAssembly(Assembly)

擷取從指定組件匯出時指派給型別庫的函式庫識別碼(LIBID)。

GetTypeLibLcid(ITypeLib)

取得型別庫的 LCID。

GetTypeLibLcid(UCOMITypeLib)
已淘汰.

取得型別庫的 LCID。

GetTypeLibName(ITypeLib)

取得型別函式庫的名稱。

GetTypeLibName(UCOMITypeLib)
已淘汰.

取得型別函式庫的名稱。

GetTypeLibVersionForAssembly(Assembly, Int32, Int32)

取得將從指定組合語言匯出的型別庫版本號。

GetUniqueObjectForIUnknown(IntPtr)

為特定 IUnknown 介面建立獨特的執行時可呼叫包裝器(RCW)物件。

GetUnmanagedThunkForManagedMethodPtr(IntPtr, IntPtr, Int32)
已淘汰.

會取得一個指向執行時產生的函式指標,該函式會將呼叫從非管理程式管理到受管理程式進行封存。

InitHandle(SafeHandle, IntPtr)

將新建立 SafeHandle 的底層 handle 初始化為所提供的值。

IsComObject(Object)

表示指定的物件是否代表 COM 物件。

IsTypeVisibleFromCom(Type)

顯示某類型是否對 COM 用戶端可見。

NumParamBytes(MethodInfo)

計算未管理記憶體中儲存指定方法參數所需的位元組數。

OffsetOf(Type, String)
已淘汰.

回傳管理類別非管理形式的場偏移量。

OffsetOf<T>(String)

回傳指定管理類別中未管理形式的欄位偏移量。

Prelink(MethodInfo)

執行一次性方法設定任務,無需呼叫該方法。

PrelinkAll(Type)

對類別上的所有方法進行前連結檢查。

PtrToStringAnsi(IntPtr, Int32)

分配一個管理 String型,從未管理的 ANSI 或 UTF-8 字串複製指定數量的字元,並將每個字元擴寬為 UTF-16。

PtrToStringAnsi(IntPtr)

將未管理的 ANSI 或 UTF-8 字串中,所有字元直到第一個空字元複製到管理 String型字元,並將每個字元擴寬為 UTF-16。

PtrToStringAuto(IntPtr, Int32)

分配一個受管理 String 記憶體,並將儲存在非管理記憶體中的字串中指定數量的字元複製到該記憶體中。

PtrToStringAuto(IntPtr)

分配一個受管理 String 的字元,並將儲存在非管理記憶體中的字串中,直到第一個空字元的所有字元複製到該字元。

PtrToStringBSTR(IntPtr)

將儲存在非管理記憶體中的管理二進位字串(BSTR)分配到其中。

PtrToStringUni(IntPtr, Int32)

分配一個受管理 String 的 Unicode 字串,並將指定數量的字元從未管理的 Unicode 字串複製到該字串中。

PtrToStringUni(IntPtr)

分配一個受管理 String 的 Unicode 字串,並將所有字元從未管理的 Unicode 字串中複製到第一個空字元。

PtrToStringUTF8(IntPtr, Int32)

分配一個受管理 String 的,並將指定數量的位元組從未受管理的 UTF8 字串複製到該位元組中。

PtrToStringUTF8(IntPtr)

分配一個受管理 String 的字元,並將所有字元從未管理的 UTF-8 字串中複製到第一個空字元。

PtrToStructure(IntPtr, Object)
已淘汰.

將資料從未管理的記憶體區塊處理到受管理的物件。

PtrToStructure(IntPtr, Type)
已淘汰.

將資料從未管理的記憶體區塊整理到新分配的指定型態受管理物件。

PtrToStructure<T>(IntPtr, T)

將資料從未管理的記憶體區塊編入指定類型的受管理物件。

PtrToStructure<T>(IntPtr)

將資料從未管理的記憶體區塊編入由一般類型參數指定的新配置受管理物件。

QueryInterface(IntPtr, Guid, IntPtr)

請求從 COM 物件指向指定介面的指標。

ReadByte(IntPtr, Int32)

從未管理記憶體讀取指定偏移量(或索引)的一個位元組。

ReadByte(IntPtr)

從未管理的記憶體讀取一個位元組。

ReadByte(Object, Int32)
已淘汰.

從未管理記憶體讀取指定偏移量(或索引)的一個位元組。

ReadInt16(IntPtr, Int32)

從未管理記憶體讀取一個 16 位元帶符號整數,偏移量為特定偏移量。

ReadInt16(IntPtr)

從未管理記憶體讀取一個 16 位元有號整數。

ReadInt16(Object, Int32)
已淘汰.

從未管理記憶體讀取一個 16 位元帶符號整數,偏移量為特定偏移量。

ReadInt32(IntPtr, Int32)

從未管理記憶體讀取一個 32 位元有號整數,偏移量為特定。

ReadInt32(IntPtr)

從未管理記憶體讀取一個 32 位元有號整數。

ReadInt32(Object, Int32)
已淘汰.

從未管理記憶體讀取一個 32 位元有號整數,偏移量為特定。

ReadInt64(IntPtr, Int32)

從未管理記憶體讀取一個 64 位元有符號整數,偏移量為特定。

ReadInt64(IntPtr)

從未管理記憶體讀取一個 64 位元有號整數。

ReadInt64(Object, Int32)
已淘汰.

從未管理記憶體讀取一個 64 位元有符號整數,偏移量為特定。

ReadIntPtr(IntPtr, Int32)

讀取處理器原生大小的整數,從未管理記憶體中讀取給定的偏移量。

ReadIntPtr(IntPtr)

從未管理記憶體讀取處理器原生大小的整數。

ReadIntPtr(Object, Int32)
已淘汰.

從未管理記憶體讀取處理器原生大小的整數。

ReAllocCoTaskMem(IntPtr, Int32)

調整先前使用 AllocCoTaskMem(Int32)配置之內存區塊的大小。

ReAllocHGlobal(IntPtr, IntPtr)

調整先前使用 AllocHGlobal(IntPtr)配置之內存區塊的大小。

Release(IntPtr)

遞減指定介面上的參考數量。

ReleaseComObject(Object)

減少與指定 COM 物件相關的 執行時可呼叫包裝器(RCW) 的參考數量。

ReleaseThreadCache()
已淘汰.

釋放執行緒快取。

SecureStringToBSTR(SecureString)

分配一個未受管理的二進位字串(BSTR),並將受管理 SecureString 物件的內容複製到該串中。

SecureStringToCoTaskMemAnsi(SecureString)

將受管理 SecureString 物件的內容複製到由未管理的 COM 任務分配器分配的記憶體區塊。

SecureStringToCoTaskMemUnicode(SecureString)

將受管理 SecureString 物件的內容複製到由未管理的 COM 任務分配器分配的記憶體區塊。

SecureStringToGlobalAllocAnsi(SecureString)

將管理 SecureString 記憶體的內容複製到非管理記憶體,並在複製過程中轉換成 ANSI 格式。

SecureStringToGlobalAllocUnicode(SecureString)

將受管理 SecureString 物件的內容複製到未受管理記憶體中。

SetComObjectData(Object, Object, Object)

在指定的 COM 物件中,將指定鍵所參考的資料集合。

SetLastPInvokeError(Int32)

在目前執行緒中設置最後一個平台調用錯誤。

SetLastSystemError(Int32)

在當前執行緒上設定最後一個系統錯誤。

SizeOf(Object)
已淘汰.

回傳物件的未管理大小(以位元組為單位)。

SizeOf(Type)
已淘汰.

回傳未受管理型態的大小(位元組)。

SizeOf<T>()

回傳未受管理型態的大小(位元組)。

SizeOf<T>(T)

回傳指定型別物件的未管理大小(位元組)。

StringToBSTR(String)

分配一個 BSTR,並將管理 String 檔案的內容複製到裡面。

StringToCoTaskMemAnsi(String)

將已管理 String 任務內容複製到由未管理的 COM 任務分配器分配的記憶體區塊。

StringToCoTaskMemAuto(String)

將已管理 String 任務內容複製到由未管理的 COM 任務分配器分配的記憶體區塊。

StringToCoTaskMemUni(String)

將已管理 String 任務內容複製到由未管理的 COM 任務分配器分配的記憶體區塊。

StringToCoTaskMemUTF8(String)

將已管理 String 任務內容複製到由未管理的 COM 任務分配器分配的記憶體區塊。

StringToHGlobalAnsi(String)

將管理 String 記憶體的內容複製到非管理記憶體,並在複製過程中轉換成 ANSI 格式。

StringToHGlobalAuto(String)

將管理 String 記憶體內容複製到非管理記憶體,必要時轉換為 ANSI 格式。

StringToHGlobalUni(String)

將管理記憶體 String 的內容複製到未管理記憶體。

StructureToPtr(Object, IntPtr, Boolean)
已淘汰.

將資料從受管理物件傳送到未管理的記憶體區塊。

StructureToPtr<T>(T, IntPtr, Boolean)

將指定類型的受管理物件的資料編入未受管理的記憶體區塊。

ThrowExceptionForHR(Int32, Guid, IntPtr)

提供一套用於分配非管理記憶體、複製未管理記憶體區塊、將管理型態轉換為非管理型態的方法,以及其他在與非管理程式碼互動時使用的雜項方法。

ThrowExceptionForHR(Int32, IntPtr)

根據指定的 IErrorInfo 介面拋出一個包含特定失敗 HRESULT 的例外。

ThrowExceptionForHR(Int32)

拋出一個包含特定失敗 HRESULT 值的例外。

UnsafeAddrOfPinnedArrayElement(Array, Int32)
已淘汰.

取得該陣列中指定索引元素的位址。

UnsafeAddrOfPinnedArrayElement<T>(T[], Int32)

取得指定類型陣列中該元素在指定索引的位址。

WriteByte(IntPtr, Byte)

將一個位元組的值寫入未管理記憶體。

WriteByte(IntPtr, Int32, Byte)

在指定的偏移量處寫入一個位元組的記憶體。

WriteByte(Object, Int32, Byte)
已淘汰.

在指定的偏移量處寫入一個位元組的記憶體。

WriteInt16(IntPtr, Char)

將字元寫入 16 位元整數值到未管理記憶體。

WriteInt16(IntPtr, Int16)

將一個 16 位元的整數值寫入非管理記憶體。

WriteInt16(IntPtr, Int32, Char)

在指定的偏移量處寫入一個 16 位元有號整數值到未管理記憶體。

WriteInt16(IntPtr, Int32, Int16)

在指定偏移量處寫入 16 位元有符號整數值到未管理記憶體。

WriteInt16(Object, Int32, Char)
已淘汰.

在指定的偏移量處寫入一個 16 位元有號整數值到未管理記憶體。

WriteInt16(Object, Int32, Int16)
已淘汰.

在指定的偏移量處寫入一個 16 位元有號整數值到未管理記憶體。

WriteInt32(IntPtr, Int32, Int32)

在指定偏移量處寫入 32 位元有符號整數值到未管理記憶體。

WriteInt32(IntPtr, Int32)

將 32 位元有符號整數值寫入未管理記憶體。

WriteInt32(Object, Int32, Int32)
已淘汰.

在指定偏移量處寫入一個 32 位元有符號的整數值到未管理記憶體。

WriteInt64(IntPtr, Int32, Int64)

在指定偏移量處寫入一個 64 位元有號整數值到未管理記憶體。

WriteInt64(IntPtr, Int64)

將一個 64 位元有符號整數值寫入未管理記憶體。

WriteInt64(Object, Int32, Int64)
已淘汰.

在指定偏移量處寫入一個 64 位元有號整數值到未管理記憶體。

WriteIntPtr(IntPtr, Int32, IntPtr)

在指定的偏移量處,將處理器原生大小的整數值寫入未管理記憶體。

WriteIntPtr(IntPtr, IntPtr)

將處理器原生大小的整數值寫入未管理記憶體。

WriteIntPtr(Object, Int32, IntPtr)
已淘汰.

將處理器原生大小的整數值寫入未管理記憶體。

ZeroFreeBSTR(IntPtr)

釋放一個使用 該 SecureStringToBSTR(SecureString) 方法分配的 BSTR 指標。

ZeroFreeCoTaskMemAnsi(IntPtr)

釋放一個未管理的字串指標,該指標是透過該 SecureStringToCoTaskMemAnsi(SecureString) 方法分配的。

ZeroFreeCoTaskMemUnicode(IntPtr)

釋放一個未管理的字串指標,該指標是透過該 SecureStringToCoTaskMemUnicode(SecureString) 方法分配的。

ZeroFreeCoTaskMemUTF8(IntPtr)

釋放一個未管理的字串指標,該指標是透過該 StringToCoTaskMemUTF8(String) 方法分配的。

ZeroFreeGlobalAllocAnsi(IntPtr)

釋放一個未管理的字串指標,該指標是透過該 SecureStringToGlobalAllocAnsi(SecureString) 方法分配的。

ZeroFreeGlobalAllocUnicode(IntPtr)

釋放一個未管理的字串指標,該指標是透過該 SecureStringToGlobalAllocUnicode(SecureString) 方法分配的。

適用於