Marshal Clase

Definición

Proporciona una colección de métodos para asignar memoria no administrada, copiar bloques de memoria no administrados y convertir los tipos administrados en no administrados, así como otros métodos diversos que se utilizan al interactuar con código no administrado.

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
Herencia
Marshal

Ejemplos

En el ejemplo siguiente se muestra cómo usar varios métodos definidos por la Marshal clase .

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

Comentarios

Los static métodos definidos en la Marshal clase son esenciales para trabajar con código no administrado. La mayoría de los métodos definidos en esta clase suelen usarse por los desarrolladores que desean proporcionar un puente entre los modelos de programación administrados y no administrados. Por ejemplo, el StringToHGlobalAnsi método copia caracteres ANSI de una cadena especificada (en el montón administrado) en un búfer del montón no administrado. También asigna el montón de destino del tamaño correcto.

Common Language Runtime proporciona funcionalidades específicas de serialización. Para obtener más información sobre el comportamiento de serialización, consulte Serialización de interoperabilidad.

Los Read métodos y Write de la Marshal clase admiten el acceso alineado y no alineado.

Campos

SystemDefaultCharSize

Representa el tamaño de carácter predeterminado del sistema; el valor predeterminado es 2 para los sistemas Unicode y 1 para los sistemas ANSI. Este campo es de solo lectura.

SystemMaxDBCSCharSize

Representa el tamaño máximo de un juego de caracteres de doble byte (DBCS), expresado en bytes, para el actual sistema operativo. Este campo es de solo lectura.

Métodos

AddRef(IntPtr)

Incrementa el contador de referencia en la interfaz especificada.

AllocCoTaskMem(Int32)

Asigna un bloque de memoria de un tamaño especificado del asignador de memoria de tareas COM.

AllocHGlobal(Int32)

Asigna memoria de la memoria no administrada del proceso utilizando el número especificado de bytes.

AllocHGlobal(IntPtr)

Asigna memoria de la memoria no administrada del proceso utilizando el puntero al número especificado de bytes.

AreComObjectsAvailableForCleanup()

Indica si hay contenedores RCW de cualquier contexto disponibles para la limpieza.

BindToMoniker(String)

Obtiene un puntero de interfaz identificado por el moniker especificado.

ChangeWrapperHandleStrength(Object, Boolean)

Cambia la intensidad del controlador del contenedor CCW de un objeto.

CleanupUnusedObjectsInCurrentContext()

Notifica al tiempo de ejecución que debe limpiar todos los contenedores RCW asignados en el contexto actual.

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

Copia datos de una matriz unidimensional y administrada de enteros de 8 bits sin signo a un puntero de memoria no administrada.

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

Copia datos de una matriz de caracteres unidimensional y administrada a un puntero de memoria no administrada.

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

Copia datos de una matriz unidimensional y administrada de números de punto flotante de precisión doble a un puntero de memoria no administrada.

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

Copia datos de una matriz unidimensional administrada de enteros de 16 bits con signo a un puntero de memoria no administrada.

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

Copia datos de una matriz unidimensional administrada de enteros de 32 bits con signo a un puntero de memoria no administrada.

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

Copia datos de una matriz unidimensional administrada de enteros de 64 bits con signo a un puntero de memoria no administrada.

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

Copia datos de un puntero de memoria no administrada a una matriz administrada de enteros de 8 bits sin signo.

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

Copia datos de un puntero de memoria no administrada a una matriz de caracteres administrada.

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

Copia datos de un puntero de memoria no administrada a una matriz administrada de números de punto flotante de precisión doble.

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

Copia datos de un puntero de memoria no administrada a una matriz administrada de enteros de 16 bits con signo.

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

Copia datos de un puntero de memoria no administrada a una matriz administrada de enteros de 32 bits con signo.

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

Copia datos de un puntero de memoria no administrada a una matriz administrada de enteros de 64 bits con signo.

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

Copia datos de un puntero de memoria no administrada a una matriz IntPtr administrada.

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

Copia datos de un puntero de memoria no administrada a una matriz administrada de números de punto flotante de precisión sencilla.

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

Copia datos de una matriz IntPtr unidimensional y administrada a un puntero de memoria no administrada.

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

Copia datos de una matriz unidimensional y administrada de números de punto flotante de precisión sencilla a un puntero de memoria no administrada.

CreateAggregatedObject(IntPtr, Object)
Obsoletos.

Agrega un objeto administrado al objeto COM especificado.

CreateAggregatedObject<T>(IntPtr, T)

Agrega un objeto administrado del tipo especificado con el objeto COM especificado.

CreateWrapperOfType(Object, Type)
Obsoletos.

Ajusta el objeto COM especificado en un objeto del tipo especificado.

CreateWrapperOfType<T,TWrapper>(T)

Ajusta el objeto COM especificado en un objeto del tipo especificado.

DestroyStructure(IntPtr, Type)
Obsoletos.

Libera todas las subestructuras a las que apunta el bloque de memoria no administrada especificado.

DestroyStructure<T>(IntPtr)

Libera todas las subestructuras de un tipo especificado a las que apunta el bloque de memoria no administrada especificado.

FinalReleaseComObject(Object)

Libera todas las referencias a un contenedor RCW estableciendo su recuento de referencias en 0.

FreeBSTR(IntPtr)

Libera un BSTR utilizando la función SysFreeString de COM.

FreeCoTaskMem(IntPtr)

Libera un bloque de memoria asignado por el asignador de memoria de tareas COM no administrada.

FreeHGlobal(IntPtr)

Libera memoria previamente asignada de la memoria no administrada del proceso.

GenerateGuidForType(Type)

Devuelve el identificador único global (GUID) del tipo especificado o genera un GUID mediante el algoritmo que utiliza la herramienta Exportador de la biblioteca de tipos (Tlbexp.exe).

GenerateProgIdForType(Type)

Devuelve un identificador de programación (ProgID) para el tipo especificado.

GetActiveObject(String)

Obtiene una instancia en ejecución del objeto especificado de la tabla de objetos de ejecución (ROT).

GetComInterfaceForObject(Object, Type)
Obsoletos.

Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Obsoletos.

Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado. El modo de personalización especificado controla el acceso a la interfaz de consulta personalizada.

GetComInterfaceForObject<T,TInterface>(T)

Devuelve un puntero a una interfaz IUnknown que representa la interfaz en un objeto del tipo especificado. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.

GetComInterfaceForObjectInContext(Object, Type)

Devuelve un puntero de interfaz que representa la interfaz especificada para un objeto, si el llamador está en el mismo contexto que ese objeto.

GetComObjectData(Object, Object)

Recupera datos a los que hace referencia la clave especificada desde el objeto COM especificado.

GetComSlotForMethodInfo(MemberInfo)

Recupera la ranura de tabla de funciones virtuales (v-table o VTBL) para un tipo MemberInfo especificado cuando ese tipo se expone a COM.

GetDelegateForFunctionPointer(IntPtr, Type)
Obsoletos.

Convierte un puntero a función no administrada en un delegado.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Convierte un puntero a función no administrada en un delegado de un tipo especificado.

GetEndComSlot(Type)

Recupera la última ranura de la tabla de funciones virtuales (v-table o VTBL) de un tipo cuando se expone a COM.

GetExceptionCode()
Obsoletos.

Devuelve el código que identifica el tipo de excepción que ocurrió.

GetExceptionForHR(Int32)

Convierte el código de error HRESULT especificado en un objeto Exception correspondiente.

GetExceptionForHR(Int32, IntPtr)

Convierte el código de error HRESULT especificado en un objeto Exception correspondiente, con información de error adicional pasada en una interfaz IErrorInfo para el objeto de excepción.

GetExceptionPointers()

Recupera una descripción de la excepción independiente del equipo así como información sobre el estado del subproceso cuando ocurrió la excepción.

GetFunctionPointerForDelegate(Delegate)
Obsoletos.

Convierte un delegado en un puntero a función invocable desde código no administrado.

GetFunctionPointerForDelegate<TDelegate>(TDelegate)

Convierte un delegado de un tipo especificado en un puntero a función invocable desde código no administrado.

GetHINSTANCE(Module)

Devuelve el identificador de instancia (HINSTANCE) para el módulo especificado.

GetHRForException(Exception)

Convierte la excepción especificada en HRESULT.

GetHRForLastWin32Error()

Devuelve el HRESULT correspondiente al último error producido en código Win32 ejecutado mediante Marshal.

GetIDispatchForObject(Object)

Devuelve una interfaz IDispatch de un objeto administrado.

GetIDispatchForObjectInContext(Object)

Devuelve un puntero de interfaz IDispatch desde un objeto administrado si el llamador está en el mismo contexto que ese objeto.

GetITypeInfoForType(Type)

Devuelve una interfaz ITypeInfo de un tipo administrado.

GetIUnknownForObject(Object)

Devuelve una interfaz IUnknown desde un objeto administrado.

GetIUnknownForObjectInContext(Object)

Devuelve una interfaz IUnknown desde un objeto administrado, si el llamador está en el mismo contexto que ese objeto.

GetLastPInvokeError()

Obtenga el último error de invocación de plataforma en el subproceso actual.

GetLastPInvokeErrorMessage()

Obtiene el mensaje de error del sistema para el último código de error de PInvoke.

GetLastSystemError()

Obtiene el último error del sistema en el subproceso actual.

GetLastWin32Error()

Devuelve el código de error devuelto por la última función no administrada a la que se llamó mediante la invocación de plataforma que tiene la marca SetLastError activada.

GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32)
Obsoletos.

Obtiene un puntero a una función generada en tiempo de ejecución que calcula las referencias a una llamada de código administrado a código no administrado.

GetMethodInfoForComSlot(Type, Int32, ComMemberType)

Recupera un objeto MemberInfo para la ranura de la tabla de funciones virtuales (v-table o VTBL) especificada.

GetNativeVariantForObject(Object, IntPtr)
Obsoletos.

Convierte un objeto en un COM VARIANT.

GetNativeVariantForObject<T>(T, IntPtr)
Obsoletos.

Convierte un objeto de un tipo especificado en un objeto COM VARIANT.

GetObjectForIUnknown(IntPtr)

Devuelve una instancia de un tipo que representa un objeto COM por un puntero a su interfaz IUnknown.

GetObjectForNativeVariant(IntPtr)
Obsoletos.

Convierte un COM VARIANT a un objeto.

GetObjectForNativeVariant<T>(IntPtr)
Obsoletos.

Convierte un objeto COM VARIANT en un objeto de un tipo especificado.

GetObjectsForNativeVariants(IntPtr, Int32)
Obsoletos.

Convierte una matriz de elementos VARIANT COM en una matriz de objetos.

GetObjectsForNativeVariants<T>(IntPtr, Int32)
Obsoletos.

Convierte una matriz de elementos COM VARIANT en una matriz de un tipo especificado.

GetPInvokeErrorMessage(Int32)

Obtiene el mensaje de error del sistema para el código de error proporcionado.

GetStartComSlot(Type)

Obtiene la primera ranura de la tabla de funciones virtuales (v-table o VTBL) que contiene métodos definidos por el usuario.

GetThreadFromFiberCookie(Int32)
Obsoletos.

Convierte una cookie de fibra en la correspondiente instancia Thread.

GetTypedObjectForIUnknown(IntPtr, Type)

Devuelve un objeto administrado de un tipo especificado que representa un objeto COM.

GetTypeForITypeInfo(IntPtr)

Convierte un objeto ITypeInfo no administrado en un objeto Type administrado.

GetTypeFromCLSID(Guid)

Devuelve el tipo asociado al identificador de clase especificado (CLSID).

GetTypeInfoName(ITypeInfo)

Recupera el nombre del tipo representado por un objeto ITypeInfo.

GetTypeInfoName(UCOMITypeInfo)
Obsoletos.

Recupera el nombre del tipo representado por un objeto ITypeInfo.

GetTypeLibGuid(ITypeLib)

Recupera el identificador de biblioteca (LIBID) de una biblioteca de tipos.

GetTypeLibGuid(UCOMITypeLib)
Obsoletos.

Recupera el identificador de biblioteca (LIBID) de una biblioteca de tipos.

GetTypeLibGuidForAssembly(Assembly)

Recupera el identificador de biblioteca (LIBID) asignado a una biblioteca de tipos cuando se exportó del ensamblado especificado.

GetTypeLibLcid(ITypeLib)

Recupera el LCID de una biblioteca de tipos.

GetTypeLibLcid(UCOMITypeLib)
Obsoletos.

Recupera el LCID de una biblioteca de tipos.

GetTypeLibName(ITypeLib)

Recupera el nombre de una biblioteca de tipos.

GetTypeLibName(UCOMITypeLib)
Obsoletos.

Recupera el nombre de una biblioteca de tipos.

GetTypeLibVersionForAssembly(Assembly, Int32, Int32)

Recupera el número de versión de la biblioteca de tipos que se exportará del ensamblado especificado.

GetUniqueObjectForIUnknown(IntPtr)

Crea un objeto de contenedor RCW único para una interfaz IUnknown dada.

GetUnmanagedThunkForManagedMethodPtr(IntPtr, IntPtr, Int32)
Obsoletos.

Obtiene un puntero a una función generada en tiempo de ejecución que calcula las referencias a una llamada de código no administrado a código administrado.

InitHandle(SafeHandle, IntPtr)

Inicializa el identificador subyacente de un objeto recién creado SafeHandle en el valor proporcionado.

IsComObject(Object)

Indica si un objeto especificado representa un objeto COM.

IsTypeVisibleFromCom(Type)

Indica si un tipo es visible a clientes COM.

NumParamBytes(MethodInfo)

Calcula el número de bytes de la memoria no administrada que se necesitan para contener los parámetros del método especificado.

OffsetOf(Type, String)
Obsoletos.

Devuelve el desplazamiento de campo del formato no administrado de la clase administrada.

OffsetOf<T>(String)

Devuelve el desplazamiento de campo del formato no administrado de una clase administrada específica.

Prelink(MethodInfo)

Ejecuta tareas únicas de configuración de método sin llamar al método.

PrelinkAll(Type)

Realiza una comprobación anterior al vínculo de todos los métodos de una clase.

PtrToStringAnsi(IntPtr)

Copia todos los caracteres hasta el primer carácter nulo de una cadena ANSI o UTF-8 no administrada a un String administrado y amplía cada carácter a UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Asigna un String administrado, copia en él un número especificado de caracteres de una cadena ANSI o UTF-8 no administrada y amplía cada carácter a UTF-16.

PtrToStringAuto(IntPtr)

Asigna un String administrado y copia en él todos los caracteres hasta el primer carácter nulo de una cadena almacenada en memoria no administrada.

PtrToStringAuto(IntPtr, Int32)

Asigna un String administrado y copia en él el número de caracteres especificado de una cadena almacenada en memoria no administrada.

PtrToStringBSTR(IntPtr)

Asigna un String administrado y copia en él una cadena binaria (BSTR) almacenada en memoria no administrada.

PtrToStringUni(IntPtr)

Asigna un String administrado y copia en él todos los caracteres hasta el primer carácter nulo de una cadena Unicode no administrada.

PtrToStringUni(IntPtr, Int32)

Asigna un String administrado y copia en él un número de caracteres especificado de una cadena Unicode no administrada.

PtrToStringUTF8(IntPtr)

Asigna una cadena String administrada y copia en ella todos los caracteres hasta el primer carácter nulo de una cadena UTF-8 no administrada.

PtrToStringUTF8(IntPtr, Int32)

Asigna una cadena String administrada y copia en ella un número de bytes especificado de una cadena UTF-8 no administrada.

PtrToStructure(IntPtr, Object)
Obsoletos.

Calcula las referencias a los datos desde un bloque de memoria no administrada a un objeto administrado.

PtrToStructure(IntPtr, Type)
Obsoletos.

Calcula las referencias a los datos desde un bloque de memoria no administrado a un objeto administrado y recién asignado del tipo especificado.

PtrToStructure<T>(IntPtr)

Serializa las referencias a los datos desde un bloque de memoria no administrado a un objeto administrado y recién asignado del tipo especificado por un parámetro de tipo genérico.

PtrToStructure<T>(IntPtr, T)

Calcula las referencias desde un bloque de memoria no administrado a un objeto administrado de un tipo especificado.

QueryInterface(IntPtr, Guid, IntPtr)

Solicita un puntero a una interfaz especificada de un objeto COM.

ReadByte(IntPtr)

Lee un único byte desde la memoria no administrada.

ReadByte(IntPtr, Int32)

Lee un único byte en un desplazamiento (o índice) dado desde la memoria no administrada.

ReadByte(Object, Int32)
Obsoletos.

Lee un único byte en un desplazamiento (o índice) dado desde la memoria no administrada.

ReadInt16(IntPtr)

Lee un entero de 16 bits con signo de la memoria no administrada.

ReadInt16(IntPtr, Int32)

Lee un entero de 16 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt16(Object, Int32)
Obsoletos.

Lee un entero de 16 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt32(IntPtr)

Lee un entero de 32 bits con signo de la memoria no administrada.

ReadInt32(IntPtr, Int32)

Lee un entero de 32 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt32(Object, Int32)
Obsoletos.

Lee un entero de 32 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt64(IntPtr)

Lee un entero de 64 bits con signo de la memoria no administrada.

ReadInt64(IntPtr, Int32)

Lee un entero de 64 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt64(Object, Int32)
Obsoletos.

Lee un entero de 64 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadIntPtr(IntPtr)

Lee de la memoria no administrada un entero cuyo tamaño es propio del procesador nativo.

ReadIntPtr(IntPtr, Int32)

Lee de la memoria no administrada un valor de tipo entero cuyo tamaño en bytes es propio del procesador nativo en un desplazamiento dado.

ReadIntPtr(Object, Int32)
Obsoletos.

Lee de la memoria no administrada un valor de tipo entero cuyo tamaño en bytes es propio del procesador nativo.

ReAllocCoTaskMem(IntPtr, Int32)

Cambia el tamaño de un bloque de memoria asignado previamente con AllocCoTaskMem(Int32).

ReAllocHGlobal(IntPtr, IntPtr)

Cambia el tamaño de un bloque de memoria asignado previamente con AllocHGlobal(IntPtr).

Release(IntPtr)

Disminuye el contador de referencia de la interfaz especificada.

ReleaseComObject(Object)

Disminuye el recuento de referencias del contenedor RWC asociado al objeto COM especificado.

ReleaseThreadCache()
Obsoletos.

Libera la memoria caché del subproceso.

SecureStringToBSTR(SecureString)

Asigna una cadena binaria (BSTR) no administrada y copia en ella el contenido de un objeto SecureString administrado.

SecureStringToCoTaskMemAnsi(SecureString)

Copia el contenido de un objeto SecureString administrado en un bloque de memoria asignado desde el asignador de tareas COM no administrado.

SecureStringToCoTaskMemUnicode(SecureString)

Copia el contenido de un objeto SecureString administrado en un bloque de memoria asignado desde el asignador de tareas COM no administrado.

SecureStringToGlobalAllocAnsi(SecureString)

Copia el contenido de un SecureString administrado en la memoria no administrada, convirtiéndolo en formato ANSI mientras realiza la copia.

SecureStringToGlobalAllocUnicode(SecureString)

Copia el contenido de un objeto SecureString administrado en la memoria no administrada.

SetComObjectData(Object, Object, Object)

Establece los datos a los que hace referencia la clave especificada desde el objeto COM especificado.

SetLastPInvokeError(Int32)

Establece el último error de invocación de plataforma en el subproceso actual.

SetLastSystemError(Int32)

Establece el último error del sistema en el subproceso actual.

SizeOf(Object)
Obsoletos.

Devuelve el tamaño no administrado de un objeto en bytes.

SizeOf(Type)
Obsoletos.

Devuelve el tamaño, expresado en bytes, de un tipo no administrado.

SizeOf<T>()

Devuelve el tamaño, expresado en bytes, de un tipo no administrado.

SizeOf<T>(T)

Devuelve el tamaño no administrado de un objeto de un tipo especificado en bytes.

StringToBSTR(String)

Asigna un BSTR y copia en él el contenido de un objeto String administrado.

StringToCoTaskMemAnsi(String)

Copia el contenido de un String administrado en un bloque de memoria asignado desde el asignador de tareas COM no administrado.

StringToCoTaskMemAuto(String)

Copia el contenido de un String administrado en un bloque de memoria asignado desde el asignador de tareas COM no administrado.

StringToCoTaskMemUni(String)

Copia el contenido de un String administrado en un bloque de memoria asignado desde el asignador de tareas COM no administrado.

StringToCoTaskMemUTF8(String)

Copia el contenido de un String administrado en un bloque de memoria asignado desde el asignador de tareas COM no administrado.

StringToHGlobalAnsi(String)

Copia el contenido de un String administrado en la memoria no administrada, convirtiéndolo en formato ANSI mientras realiza la copia.

StringToHGlobalAuto(String)

Copia el contenido de un String administrado en la memoria no administrada, convirtiéndolo en formato ANSI si es necesario.

StringToHGlobalUni(String)

Copia el contenido de un String administrado en la memoria no administrada.

StructureToPtr(Object, IntPtr, Boolean)
Obsoletos.

Calcula las referencias a los datos desde un objeto administrado a un bloque de memoria no administrado.

StructureToPtr<T>(T, IntPtr, Boolean)

Calcula las referencias de un objeto administrado de un tipo especificado a un bloque de memoria no administrado.

ThrowExceptionForHR(Int32)

Se produce una excepción con un valor HRESULT de error específico.

ThrowExceptionForHR(Int32, IntPtr)

Inicia una excepción con un valor HRESULT de error concreto, basado en la interfaz IErrorInfo especificada.

UnsafeAddrOfPinnedArrayElement(Array, Int32)
Obsoletos.

Obtiene la dirección del elemento en el índice especificado dentro de la matriz especificada.

UnsafeAddrOfPinnedArrayElement<T>(T[], Int32)

Obtiene la dirección del elemento en el índice especificado en una matriz de tipo especificado.

WriteByte(IntPtr, Byte)

Escribe un único byte en la memoria no administrada.

WriteByte(IntPtr, Int32, Byte)

Escribe un valor de un solo byte en la memoria no administrada en un desplazamiento especificado.

WriteByte(Object, Int32, Byte)
Obsoletos.

Escribe un valor de un solo byte en la memoria no administrada en un desplazamiento especificado.

WriteInt16(IntPtr, Char)

Escribe un carácter como un valor entero de 16 bits en la memoria no administrada.

WriteInt16(IntPtr, Int16)

Escribe un valor entero de 16 bits en la memoria no administrada.

WriteInt16(IntPtr, Int32, Char)

Escribe un valor entero de 16 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt16(IntPtr, Int32, Int16)

Escribe un valor entero de 16 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt16(Object, Int32, Char)
Obsoletos.

Escribe un valor entero de 16 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt16(Object, Int32, Int16)
Obsoletos.

Escribe un valor entero de 16 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt32(IntPtr, Int32)

Escribe un valor entero de 32 bits con signo en la memoria no administrada.

WriteInt32(IntPtr, Int32, Int32)

Escribe un valor entero de 32 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt32(Object, Int32, Int32)
Obsoletos.

Escribe un valor entero de 32 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt64(IntPtr, Int32, Int64)

Escribe un valor entero de 64 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteInt64(IntPtr, Int64)

Escribe un valor entero de 64 bits con signo en la memoria no administrada.

WriteInt64(Object, Int32, Int64)
Obsoletos.

Escribe un valor entero de 64 bits con signo en la memoria no administrada en un desplazamiento especificado.

WriteIntPtr(IntPtr, Int32, IntPtr)

Escribe en la memoria no administrada un valor de tipo entero cuyo tamaño en bytes es propio del procesador nativo en un desplazamiento especificado.

WriteIntPtr(IntPtr, IntPtr)

Escribe en la memoria no administrada un valor de tipo entero cuyo tamaño en bytes es propio del procesador nativo.

WriteIntPtr(Object, Int32, IntPtr)
Obsoletos.

Escribe en la memoria no administrada un valor de tipo entero cuyo tamaño en bytes es propio del procesador nativo.

ZeroFreeBSTR(IntPtr)

Libera un puntero BSTR que se asignó usando el método SecureStringToBSTR(SecureString).

ZeroFreeCoTaskMemAnsi(IntPtr)

Libera un puntero a una cadena no administrada que se ha asignado con el método SecureStringToCoTaskMemAnsi(SecureString).

ZeroFreeCoTaskMemUnicode(IntPtr)

Libera un puntero a una cadena no administrada que se ha asignado con el método SecureStringToCoTaskMemUnicode(SecureString).

ZeroFreeCoTaskMemUTF8(IntPtr)

Libera un puntero a una cadena no administrada que se ha asignado con el método StringToCoTaskMemUTF8(String).

ZeroFreeGlobalAllocAnsi(IntPtr)

Libera un puntero a una cadena no administrada que se ha asignado con el método SecureStringToGlobalAllocAnsi(SecureString).

ZeroFreeGlobalAllocUnicode(IntPtr)

Libera un puntero a una cadena no administrada que se ha asignado con el método SecureStringToGlobalAllocUnicode(SecureString).

Se aplica a