エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

UnmanagedMemoryStream クラス

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

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

public class UnmanagedMemoryStream : Stream

UnmanagedMemoryStream 型で公開されるメンバーは以下のとおりです。

  名前説明
プロテクト メソッドUnmanagedMemoryStream() UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
パブリック メソッドUnmanagedMemoryStream(Byte*, Int64)指定した位置とメモリ長を使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
パブリック メソッドUnmanagedMemoryStream(SafeBuffer, Int64, Int64)指定されたオフセットおよび長さを使用して、セーフ バッファーに UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
パブリック メソッドUnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)指定した位置、メモリ長、メモリ総量、およびファイル アクセス値を使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
パブリック メソッドUnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)指定されたオフセット、長さ、およびファイル アクセスを使用して、セーフ バッファーに UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティCanReadストリームが読み取りをサポートしているかどうかを示す値を取得します。 (Stream.CanRead をオーバーライドします。)
パブリック プロパティCanSeekストリームがシークをサポートしているかどうかを示す値を取得します。 (Stream.CanSeek をオーバーライドします。)
パブリック プロパティCanTimeout現在のストリームがタイムアウトできるかどうかを決定する値を取得します。 (Stream から継承されます。)
パブリック プロパティCanWriteストリームが書き込みをサポートしているかどうかを示す値を取得します。 (Stream.CanWrite をオーバーライドします。)
パブリック プロパティCapacityストリームの長さ (サイズ)、またはストリームに割り当てられたメモリの総量 (容量) を取得します。
パブリック プロパティLengthストリーム内のデータ長を取得します。 (Stream.Length をオーバーライドします。)
パブリック プロパティPositionストリーム内の現在位置を取得または設定します。 (Stream.Position をオーバーライドします。)
パブリック プロパティPositionPointerストリーム内の現在位置に基づいて、ストリームへのバイト ポインターを取得または設定します。
パブリック プロパティReadTimeoutストリームがタイムアウト前に読み取りを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (Stream から継承されます。)
パブリック プロパティWriteTimeoutストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (Stream から継承されます。)
このページのトップへ

  名前説明
パブリック メソッドBeginRead非同期の読み込み動作を開始します。 (Stream から継承されます。)
パブリック メソッドBeginWrite非同期の書き込み操作を開始します。 (Stream から継承されます。)
パブリック メソッドClose現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream)現在のストリームからバイトを読み取り、コピー先のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream, Int32)指定されたバッファー サイズを使用して、現在のストリームからすべてのバイトを読み取り、コピー先のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCreateObjRefリモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
プロテクト メソッドCreateWaitHandle 互換性のために残されています。 WaitHandle オブジェクトを割り当てます。 (Stream から継承されます。)
パブリック メソッドDispose() Stream によって使用されているすべてのリソースを解放します。 (Stream から継承されます。)
プロテクト メソッドDispose(Boolean) UnmanagedMemoryStream によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 (Stream.Dispose(Boolean) をオーバーライドします。)
パブリック メソッドEndRead保留中の非同期読み取りが完了するまで待機します。 (Stream から継承されます。)
パブリック メソッドEndWrite非同期書き込み操作を終了します。 (Stream から継承されます。)
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalize オブジェクトがガベジ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドFlushアクションが実行されないように、Flush メソッドをオーバーライドします。 (Stream.Flush() をオーバーライドします。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetLifetimeService対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッドInitialize(Byte*, Int64, Int64, FileAccess)アンマネージ メモリ位置へのポインターを使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
プロテクト メソッドInitialize(SafeBuffer, Int64, Int64, FileAccess)指定されたオフセット、長さ、およびファイル アクセスを使用して、セーフ バッファーに UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。
パブリック メソッドInitializeLifetimeService対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
プロテクト メソッドMemberwiseClone()現在の Object の簡易コピーを作成します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone(Boolean)現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (MarshalByRefObject から継承されます。)
プロテクト メソッドObjectInvariantインフラストラクチャ。 Contract のサポートを提供します。 (Stream から継承されます。)
パブリック メソッドRead指定したバイト数を指定した配列に読み取ります。 (Stream.Read(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドReadByteストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト分進めます。ストリームの末尾の場合は -1 を返します。 (Stream.ReadByte() をオーバーライドします。)
パブリック メソッドSeek現在のストリームの現在位置を、指定した値に設定します。 (Stream.Seek(Int64, SeekOrigin) をオーバーライドします。)
パブリック メソッドSetLengthストリーム長を、指定した値に設定します。 (Stream.SetLength(Int64) をオーバーライドします。)
パブリック メソッドToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッドWriteバッファーのデータを使用して、現在のストリームにバイトのブロックを書き込みます。 (Stream.Write(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドWriteByteファイル ストリームの現在位置にバイトを書き込みます。 (Stream.WriteByte(Byte) をオーバーライドします。)
このページのトップへ

このクラスは、既存のストリームベースのモデルを使用して、アンマネージ メモリへのアクセスをサポートします。アンマネージ メモリの内容をヒープにコピーする必要はありません。

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 some 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

サポート対象: 4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

コミュニティの追加

追加
表示:
© 2015 Microsoft