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

Комментарии

Методы static , определенные в Marshal классе, необходимы для работы с неуправляемым кодом. Большинство методов, определенных в этом классе, обычно используются разработчиками, которые хотят обеспечить мост между управляемыми и неуправляемыми моделями программирования. Например, StringToHGlobalAnsi метод копирует символы ANSI из указанной строки (в управляемой куче) в буфер в неуправляемой куче. Он также выделяет целевую кучу нужного размера.

Среда CLR предоставляет определенные возможности маршалинга. Дополнительные сведения о поведении маршалинга см. в разделе "Маршалинг взаимодействия".

Методы Read и Write методы в Marshal классе поддерживают как выровненный, так и несмещенный доступ.

Поля

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)

Изменяет строгость дескриптора вызываемой оболочки 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)

[Поддерживается в .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.

FreeBSTR(IntPtr)

Освобождает строку BSTR с помощью функции COM SysFreeString.

FreeCoTaskMem(IntPtr)

Освобождает блок памяти, выделенный неуправляемым механизмом распределения памяти для задач COM.

FreeHGlobal(IntPtr)

Освобождает память, выделенную ранее из неуправляемой памяти процесса.

GenerateGuidForType(Type)

Возвращает уникальный глобальный идентификатор GUID для указанного типа или создает идентификатор GUID при помощи алгоритма, используемого средством экспортирования библиотек типов Tlbexp.exe.

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)

Извлекает ячейку таблицы виртуальных функций (VTBL) для указанного типа MemberInfo, если он предоставлен модели COM.

GetDelegateForFunctionPointer(IntPtr, Type)
Является устаревшей.

Преобразует указатель на неуправляемую функцию в делегат.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

[Поддерживается в .NET Framework 4.5.1 и более поздних версиях.]

Преобразует указатель на неуправляемую функцию в делегат указанного типа.

GetEndComSlot(Type)

Извлекает последнюю ячейку таблицы виртуальных функций (VTBL) для типа, если он предоставлен модели COM.

GetExceptionCode()
Является устаревшей.

Извлекает код, определяющий тип возникшего исключения.

GetExceptionForHR(Int32)

Преобразует заданный код ошибки HRESULT в соответствующий объект Exception.

GetExceptionForHR(Int32, IntPtr)

Преобразует указанный код ошибки HRESULT в соответствующий объект Exception с дополнительными сведениями об ошибке, передаваемыми в интерфейсе IErrorInfo для объекта исключения.

GetExceptionPointers()

Извлекает не зависящее от компьютера описание исключения и сведения о состоянии потоков в момент возникновения исключения.

GetFunctionPointerForDelegate(Delegate)
Является устаревшей.

Преобразует делегат в указатель на функцию, вызываемый из неуправляемого кода.

GetFunctionPointerForDelegate<TDelegate>(TDelegate)

[Поддерживается в .NET Framework 4.5.1 и более поздних версиях.]

Преобразует делегат указанного типа в указатель на функцию, вызываемый из неуправляемого кода.

GetHINSTANCE(Module)

Возвращает дескриптор экземпляра (HINSTANCE) для указанного модуля.

GetHRForException(Exception)

Преобразует указанное исключение в значение HRESULT.

GetHRForLastWin32Error()

Возвращает значение HRESULT, соответствующее последней ошибке, вызванной кодом Win32, выполняемым с использованием класса Marshal.

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)

Извлекает объект MemberInfo для указанной ячейки таблицы виртуальных функций (VTBL).

GetNativeVariantForObject(Object, IntPtr)
Является устаревшей.

Преобразует объект в COM VARIANT.

GetNativeVariantForObject<T>(T, IntPtr)
Является устаревшей.

[Поддерживается в .NET Framework 4.5.1 и более поздних версиях.]

Преобразует объект заданного типа в COM VARIANT.

GetObjectForIUnknown(IntPtr)

Возвращает экземпляр типа, представляющего COM-объект, с помощью указателя на его интерфейс IUnknown.

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)

Возвращает первую ячейку в таблице виртуальных функций (VTBL), которая содержит методы, определенные пользователем.

GetThreadFromFiberCookie(Int32)
Является устаревшей.
Является устаревшей.

Преобразует многослойный файл cookie в соответствующий экземпляр 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.

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 в управляемый объект String и преобразует каждый символ в UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Выделяет управляемый объект типа String, копирует в него заданное число символов из неуправляемой строки ANSI или UTF-8 и преобразует каждый символ в UTF-16.

PtrToStringAuto(IntPtr)

Выделяет управляемый объект String и копирует в него все знаки до первого пустого знака из строки, хранящейся в неуправляемой памяти.

PtrToStringAuto(IntPtr, Int32)

Выделяет управляемый объект String и копирует в него заданное число знаков из строки, сохраненной в неуправляемой памяти.

PtrToStringBSTR(IntPtr)

Выделяет управляемый объект String и копирует в него двоичную строку (BSTR), хранящуюся в неуправляемой памяти.

PtrToStringUni(IntPtr)

Выделяет управляемый объект String и копирует в него все знаки до первого пустого знака из неуправляемой строки Юникода.

PtrToStringUni(IntPtr, Int32)

Выделяет управляемый объект String и копирует в него заданное число знаков неуправляемой строки Юникода.

PtrToStringUTF8(IntPtr)

Выделяет управляемый объект String и копирует в него все знаки до первого пустого знака из неуправляемой строки UTF-8.

PtrToStringUTF8(IntPtr, Int32)

Выделяет управляемый объект String и копирует в него заданное число байтов неуправляемой строки UTF-8.

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-объектом.

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>()

[Поддерживается в .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)

Копирует содержимое управляемого объекта String в неуправляемую память, преобразуя его по мере копирования в формат ANSI.

StringToHGlobalAuto(String)

Копирует содержимое управляемого объекта типа String в неуправляемую память, преобразуя его по мере копирования в формат ANSI, если это требуется.

StringToHGlobalUni(String)

Копирует содержимое управляемого объекта String в неуправляемую память.

StructureToPtr(Object, IntPtr, Boolean)
Является устаревшей.

Маршалирует данные из управляемого объекта в неуправляемый блок памяти.

StructureToPtr<T>(T, IntPtr, Boolean)

[Поддерживается в .NET Framework 4.5.1 и более поздних версиях.]

Выполняет маршалирование данных в неуправляемый блока памяти из управляемого объекта указанного типа.

ThrowExceptionForHR(Int32)

Создает исключение с определенным значением ошибки HRESULT.

ThrowExceptionForHR(Int32, IntPtr)

Создает исключение с определенным значением ошибки HRESULT в соответствии с указанным интерфейсом IErrorInfo.

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)

Освобождает указатель BSTR, выделенный с помощью метода SecureStringToBSTR(SecureString).

ZeroFreeCoTaskMemAnsi(IntPtr)

Освобождает указатель на неуправляемую строку, выделенный с помощью метода SecureStringToCoTaskMemAnsi(SecureString).

ZeroFreeCoTaskMemUnicode(IntPtr)

Освобождает указатель на неуправляемую строку, выделенный с помощью метода SecureStringToCoTaskMemUnicode(SecureString).

ZeroFreeCoTaskMemUTF8(IntPtr)

Освобождает указатель на неуправляемую строку, выделенный с помощью метода StringToCoTaskMemUTF8(String).

ZeroFreeGlobalAllocAnsi(IntPtr)

Освобождает указатель на неуправляемую строку, выделенный с помощью метода SecureStringToGlobalAllocAnsi(SecureString).

ZeroFreeGlobalAllocUnicode(IntPtr)

Освобождает указатель на неуправляемую строку, выделенный с помощью метода SecureStringToGlobalAllocUnicode(SecureString).

Применяется к