Marshal.ReadInt64 メソッド

定義

アンマネージ メモリから 64 ビット符号付き整数を読み取ります。 アライメントされていないメモリ位置からの読み取りはサポートされています。

オーバーロード

ReadInt64(IntPtr)

アンマネージ メモリから 64 ビット符号付き整数を読み取ります。

ReadInt64(IntPtr, Int32)

アンマネージ メモリの指定されたオフセットから 64 ビット符号付き整数を読み取ります。

ReadInt64(Object, Int32)
古い.

アンマネージ メモリの指定されたオフセットから 64 ビット符号付き整数を読み取ります。

ReadInt64(IntPtr)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

アンマネージ メモリから 64 ビット符号付き整数を読み取ります。

C#
[System.Security.SecurityCritical]
public static long ReadInt64 (IntPtr ptr);
C#
public static long ReadInt64 (IntPtr ptr);

パラメーター

ptr
IntPtr

読み込み元となるアンマネージ メモリ内のアドレス。

戻り値

アンマネージ メモリから読み取られた 64 ビット符号付き整数。

属性

例外

ptr が認識された形式ではありません。

または

ptrnull です。

または

ptr が無効です。

次の例では、 メソッドと WriteInt64 メソッドを使用してアンマネージド配列の読み取りと書き込みを行う方法をReadInt64示します。

C#
static void ReadWriteInt64()
{
    // Allocate unmanaged memory. 
    int elementSize = 8;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

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

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}

次の例では、 メソッドを使用 ReadInt64 してアンマネージ __int64 変数の値を読み取る方法を示します。

C++
using namespace System;
using namespace System::Runtime::InteropServices;



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

    // Read the value as a managed Int64.
    Int64 ^ myManagedVal = Marshal::ReadInt64((IntPtr) &myVal);

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

注釈

ReadInt64 の暗黙的なオフセットは 0 です。 このメソッドを使用すると、アンマネージ C スタイル Int64 の配列と直接やり取りできるため、アンマネージ配列全体 (を使用) Marshal.Copyを別のマネージド配列にコピーしてから要素値を読み取る必要がなくなります。

アライメントされていないメモリ位置からの読み取りはサポートされています。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ReadInt64(IntPtr, Int32)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

アンマネージ メモリの指定されたオフセットから 64 ビット符号付き整数を読み取ります。

C#
[System.Security.SecurityCritical]
public static long ReadInt64 (IntPtr ptr, int ofs);
C#
public static long ReadInt64 (IntPtr ptr, int ofs);

パラメーター

ptr
IntPtr

読み込み元となるアンマネージ メモリ内のベース アドレス。

ofs
Int32

読み取りの前に ptr パラメーターに追加される追加のバイト オフセット。

戻り値

アンマネージ メモリの指定されたオフセットから読み取られた 64 ビット符号付き整数。

属性

例外

ベース アドレス (ptr) にオフセット バイト (ofs) を足すと、null または無効なアドレスが生成されます。

次の例では、 メソッドと WriteInt64 メソッドを使用してアンマネージド配列の読み取りと書き込みを行う方法をReadInt64示します。

C#
static void ReadWriteInt64()
{
    // Allocate unmanaged memory. 
    int elementSize = 8;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

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

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}

次の例では、 メソッドを使用 ReadInt64 してアンマネージ __int64 変数の値を読み取る方法を示します。

C++

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



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

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

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

注釈

ReadInt64 を使用すると、アンマネージ 64 ビット符号付き配列と直接やり取りできるため、要素値を読み取る前にアンマネージド配列全体 (を使用) Marshal.Copyを別のマネージド配列にコピーするコストを削減できます。

アライメントされていないメモリ位置からの読み取りはサポートされています。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ReadInt64(Object, Int32)

ソース:
Marshal.CoreCLR.cs
ソース:
Marshal.CoreCLR.cs
ソース:
Marshal.CoreCLR.cs

注意事項

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

アンマネージ メモリの指定されたオフセットから 64 ビット符号付き整数を読み取ります。

C#
[System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static long ReadInt64 (object ptr, int ofs);
C#
[System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")]
public static long ReadInt64 (object ptr, int ofs);
C#
public static long ReadInt64 (object ptr, int ofs);
C#
[System.Security.SecurityCritical]
public static long ReadInt64 (object ptr, int ofs);

パラメーター

ptr
Object

ソース オブジェクトのアンマネージ メモリ内のベース アドレス。

ofs
Int32

読み取りの前に ptr パラメーターに追加される追加のバイト オフセット。

戻り値

アンマネージ メモリの指定されたオフセットから読み取られた 64 ビット符号付き整数。

属性

例外

ベース アドレス (ptr) にオフセット バイト (ofs) を足すと、null または無効なアドレスが生成されます。

ptrArrayWithOffset オブジェクトです。 このメソッドは、ArrayWithOffset パラメーターを受け入れません。

注釈

ReadInt64 を使用すると、アンマネージ 64 ビット符号付き配列と直接やり取りできるため、要素値を読み取る前にアンマネージド配列全体 (を使用) Marshal.Copyを別のマネージド配列にコピーするコストを削減できます。

アライメントされていないメモリ位置からの読み取りはサポートされています。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン (廃止)
.NET (Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 2.0 (1.2, 1.3, 1.4, 1.5, 1.6, 2.1)
UWP (10.0)