Aracılığıyla paylaş


Marshal.ReadIntPtr Yöntem

Tanım

Yönetilmeyen bellekten işlemcinin yerel boyutlu tamsayısını okur. Hizalanmamış bellek konumlarından okuma desteklenir.

Aşırı Yüklemeler

ReadIntPtr(IntPtr, Int32)

Yönetilmeyen bellekten belirli bir uzaklıkta işlemci yerel boyutlu bir tamsayı okur.

ReadIntPtr(Object, Int32)
Geçersiz.

Yönetilmeyen bellekten işlemcinin yerel boyutlu tamsayısını okur.

ReadIntPtr(IntPtr)

Yönetilmeyen bellekten yerel boyutlu işlemci tamsayısını okur.

ReadIntPtr(IntPtr, Int32)

Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs

Yönetilmeyen bellekten belirli bir uzaklıkta işlemci yerel boyutlu bir tamsayı okur.

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

Parametreler

ptr
IntPtr

nativeint

Yönetilmeyen bellekte okuması gereken temel adres.

ofs
Int32

Okumadan önce parametresine ptr eklenen ek bir bayt uzaklığı.

Döndürülenler

IntPtr

nativeint

Verilen uzaklıkta yönetilmeyen bellekten okunan tamsayı.

Öznitelikler

Özel durumlar

Temel adres (ptr) artı uzaklık bayt (ofs) null veya geçersiz bir adres üretir.

Örnekler

Aşağıdaki örnekte ve WriteIntPtr yöntemlerini kullanarak ReadIntPtr yönetilmeyen bir diziyi okuma ve yazma işlemleri gösterilmektedir.

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

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteIntPtr(unmanagedArray, i * elementSize, ((IntPtr)(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.ReadIntPtr(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteIntPtr()
    ' Allocate unmanaged memory.
    Dim elementSize As Integer = Marshal.SizeOf(GetType(IntPtr))
    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.WriteIntPtr(unmanagedArray, i * elementSize, CType(i + 1, IntPtr))
    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.ReadIntPtr(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

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

Açıklamalar

ReadIntPtr yönetilmeyen bir C stili IntPtr diziyle doğrudan etkileşime olanak sağlayarak, tüm yönetilmeyen diziyi (kullanarak Marshal.Copy) öğe değerlerini okumadan önce ayrı bir yönetilen diziye kopyalamanın masrafını ortadan kaldırır.

Hizalanmamış bellek konumlarından okuma desteklenir.

Ayrıca bkz.

Şunlara uygulanır

ReadIntPtr(Object, Int32)

Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs

Dikkat

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

Yönetilmeyen bellekten işlemcinin yerel boyutlu tamsayısını okur.

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

Parametreler

ptr
Object

Kaynak nesnenin yönetilmeyen belleğindeki temel adres.

ofs
Int32

Okumadan önce parametresine ptr eklenen ek bir bayt uzaklığı.

Döndürülenler

IntPtr

nativeint

Verilen uzaklıkta yönetilmeyen bellekten okunan tamsayı.

Öznitelikler

Özel durumlar

Temel adres (ptr) artı uzaklık bayt (ofs) null veya geçersiz bir adres üretir.

ptr bir ArrayWithOffset nesnedir. Bu yöntem parametreleri kabul ArrayWithOffset etmez.

Açıklamalar

ReadIntPtr yönetilmeyen bir C stili IntPtr diziyle doğrudan etkileşime olanak sağlayarak, tüm yönetilmeyen diziyi (kullanarak Marshal.Copy) öğe değerlerini okumadan önce ayrı bir yönetilen diziye kopyalamanın masrafını ortadan kaldırır.

Hizalanmamış bellek konumlarından okuma desteklenir.

Ayrıca bkz.

Şunlara uygulanır

ReadIntPtr(IntPtr)

Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs

Yönetilmeyen bellekten yerel boyutlu işlemci tamsayısını okur.

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

Parametreler

ptr
IntPtr

nativeint

Yönetilmeyen bellekte okunacak adres.

Döndürülenler

IntPtr

nativeint

Yönetilmeyen bellekten okunan tamsayı. 32 bit makinelerde 32 bit tamsayı, 64 bit makinelerde ise 64 bit tamsayı döndürülür.

Öznitelikler

Özel durumlar

ptr tanınan bir biçim değildir.

-veya-

ptr, null değeridir.

-veya-

ptr geçersizdir.

Örnekler

Aşağıdaki örnekte ve WriteIntPtr yöntemlerini kullanarak ReadIntPtr yönetilmeyen bir diziyi okuma ve yazma işlemleri gösterilmektedir.

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

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteIntPtr(unmanagedArray, i * elementSize, ((IntPtr)(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.ReadIntPtr(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteIntPtr()
    ' Allocate unmanaged memory.
    Dim elementSize As Integer = Marshal.SizeOf(GetType(IntPtr))
    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.WriteIntPtr(unmanagedArray, i * elementSize, CType(i + 1, IntPtr))
    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.ReadIntPtr(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

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

Açıklamalar

ReadIntPtr 0 zımni uzaklığı vardır. Bu yöntem yönetilmeyen bir C stili IntPtr diziyle doğrudan etkileşime olanak sağlayarak, tüm yönetilmeyen diziyi (kullanarak Marshal.Copy) öğe değerlerini okumadan önce ayrı bir yönetilen diziye kopyalamanın masrafını ortadan kaldırır.

Hizalanmamış bellek konumlarından okuma desteklenir.

Ayrıca bkz.

Şunlara uygulanır