Marshal.ReadInt32 Metod

Definition

Läser ett 32-bitars signerat heltal från ohanterat minne. Läsning från ojusterade minnesplatser stöds.

Överlagringar

Name Description
ReadInt32(IntPtr)

Läser ett 32-bitars signerat heltal från ohanterat minne.

ReadInt32(IntPtr, Int32)

Läser ett 32-bitars signerat heltal vid en given förskjutning från ohanterat minne.

ReadInt32(Object, Int32)
Föråldrad.

Läser ett 32-bitars signerat heltal vid en given förskjutning från ohanterat minne.

ReadInt32(IntPtr)

Läser ett 32-bitars signerat heltal från ohanterat minne.

public:
 static int ReadInt32(IntPtr ptr);
[System.Security.SecurityCritical]
public static int ReadInt32(IntPtr ptr);
public static int ReadInt32(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadInt32 : nativeint -> int
static member ReadInt32 : nativeint -> int
Public Shared Function ReadInt32 (ptr As IntPtr) As Integer

Parametrar

ptr
IntPtr

nativeint

Adressen i ohanterat minne som ska läsas från.

Returer

Det 32-bitars signerade heltalet lästes från ohanterat minne.

Attribut

Undantag

ptr är inte ett känt format.

-eller-

ptr är null.

-eller-

ptr är ogiltigt.

Exempel

I följande exempel visas hur du läser och skriver till en ohanterad matris med hjälp av ReadInt32 metoderna och WriteInt32 .

static void ReadWriteInt32()
{
    // Allocate unmanaged memory. 
    int elementSize = 4;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt32(unmanagedArray, i * elementSize, ((Int32)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadInt32(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt32()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 4
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteInt32(unmanagedArray, i * elementSize, CType(i + 1, Int32))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadInt32(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

I följande exempel visas hur du använder ReadInt32 metoden för att läsa värdet för en ohanterad int variabel.

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



void main()
{
    // Create an unmanaged integer.
    int myVal = 42;

    // Read the int as a managed Int32.
        Int32 ^ myManagedVal = Marshal::ReadInt32((IntPtr) &myVal);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Kommentarer

ReadInt32 har en underförstådd förskjutning på 0. Den här metoden möjliggör direkt interaktion med en ohanterad C-matris Int32 , vilket eliminerar kostnaden för att kopiera en hel ohanterad matris (med hjälp Marshal.Copyav ) till en separat hanterad matris innan dess elementvärden läss.

Läsning från ojusterade minnesplatser stöds.

Se även

Gäller för

ReadInt32(IntPtr, Int32)

Läser ett 32-bitars signerat heltal vid en given förskjutning från ohanterat minne.

public:
 static int ReadInt32(IntPtr ptr, int ofs);
[System.Security.SecurityCritical]
public static int ReadInt32(IntPtr ptr, int ofs);
public static int ReadInt32(IntPtr ptr, int ofs);
[<System.Security.SecurityCritical>]
static member ReadInt32 : nativeint * int -> int
static member ReadInt32 : nativeint * int -> int
Public Shared Function ReadInt32 (ptr As IntPtr, ofs As Integer) As Integer

Parametrar

ptr
IntPtr

nativeint

Basadressen i ohanterat minne som ska läsas från.

ofs
Int32

En extra byteförskjutning, som läggs till i parametern ptr innan du läser.

Returer

Det 32-bitars signerade heltalet lästes från ohanterat minne.

Attribut

Undantag

Basadressen (ptr) plus förskjutningsbyte (ofs) genererar en null- eller ogiltig adress.

Exempel

I följande exempel visas hur du läser och skriver till en ohanterad matris med hjälp av ReadInt32 metoderna och WriteInt32 .

static void ReadWriteInt32()
{
    // Allocate unmanaged memory. 
    int elementSize = 4;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt32(unmanagedArray, i * elementSize, ((Int32)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadInt32(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt32()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 4
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteInt32(unmanagedArray, i * elementSize, CType(i + 1, Int32))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadInt32(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

I följande exempel visas hur du använder ReadInt32 metoden för att läsa värdet för en ohanterad int variabel.

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



void main()
{
    // Create an unmanaged int pointer.
    int * myVal;
    int tmp = 42;
    // Initialize it to another value.
    myVal = &tmp;

    // Read value as a managed Int32.
    Int32 ^ myManagedVal = Marshal::ReadInt32((IntPtr) myVal, 0);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Kommentarer

ReadInt32 möjliggör direkt interaktion med en ohanterad 32-bitars signerad matris, vilket eliminerar kostnaden för att kopiera en hel ohanterad matris (med hjälp Marshal.Copyav ) till en separat hanterad matris innan dess elementvärden läss.

Läsning från ojusterade minnesplatser stöds.

Se även

Gäller för

ReadInt32(Object, Int32)

Varning

ReadInt32(Object, Int32) may be unavailable in future releases.

Läser ett 32-bitars signerat heltal vid en given förskjutning från ohanterat minne.

public:
 static int ReadInt32(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadInt32(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static int ReadInt32(object ptr, int ofs);
public static int ReadInt32(object ptr, int ofs);
[System.Security.SecurityCritical]
public static int ReadInt32(object ptr, int ofs);
[System.Obsolete("ReadInt32(Object, Int32) may be unavailable in future releases.")]
public static int ReadInt32(object ptr, int ofs);
[<System.Obsolete("ReadInt32(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadInt32 : obj * int -> int
static member ReadInt32 : obj * int -> int
[<System.Security.SecurityCritical>]
static member ReadInt32 : obj * int -> int
[<System.Obsolete("ReadInt32(Object, Int32) may be unavailable in future releases.")>]
static member ReadInt32 : obj * int -> int
Public Shared Function ReadInt32 (ptr As Object, ofs As Integer) As Integer

Parametrar

ptr
Object

Basadressen i ohanterat minne för källobjektet.

ofs
Int32

En extra byteförskjutning, som läggs till i parametern ptr innan du läser.

Returer

Det 32-bitars signerade heltalet lästes från ohanterat minne vid den angivna förskjutningen.

Attribut

Undantag

Basadressen (ptr) plus förskjutningsbyte (ofs) genererar en null- eller ogiltig adress.

ptr är ett ArrayWithOffset objekt. Den här metoden accepterar ArrayWithOffset inte parametrar.

Kommentarer

ReadInt32 möjliggör direkt interaktion med en ohanterad 32-bitars signerad matris, vilket eliminerar kostnaden för att kopiera en hel ohanterad matris (med hjälp Marshal.Copyav ) till en separat hanterad matris innan dess elementvärden läss.

Läsning från ojusterade minnesplatser stöds.

Se även

Gäller för