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 the use of the SizeOf method of the Marshal
    // class.
    Console::WriteLine("Number of bytes needed by a Point object: {0}",
        Marshal::SizeOf(Point::typeid));
    Point point;
    Console::WriteLine("Number of bytes needed by a Point object: {0}",
        Marshal::SizeOf(point));

    // 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
// 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
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
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 the use of the SizeOf method of the Marshal class.
        Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(GetType(Point)))
        Dim p As 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.
        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
' 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

설명

클래스에 Marshal 정의된 메서드는 static 관리되지 않는 코드를 사용하는 데 필수적입니다. 이 클래스에 정의된 대부분의 메서드는 일반적으로 관리되는 프로그래밍 모델과 관리되지 않는 프로그래밍 모델 간에 브리지를 제공하려는 개발자가 사용합니다. 예를 들어 메서드는 StringToHGlobalAnsi 관리되는 힙의 지정된 문자열에서 관리되지 않는 힙의 버퍼로 ANSI 문자를 복사합니다. 또한 적절한 크기의 대상 힙을 할당합니다.

공용 언어 런타임은 특정 마샬링 기능을 제공합니다. 마샬링 동작에 대한 자세한 내용은 Interop 마샬링을 참조하세요.

클래스의 Read Marshal 메서드와 Write 정렬된 액세스 및 정렬되지 않은 액세스를 모두 지원합니다.

필드

SystemDefaultCharSize

시스템의 기본 문자 크기를 나타냅니다. 유니코드 시스템의 경우 기본값이 2이고, ANSI 시스템의 경우 1입니다. 이 필드는 읽기 전용입니다.

SystemMaxDBCSCharSize

현재 운영 체제에서 DBCS(더블바이트 문자 집합)의 최대 크기(바이트)를 나타냅니다. 이 필드는 읽기 전용입니다.

메서드

AddRef(IntPtr)

지정된 인터페이스의 참조 횟수를 증가시킵니다.

AllocCoTaskMem(Int32)

COM 작업 메모리 할당자에서 지정된 크기의 메모리 블록을 할당합니다.

AllocHGlobal(Int32)

지정된 바이트 수를 사용하여 프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다.

AllocHGlobal(IntPtr)

지정된 바이트 수에 대한 포인터를 사용하여 프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다.

AreComObjectsAvailableForCleanup()

어떤 컨텍스트에서 RCW(런타임 호출 가능 래퍼)를 정리에 사용할 수 있는지 여부를 나타냅니다.

BindToMoniker(String)

지정된 모니커로 식별되는 인터페이스 포인터를 가져옵니다.

BufferToBSTR(Array, Int32)
ChangeWrapperHandleStrength(Object, Boolean)

개체의 CCW(COM Callable Wrapper) 핸들 강도를 변경합니다.

CleanupUnusedObjectsInCurrentContext()

현재의 컨텍스트에서 할당된 모든 RCW(런타임 호출 가능 래퍼)를 정리하도록 런타임에 알립니다.

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

관리되는 8비트 부호 없는 1차원 정수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

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

관리되는 1차원 문자 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

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

관리되는 1차원 배정밀도 부동 소수점 수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

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

관리되는 16비트 부호 있는 1차원 정수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

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

관리되는 32비트 부호 있는 1차원 정수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

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

관리되는 64비트 부호 있는 1차원 정수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

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)

관리되는 1차원 단정밀도 부동 소수점 수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

CreateAggregatedObject(IntPtr, Object)
사용되지 않습니다.

지정된 COM 개체를 사용하여 관리되는 개체를 집계합니다.

CreateAggregatedObject<T>(IntPtr, T)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 COM 개체를 사용하여 지정된 형식의 관리되는 개체를 집계합니다.

CreateWrapperOfType(Object, Type)
사용되지 않습니다.

지정된 형식의 개체에 지정된 COM 개체를 래핑합니다.

CreateWrapperOfType<T,TWrapper>(T)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 개체에 지정된 COM 개체를 래핑합니다.

DestroyStructure(IntPtr, Type)
사용되지 않습니다.

지정된 관리되지 않는 메모리 블록이 가리키는 모든 하위 구조체를 해제합니다.

DestroyStructure<T>(IntPtr)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 관리되지 않는 메모리 블록이 가리키는 지정된 형식의 모든 하위 구조체를 해제합니다.

FinalReleaseComObject(Object)

참조 횟수를 0으로 설정하여, RCW(런타임 호출 가능 래퍼)에 대한 모든 참조를 해제합니다.

FreeBSTR(IntPtr)

COM SysFreeString 함수를 사용하여 BSTR을 해제합니다.

FreeCoTaskMem(IntPtr)

관리되지 않는 COM 작업 메모리 할당자에서 할당한 메모리 블록을 해제합니다.

FreeHGlobal(IntPtr)

프로세스의 관리되지 않는 메모리에서 이전에 할당한 메모리를 해제합니다.

GenerateGuidForType(Type)

지정된 형식에 대한 GUID(Globally Unique Identifier)를 반환하거나 형식 라이브러리 내보내기(TlbExp.exe)에 사용되는 알고리즘을 사용하여 GUID를 생성합니다.

GenerateProgIdForType(Type)

지정된 형식에 대한 ProgID(프로그래밍 식별자)를 반환합니다.

GetActiveObject(String)

ROT(실행 개체 테이블)에서 지정된 개체의 실행 중인 인스턴스를 가져옵니다.

GetComInterfaceForObject(Object, Type)
사용되지 않습니다.

지정된 개체의 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다. 사용자 지정 쿼리 인터페이스 액세스가 기본적으로 사용됩니다.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
사용되지 않습니다.

지정된 개체의 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다. 사용자 지정 쿼리 인터페이스 액세스는 지정된 사용자 지정 모드에 의해 제어됩니다.

GetComInterfaceForObject<T,TInterface>(T)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 개체에 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다. 사용자 지정 쿼리 인터페이스 액세스가 기본적으로 사용됩니다.

GetComInterfaceForObjectInContext(Object, Type)

호출자가 개체와 같은 컨텍스트에 있는 경우 해당 개체에 대해 지정된 인터페이스를 나타내는 인터페이스 포인터를 반환합니다.

GetComObjectData(Object, Object)

지정된 COM 개체에서 지정된 키를 사용하여 참조되는 데이터를 검색합니다.

GetComSlotForMethodInfo(MemberInfo)

지정된 MemberInfo 형식이 COM에 노출될 때 이 형식에 대한 가상 함수 테이블(v-table 또는 VTBL) 슬롯을 검색합니다.

GetDelegateForFunctionPointer(IntPtr, Type)
사용되지 않습니다.

관리되지 않는 함수 포인터를 대리자로 변환합니다.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

관리되지 않는 함수 포인터를 지정된 형식의 대리자로 변환합니다.

GetEndComSlot(Type)

COM에 노출될 때 형식의 가상 함수 테이블(v-table 또는 VTBL)에서 마지막 슬롯을 검색합니다.

GetExceptionCode()
사용되지 않습니다.

발생한 예외의 형식을 식별하는 코드를 검색합니다.

GetExceptionForHR(Int32)

지정된 HRESULT 오류 코드를 해당하는 Exception 개체로 변환합니다.

GetExceptionForHR(Int32, IntPtr)

예외 개체에 대한 IErrorInfo 인터페이스에 전달된 추가 오류 정보를 사용하여 지정된 HRESULT 오류 코드를 해당하는 Exception 개체로 변환합니다.

GetExceptionPointers()

예외에 대한 컴퓨터 독립적 설명과 예외가 발생할 때 스레드에 대해 존재하는 컴퓨터 상태에 대한 정보를 검색합니다.

GetFunctionPointerForDelegate(Delegate)
사용되지 않습니다.

대리자를 비관리 코드에서 호출할 수 있는 함수 포인터로 변환합니다.

GetFunctionPointerForDelegate<TDelegate>(TDelegate)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 대리자를 관리되지 않는 코드에서 호출할 수 있는 함수 포인터로 변환합니다.

GetHINSTANCE(Module)

지정된 모듈의 인스턴스 핸들(HINSTANCE)을 반환합니다.

GetHRForException(Exception)

지정된 예외를 HRESULT로 변환합니다.

GetHRForLastWin32Error()

Marshal을 사용하여 실행된 Win32 코드에서 발생한 마지막 오류에 해당하는 HRESULT를 반환합니다.

GetIDispatchForObject(Object)

관리되는 개체에서 IDispatch 인터페이스를 반환합니다.

GetIDispatchForObjectInContext(Object)

호출자가 관리되는 개체와 같은 컨텍스트에 있는 경우 해당 개체에서 IDispatch 인터페이스 포인터를 반환합니다.

GetITypeInfoForType(Type)

관리되는 형식에서 ITypeInfo 인터페이스를 반환합니다.

GetIUnknownForObject(Object)

관리되는 개체에서 IUnknown 인터페이스를 반환합니다.

GetIUnknownForObjectInContext(Object)

호출자가 관리되는 개체와 같은 컨텍스트에 있는 경우 해당 개체에서 IUnknown 인터페이스를 반환합니다.

GetLastPInvokeError()

현재 스레드에서 마지막 플랫폼 호출 오류를 가져옵니다.

GetLastSystemError()

현재 스레드의 마지막 시스템 오류를 가져옵니다.

GetLastWin32Error()

SetLastError 플래그가 설정된 플랫폼 호출을 사용하여 호출된 관리되지 않는 마지막 함수에서 반환하는 오류 코드를 반환합니다.

GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32)
사용되지 않습니다.
사용되지 않습니다.

관리 코드에서 비관리 코드로 호출을 마샬링하는 런타임 생성 함수에 대한 포인터를 가져옵니다.

GetMethodInfoForComSlot(Type, Int32, ComMemberType)

지정된 가상 함수 테이블(v-table 또는 VTBL) 슬롯에서 MemberInfo 개체를 검색합니다.

GetNativeVariantForObject(Object, IntPtr)
사용되지 않습니다.

개체를 COM VARIANT로 변환합니다.

GetNativeVariantForObject<T>(T, IntPtr)
사용되지 않습니다.

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 개체를 COM VARIANT로 변환합니다.

GetObjectForIUnknown(IntPtr)

IUnknown 인터페이스에 대한 포인터를 사용하여 COM 개체를 나타내는 형식의 인스턴스를 반환합니다.

GetObjectForNativeVariant(IntPtr)
사용되지 않습니다.

COM VARIANT를 개체로 변환합니다.

GetObjectForNativeVariant<T>(IntPtr)
사용되지 않습니다.

[.NET Framework 4.5.1 이상 버전에서 지원됨]

COM VARIANT를 지정된 형식의 개체로 변환합니다.

GetObjectsForNativeVariants(IntPtr, Int32)
사용되지 않습니다.

COM VARIANT의 배열을 개체 배열로 변환합니다.

GetObjectsForNativeVariants<T>(IntPtr, Int32)
사용되지 않습니다.

[.NET Framework 4.5.1 이상 버전에서 지원됨]

COM VARIANT의 배열을 지정된 형식의 배열로 변환합니다.

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 기본 핸들을 제공된 값으로 초기화합니다.

IsComObject(Object)

지정된 개체가 COM 개체를 나타낼지 여부를 나타냅니다.

IsTypeVisibleFromCom(Type)

형식이 COM 클라이언트에 표시되는지 여부를 나타냅니다.

NumParamBytes(MethodInfo)

지정된 메서드에 대한 매개 변수를 포함하는 데 필요한 관리되지 않는 메모리의 바이트 수를 계산합니다.

OffsetOf(Type, String)
사용되지 않습니다.

관리되는 클래스의 관리되지 않는 형식의 필드 오프셋을 반환합니다.

OffsetOf<T>(String)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 관리되는 클래스의 관리되지 않는 형식의 필드 오프셋을 반환합니다.

Prelink(MethodInfo)

메서드를 호출하지 않고 메서드 설정 작업을 한 번에 실행합니다.

PrelinkAll(Type)

클래스의 모든 메서드에 대해 링크 전 검사를 수행합니다.

PtrToStringAnsi(IntPtr)

관리되지 않는 ANSI 또는 UTF-8 문자열에서 첫 번째 null 문자가 나올 때까지의 모든 문자를 관리되는 String으로 복사하고 각 문자를 UTF-16으로 확장합니다.

PtrToStringAnsi(IntPtr, Int32)

관리되는 String을 할당하고, 관리되지 않는 ANSI 또는 UTF-8 문자열에서 지정된 수의 문자를 해당 개체로 복사한 다음 각 문자를 UTF-16으로 확장합니다.

PtrToStringAuto(IntPtr)

관리되는 String을 할당하고 관리되지 않는 메모리에 저장된 문자열에서 첫 번째 null이 나올 때까지의 모든 문자를 해당 개체로 복사합니다.

PtrToStringAuto(IntPtr, Int32)

관리되는 String을 할당하고 관리되지 않는 메모리에 저장된 문자열에서 지정된 수의 문자를 그 안에 복사합니다.

PtrToStringBSTR(IntPtr)

관리되는 String을 할당하고 관리되지 않는 메모리에 저장된 BSTR(이진 문자열)을 그 안에 복사합니다.

PtrToStringUni(IntPtr)

관리되는 String을 할당하고 관리되지 않는 유니코드 문자열에서 첫 번째 null이 나올 때까지의 모든 문자를 해당 개체로 복사합니다.

PtrToStringUni(IntPtr, Int32)

관리되는 String을 할당하고 관리되지 않는 유니코드 문자열의 지정된 문자 수를 그 안에 복사합니다.

PtrToStringUTF8(IntPtr)

관리형 String을 할당하고 관리되지 않는 UTF-8 문자열에서 첫 번째 null 문자가 나올 때까지의 모든 문자를 해당 개체에 복사합니다.

PtrToStringUTF8(IntPtr, Int32)

관리형 String을 할당하고 관리되지 않는 UTF8 문자열의 지정된 바이트 수를 해당 개체에 복사합니다.

PtrToStructure(IntPtr, Object)
사용되지 않습니다.

관리되지 않는 메모리 블록의 데이터를 관리되는 개체로 마샬링합니다.

PtrToStructure(IntPtr, Type)
사용되지 않습니다.

관리되지 않는 메모리 블록의 데이터를 지정된 형식의 새로 할당된 관리되는 개체로 마샬링합니다.

PtrToStructure<T>(IntPtr)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

관리되지 않는 메모리 블록의 데이터를 제네릭 형식 매개 변수에 의해 지정된 형식의 새로 할당된 관리되는 개체로 마샬링합니다.

PtrToStructure<T>(IntPtr, T)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

관리되지 않는 메모리 블록의 데이터를 지정된 형식의 관리되는 개체로 마샬링합니다.

QueryInterface(IntPtr, Guid, IntPtr)

COM 개체에서 지정된 인터페이스에 대한 포인터를 요청합니다.

ReadByte(IntPtr)

관리되지 않는 메모리에서 싱글바이트를 읽습니다.

ReadByte(IntPtr, Int32)

관리되지 않는 메모리의 지정된 오프셋(또는 인덱스) 위치에서 싱글바이트를 읽습니다.

ReadByte(Object, Int32)
사용되지 않습니다.

관리되지 않는 메모리의 지정된 오프셋(또는 인덱스) 위치에서 싱글바이트를 읽습니다.

ReadInt16(IntPtr)

관리되지 않는 메모리에서 16비트 부호 있는 정수를 읽습니다.

ReadInt16(IntPtr, Int32)

관리되지 않는 메모리의 지정된 오프셋 위치에서 16비트 부호 있는 정수를 읽습니다.

ReadInt16(Object, Int32)
사용되지 않습니다.

관리되지 않는 메모리의 지정된 오프셋 위치에서 16비트 부호 있는 정수를 읽습니다.

ReadInt32(IntPtr)

관리되지 않는 메모리에서 32비트 부호 있는 정수를 읽습니다.

ReadInt32(IntPtr, Int32)

관리되지 않는 메모리의 지정된 오프셋 위치에서 32비트 부호 있는 정수를 읽습니다.

ReadInt32(Object, Int32)
사용되지 않습니다.

관리되지 않는 메모리의 지정된 오프셋 위치에서 32비트 부호 있는 정수를 읽습니다.

ReadInt64(IntPtr)

관리되지 않는 메모리에서 64비트 부호 있는 정수를 읽습니다.

ReadInt64(IntPtr, Int32)

관리되지 않는 메모리의 지정된 오프셋 위치에서 64비트 부호 있는 정수를 읽습니다.

ReadInt64(Object, Int32)
사용되지 않습니다.

관리되지 않는 메모리의 지정된 오프셋 위치에서 64비트 부호 있는 정수를 읽습니다.

ReadIntPtr(IntPtr)

관리되지 않는 메모리에서 프로세서의 기본 크기로 지정된 정수를 읽습니다.

ReadIntPtr(IntPtr, Int32)

관리되지 않는 메모리의 지정된 오프셋 위치에서 프로세서의 기본 크기로 지정된 정수를 읽습니다.

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)

복사할 때 ANSI 형식으로 변환하여 관리되는 SecureString의 내용을 관리되지 않는 메모리로 복사합니다.

SecureStringToGlobalAllocUnicode(SecureString)

관리되는 SecureString 개체의 콘텐츠를 관리되지 않는 메모리로 복사합니다.

SetComObjectData(Object, Object, Object)

지정된 COM 개체에서 지정된 키가 참조하는 데이터를 설정합니다.

SetLastPInvokeError(Int32)

현재 스레드에서 마지막 플랫폼 호출 오류를 설정합니다.

SetLastSystemError(Int32)

현재 스레드의 마지막 시스템 오류를 설정합니다.

SizeOf(Object)
사용되지 않습니다.

개체의 관리되지 않는 크기(바이트)를 반환합니다.

SizeOf(Type)
사용되지 않습니다.

관리되지 않는 형식의 크기(바이트)를 반환합니다.

SizeOf<T>()

[.NET Framework 4.5.1 이상 버전에서 지원됨]

관리되지 않는 형식의 크기(바이트)를 반환합니다.

SizeOf<T>(T)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 개체의 관리되지 않은 크기를 반환합니다(바이트 단위).

StringToBSTR(String)

BSTR을 할당하고 관리되는 String의 내용을 그 안에 복사합니다.

StringToCoTaskMemAnsi(String)

관리되는 String의 내용을 관리되지 않는 COM 작업 할당자에서 할당된 메모리 블록으로 복사합니다.

StringToCoTaskMemAuto(String)

관리되는 String의 내용을 관리되지 않는 COM 작업 할당자에서 할당된 메모리 블록으로 복사합니다.

StringToCoTaskMemUni(String)

관리되는 String의 내용을 관리되지 않는 COM 작업 할당자에서 할당된 메모리 블록으로 복사합니다.

StringToCoTaskMemUTF8(String)

관리되는 String의 내용을 관리되지 않는 COM 작업 할당자에서 할당된 메모리 블록으로 복사합니다.

StringToHGlobalAnsi(String)

복사할 때 ANSI 형식으로 변환하여 관리되는 String의 내용을 관리되지 않는 메모리로 복사합니다.

StringToHGlobalAuto(String)

필요할 때 ANSI 형식으로 변환하여 관리되는 String의 내용을 관리되지 않는 메모리로 복사합니다.

StringToHGlobalUni(String)

관리되는 String의 내용을 관리되지 않는 메모리로 복사합니다.

StructureToPtr(Object, IntPtr, Boolean)
사용되지 않습니다.

관리되는 개체의 데이터를 관리되지 않는 메모리 블록으로 마샬링합니다.

StructureToPtr<T>(T, IntPtr, Boolean)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 관리되는 개체의 데이터를 관리되지 않는 메모리 블록으로 마샬링합니다.

ThrowExceptionForHR(Int32)

오류가 있는 특정 HRESULT 값을 사용하여 예외를 throw합니다.

ThrowExceptionForHR(Int32, IntPtr)

지정된 IErrorInfo 인터페이스에 따라 특정 오류 HRESULT가 포함된 예외를 발생시킵니다.

UnsafeAddrOfPinnedArrayElement(Array, Int32)
사용되지 않습니다.

지정된 배열의 지정된 인덱스에 있는 요소의 주소를 가져옵니다.

UnsafeAddrOfPinnedArrayElement<T>(T[], Int32)

[.NET Framework 4.5.1 이상 버전에서 지원됨]

지정된 형식의 배열에 지정된 인덱스에 있는 요소의 주소를 가져옵니다.

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)

관리되지 않는 메모리에 부호 있는 32비트 정수 값을 씁니다.

WriteInt32(IntPtr, Int32, 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) 메서드를 사용하여 할당한 관리되지 않는 문자열 포인터를 해제합니다.

적용 대상