Поделиться через


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)

Возвращает указатель интерфейса, определенный указанным моникером.

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)

Освобождает все ссылки на вызываемую оболочку времени выполнения, присваивая ее счетчику ссылок значение 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)

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

GetComInterfaceForObjectInContext(Object, Type)

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

GetComObjectData(Object, Object)

Извлекает данные, на которые ссылается заданный ключ из указанного COM-объекта.

GetComSlotForMethodInfo(MemberInfo)

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

GetDelegateForFunctionPointer(IntPtr, Type)
Устаревшие..

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

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

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

GetEndComSlot(Type)

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

GetExceptionCode()
Устаревшие..

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

GetExceptionForHR(Int32)

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

GetExceptionForHR(Int32, IntPtr)

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

GetExceptionPointers()

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

GetFunctionPointerForDelegate(Delegate)
Устаревшие..

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

GetFunctionPointerForDelegate<TDelegate>(TDelegate)

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

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

Получение последней ошибки вызова платформы в текущем потоке.

GetLastPInvokeErrorMessage()

Возвращает системное сообщение об ошибке для последнего кода ошибки PInvoke.

GetLastSystemError()

Возвращает последнюю системную ошибку в текущем потоке.

GetLastWin32Error()

Возвращает код ошибки, возвращенной последней неуправляемой функцией, вызванной при помощи вызова неуправляемого кода с установленным флагом SetLastError.

GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32)
Устаревшие..

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

GetMethodInfoForComSlot(Type, Int32, ComMemberType)

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

GetNativeVariantForObject(Object, IntPtr)
Устаревшие..

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

GetNativeVariantForObject<T>(T, IntPtr)
Устаревшие..

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

GetObjectForIUnknown(IntPtr)

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

GetObjectForNativeVariant(IntPtr)
Устаревшие..

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

GetObjectForNativeVariant<T>(IntPtr)
Устаревшие..

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

GetObjectsForNativeVariants(IntPtr, Int32)
Устаревшие..

Преобразует массив типа COM VARIANT в массив объектов.

GetObjectsForNativeVariants<T>(IntPtr, Int32)
Устаревшие..

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

GetPInvokeErrorMessage(Int32)

Возвращает системное сообщение об ошибке для предоставленного кода ошибки.

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)

Возвращает смещение поля для неуправляемой формы указанного управляемого класса.

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)

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

PtrToStructure<T>(IntPtr, T)

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

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

Возвращает размер неуправляемого типа в байтах.

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)

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

ThrowExceptionForHR(Int32, IntPtr)

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

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)

Записывает в неуправляемую память 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).

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