UnmanagedMemoryStreamとは? わかりやすく解説

UnmanagedMemoryStream クラス

メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。

マネージ コードからメモリのアンマネージ ブロックにアクセスできるようにします。

このクラスは、CLS に準拠していません。  

名前空間: System.IO
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<CLSCompliantAttribute(False)> _
Public Class UnmanagedMemoryStream
    Inherits Stream
Dim instance As UnmanagedMemoryStream
[CLSCompliantAttribute(false)] 
public class UnmanagedMemoryStream : Stream
[CLSCompliantAttribute(false)] 
public ref class UnmanagedMemoryStream : public
 Stream
/** @attribute CLSCompliantAttribute(false) */ 
public class UnmanagedMemoryStream extends
 Stream
CLSCompliantAttribute(false) 
public class UnmanagedMemoryStream extends
 Stream
解説解説
使用例使用例

UnmanagedMemoryStream クラスを使用して、アンマネージ メモリから読み取る方法と、アンマネージ メモリに書き込む方法を次のコード例に示します。アンマネージ メモリのブロックは、Marshal クラスを使用して割り当ておよび割り当て解除されます。

// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{
    
    static void Main()
    {
        
            // Create som data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some
 data.");

        // Allocate a block of unmanaged memory and return an IntPtr
 object.    
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer
 to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr,
 message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer
 to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr,
 message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}
継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.IO.Stream
      System.IO.UnmanagedMemoryStream
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

UnmanagedMemoryStream コンストラクタ ()

メモ : このコンストラクタは、.NET Framework version 2.0 で新しく追加されたものです。

UnmanagedMemoryStream クラスの新しい空のインスタンスを初期化します。

このコンストラクタは、CLS に準拠していません。  

名前空間: System.IO
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Dim instance As New UnmanagedMemoryStream
protected UnmanagedMemoryStream ()
protected:
UnmanagedMemoryStream ()
protected UnmanagedMemoryStream ()
protected function UnmanagedMemoryStream ()
例外例外
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
UnmanagedMemoryStream クラス
UnmanagedMemoryStream メンバ
System.IO 名前空間

UnmanagedMemoryStream コンストラクタ (Byte*, Int64, Int64, FileAccess)

メモ : このコンストラクタは、.NET Framework version 2.0 で新しく追加されたものです。

指定した位置、メモリ長、メモリ総量、およびファイル アクセス値を使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。

このコンストラクタは、CLS に準拠していません。  

名前空間: System.IO
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外の種類条件

SecurityException

ユーザーに必要なアクセス許可がありません。

ArgumentNullException

pointer 値が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

length 値が 0 未満です。

または

capacity 値が 0 未満です。

または

length 値が capacity 値を超えています。

解説解説
使用例使用例

UnmanagedMemoryStream クラスを使用して、アンマネージ メモリから読み取る方法と、アンマネージ メモリに書き込む方法を次のコード例に示します。アンマネージ メモリのブロックは、Marshal クラスを使用して割り当ておよび割り当て解除されます。

// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{
    
    static void Main()
    {
        
            // Create som data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some
 data.");

        // Allocate a block of unmanaged memory and return an IntPtr
 object.    
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer
 to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr,
 message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer
 to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr,
 message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
UnmanagedMemoryStream クラス
UnmanagedMemoryStream メンバ
System.IO 名前空間

UnmanagedMemoryStream コンストラクタ

UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
UnmanagedMemoryStream () UnmanagedMemoryStream クラスの新しい空のインスタンスを初期化します。
UnmanagedMemoryStream (Byte*, Int64) 指定した位置とメモリ長を使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
UnmanagedMemoryStream (Byte*, Int64, Int64, FileAccess) 指定した位置、メモリ長、メモリ総量、およびファイル アクセス値を使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
参照参照

関連項目

UnmanagedMemoryStream クラス
UnmanagedMemoryStream メンバ
System.IO 名前空間

UnmanagedMemoryStream コンストラクタ (Byte*, Int64)

メモ : このコンストラクタは、.NET Framework version 2.0 で新しく追加されたものです。

指定した位置とメモリ長を使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。

このコンストラクタは、CLS に準拠していません。  

名前空間: System.IO
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外の種類条件

SecurityException

ユーザーに必要なアクセス許可がありません。

ArgumentNullException

pointer 値が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

length 値が 0 未満です。

または

length がオーバーフローの原因となりうる長さです。

解説解説

このコンストラクタは、UnmanagedMemoryStream クラスの新しいインスタンスを作成します。また、既定では、CanWrite プロパティに false を設定し、CanRead プロパティに true を設定します。Length プロパティには length パラメータの値が設定され、変更することはできません。

使用例使用例

UnmanagedMemoryStream クラスを使用して、アンマネージ メモリから読み取る方法と、アンマネージ メモリに書き込む方法を次のコード例に示します。アンマネージ メモリのブロックは、Marshal クラスを使用して割り当ておよび割り当て解除されます。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream
 writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write
 access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length;
 i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream
 readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write
 access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length;
 i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
UnmanagedMemoryStream クラス
UnmanagedMemoryStream メンバ
System.IO 名前空間

UnmanagedMemoryStream プロパティ


パブリック プロパティパブリック プロパティ

参照参照

関連項目

UnmanagedMemoryStream クラス
System.IO 名前空間

UnmanagedMemoryStream メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド BeginRead  非同期の読み込み動作を開始します。 ( Stream から継承されます。)
パブリック メソッド BeginWrite  非同期の書き込み操作を開始します。 ( Stream から継承されます。)
パブリック メソッド Close  現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 ( Stream から継承されます。)
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Dispose オーバーロードされます。  
パブリック メソッド EndRead  保留中の非同期読み取りが完了するまで待機します。 ( Stream から継承されます。)
パブリック メソッド EndWrite  非同期書き込み操作を終了します。 ( Stream から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド Flush オーバーライドされます。 アクションが実行されないように、Flush メソッドをオーバーライドします。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Read オーバーライドされます。 指定したバイト数を指定した配列に読み取ります。
パブリック メソッド ReadByte オーバーライドされます。 ストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト分進めます。ストリームの末尾の場合は -1 を返します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド Seek オーバーライドされます。 現在のストリームの現在位置を、指定した値に設定します。
パブリック メソッド SetLength オーバーライドされます。 ストリーム長を、指定した値に設定します。
パブリック メソッド Synchronized  指定した Stream オブジェクトをラップするスレッド セーフな (同期された) ラッパーを作成します。 ( Stream から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
パブリック メソッド Write オーバーライドされます。 バッファのデータを使用して、現在のストリームにバイトのブロックを書き込みます。
パブリック メソッド WriteByte オーバーライドされます。 ファイル ストリームの現在位置にバイトを書き込みます。
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

UnmanagedMemoryStream クラス
System.IO 名前空間

UnmanagedMemoryStream メンバ

マネージ コードからメモリのアンマネージ ブロックにアクセスできるようにします。

UnmanagedMemoryStream データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
プロテクト コンストラクタプロテクト コンストラクタ
  名前 説明
プロテクト メソッド UnmanagedMemoryStream オーバーロードされます。 UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド BeginRead  非同期の読み込み動作を開始します。 (Stream から継承されます。)
パブリック メソッド BeginWrite  非同期の書き込み操作を開始します。 (Stream から継承されます。)
パブリック メソッド Close  現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 (Stream から継承されます。)
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Dispose オーバーロードされます。  
パブリック メソッド EndRead  保留中の非同期読み取りが完了するまで待機します。 (Stream から継承されます。)
パブリック メソッド EndWrite  非同期書き込み操作を終了します。 (Stream から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド Flush オーバーライドされます。 アクションが実行されないように、Flush メソッドをオーバーライドします。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Read オーバーライドされます。 指定したバイト数を指定した配列に読み取ります。
パブリック メソッド ReadByte オーバーライドされます。 ストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト分進めます。ストリームの末尾の場合は -1 を返します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド Seek オーバーライドされます。 現在のストリームの現在位置を、指定した値に設定します。
パブリック メソッド SetLength オーバーライドされます。 ストリーム長を、指定した値に設定します。
パブリック メソッド Synchronized  指定した Stream オブジェクトをラップするスレッド セーフな (同期された) ラッパーを作成します。 (Stream から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
パブリック メソッド Write オーバーライドされます。 バッファのデータを使用して、現在のストリームにバイトのブロックを書き込みます。
パブリック メソッド WriteByte オーバーライドされます。 ファイル ストリームの現在位置にバイトを書き込みます。
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

UnmanagedMemoryStream クラス
System.IO 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「UnmanagedMemoryStream」の関連用語

UnmanagedMemoryStreamのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



UnmanagedMemoryStreamのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS