エクスポート (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非同期の読み込み動作を開始します。(代わりに ReadAsync を使用してください。「解説」を参照してください。) (Stream から継承されます。)
パブリック メソッドBeginWrite非同期の書き込み操作を開始します。(代わりに WriteAsync を使用してください。「解説」を参照してください。) (Stream から継承されます。)
パブリック メソッドClose現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 このメソッドを呼び出す代わりに、ストリームが適切に破棄されていることを確認します。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream)現在のストリームからバイトを読み取り、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream, Int32)指定されたバッファー サイズを使用して、現在のストリームからバイトを読み取り、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyToAsync(Stream)現在のストリームからすべてのバイトを非同期に読み取り、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyToAsync(Stream, Int32)指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyToAsync(Stream, Int32, CancellationToken)指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたバッファー サイズとキャンセル トークンを使用して、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCreateObjRefリモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
プロテクト メソッドCreateWaitHandle 互換性のために残されています。 WaitHandle オブジェクトを割り当てます。 (Stream から継承されます。)
パブリック メソッドDispose() Stream によって使用されているすべてのリソースを解放します。 (Stream から継承されます。)
プロテクト メソッドDispose(Boolean) UnmanagedMemoryStream によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 (Stream.Dispose(Boolean) をオーバーライドします。)
パブリック メソッドEndRead保留中の非同期読み取りが完了するまで待機します。(代わりに ReadAsync を使用してください。「解説」を参照してください。) (Stream から継承されます。)
パブリック メソッドEndWrite非同期書き込み操作を終了します。(代わりに WriteAsync を使用してください。「解説」を参照してください。) (Stream から継承されます。)
パブリック メソッドEquals(Object)指定のオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalize オブジェクトがガベジ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドFlushアクションが実行されないように、Flush メソッドをオーバーライドします。 (Stream.Flush() をオーバーライドします。)
パブリック メソッドFlushAsync()ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込みます。 (Stream から継承されます。)
パブリック メソッドFlushAsync(CancellationToken)ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込み、キャンセル要求を監視します。 (Stream から継承されます。)
パブリック メソッド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) をオーバーライドします。)
パブリック メソッドReadAsync(Byte[], Int32, Int32)現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進めます。 (Stream から継承されます。)
パブリック メソッドReadAsync(Byte[], Int32, Int32, CancellationToken)現在のストリームから非同期的にバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。 (Stream から継承されます。)
パブリック メソッドReadByteストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト分進めます。ストリームの末尾の場合は -1 を返します。 (Stream.ReadByte() をオーバーライドします。)
パブリック メソッドSeek現在のストリームの現在位置を、指定した値に設定します。 (Stream.Seek(Int64, SeekOrigin) をオーバーライドします。)
パブリック メソッドSetLengthストリーム長を、指定した値に設定します。 (Stream.SetLength(Int64) をオーバーライドします。)
パブリック メソッドToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッドWriteバッファーのデータを使用して、現在のストリームにバイトのブロックを書き込みます。 (Stream.Write(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドWriteAsync(Byte[], Int32, Int32)現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。 (Stream から継承されます。)
パブリック メソッドWriteAsync(Byte[], Int32, Int32, CancellationToken)現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。 (Stream から継承されます。)
パブリック メソッド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.5、4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

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

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

コミュニティの追加

追加
表示:
© 2014 Microsoft