この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

UnmanagedMemoryStream クラス

 

公開日: 2016年10月

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

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

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      System.IO.UnmanagedMemoryStream
        System.IO.MemoryMappedFiles.MemoryMappedViewStream

public class UnmanagedMemoryStream : Stream

名前説明
System_CAPS_protmethodUnmanagedMemoryStream()

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

System_CAPS_pubmethodUnmanagedMemoryStream(Byte*, Int64)

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

System_CAPS_pubmethodUnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

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

System_CAPS_pubmethodUnmanagedMemoryStream(SafeBuffer, Int64, Int64)

指定したオフセットおよび長さを使用して、セーフ バッファーに UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodUnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

指定したオフセット、長さ、およびファイル アクセスを使用して、セーフ バッファーに UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_pubpropertyCanRead

ストリームが読み取りをサポートしているかどうかを示す値を取得します。(Stream.CanRead をオーバーライドします。)

System_CAPS_pubpropertyCanSeek

ストリームがシークをサポートしているかどうかを示す値を取得します。(Stream.CanSeek をオーバーライドします。)

System_CAPS_pubpropertyCanTimeout

現在のストリームがタイムアウトできるかどうかを決定する値を取得します。(Stream から継承されます。)

System_CAPS_pubpropertyCanWrite

ストリームが書き込みをサポートしているかどうかを示す値を取得します。(Stream.CanWrite をオーバーライドします。)

System_CAPS_pubpropertyCapacity

ストリームの長さ (サイズ)、またはストリームに割り当てられたメモリの総量 (容量) を取得します。

System_CAPS_pubpropertyLength

ストリーム内のデータ長を取得します。(Stream.Length をオーバーライドします。)

System_CAPS_pubpropertyPosition

ストリーム内の現在位置を取得または設定します。(Stream.Position をオーバーライドします。)

System_CAPS_pubpropertyPositionPointer

ストリーム内の現在位置に基づいて、ストリームへのバイト ポインターを取得または設定します。

System_CAPS_pubpropertyReadTimeout

ストリームがタイムアウト前に読み取りを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。(Stream から継承されます。)

System_CAPS_pubpropertyWriteTimeout

ストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。(Stream から継承されます。)

名前説明
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

非同期の読み込み動作を開始します。 (代わりに ReadAsync を使用してください。「解説」を参照してください。)(Stream から継承されます。)

System_CAPS_pubmethodBeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

非同期の書き込み操作を開始します。 (代わりに WriteAsync を使用してください。「解説」を参照してください。)(Stream から継承されます。)

System_CAPS_pubmethodClose()

現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 このメソッドを呼び出す代わりに、ストリームが適切に破棄されていることを確認します。(Stream から継承されます。)

System_CAPS_pubmethodCopyTo(Stream)

現在のストリームからバイトを読み取り、別のストリームに書き込みます。(Stream から継承されます。)

System_CAPS_pubmethodCopyTo(Stream, Int32)

指定されたバッファー サイズを使用して、現在のストリームからバイトを読み取り、別のストリームに書き込みます。(Stream から継承されます。)

System_CAPS_pubmethodCopyToAsync(Stream)

現在のストリームからすべてのバイトを非同期に読み取り、別のストリームに書き込みます。(Stream から継承されます。)

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、別のストリームに書き込みます。(Stream から継承されます。)

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたバッファー サイズとキャンセル トークンを使用して、別のストリームに書き込みます。(Stream から継承されます。)

System_CAPS_pubmethodCreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要なすべての関連情報を格納しているオブジェクトを作成します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodCreateWaitHandle()

互換性のために残されています。 WaitHandle オブジェクトを割り当てます。(Stream から継承されます。)

System_CAPS_pubmethodDispose()

Stream によって使用されているすべてのリソースを解放します。(Stream から継承されます。)

System_CAPS_protmethodDispose(Boolean)

UnmanagedMemoryStream によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。(Stream.Dispose(Boolean) をオーバーライドします。)

System_CAPS_pubmethodEndRead(IAsyncResult)

保留中の非同期読み取りが完了するまで待機します。 (代わりに ReadAsync を使用してください。「解説」を参照してください。)(Stream から継承されます。)

System_CAPS_pubmethodEndWrite(IAsyncResult)

非同期書き込み操作を終了します。 (代わりに WriteAsync を使用してください。「解説」を参照してください。)(Stream から継承されます。)

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)

System_CAPS_pubmethodFlush()

アクションが実行されないように、Flush メソッドをオーバーライドします。(Stream.Flush() をオーバーライドします。)

System_CAPS_pubmethodFlushAsync()

ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込みます。(Stream から継承されます。)

System_CAPS_pubmethodFlushAsync(CancellationToken)

指定した場合にオペレーションがキャンセルされるが他のアクションは実行されないように、Stream.FlushAsync メソッドをオーバーライドします。

.NET Framework 4.6 以降で利用可能(Stream.FlushAsync(CancellationToken) をオーバーライドします。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_protmethodInitialize(Byte*, Int64, Int64, FileAccess)

アンマネージ メモリ位置へのポインターを使用して、UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。

System_CAPS_protmethodInitialize(SafeBuffer, Int64, Int64, FileAccess)

指定したオフセット、長さ、およびファイル アクセスを使用して、セーフ バッファーに UnmanagedMemoryStream クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodInitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone(Boolean)

現在の簡易コピーを作成MarshalByRefObjectオブジェクト。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodObjectInvariant()

互換性のために残されています。 この API は 製品 インフラストラクチャをサポートします。コードから直接使用するためのものではありません。 Contract のサポートを提供します。(Stream から継承されます。)

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

指定したバイト数を指定した配列に読み取ります。(Stream.Read(Byte[], Int32, Int32) をオーバーライドします。)

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32)

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進めます。(Stream から継承されます。)

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32, CancellationToken)

指定したバイト数を指定した配列に非同期に読み取ります。

.NET Framework 4.6 以降で利用可能(Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken) をオーバーライドします。)

System_CAPS_pubmethodReadByte()

ストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト分進めます。ストリームの末尾の場合は -1 を返します。(Stream.ReadByte() をオーバーライドします。)

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

現在のストリームの現在位置を、指定した値に設定します。(Stream.Seek(Int64, SeekOrigin) をオーバーライドします。)

System_CAPS_pubmethodSetLength(Int64)

ストリーム長を、指定した値に設定します。(Stream.SetLength(Int64) をオーバーライドします。)

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

バッファーのデータを使用して、現在のストリームにバイトのブロックを書き込みます。(Stream.Write(Byte[], Int32, Int32) をオーバーライドします。)

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32)

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。(Stream から継承されます。)

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32, CancellationToken)

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。

.NET Framework 4.6 以降で利用可能(Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken) をオーバーライドします。)

System_CAPS_pubmethodWriteByte(Byte)

ファイル ストリームの現在位置にバイトを書き込みます。(Stream.WriteByte(Byte) をオーバーライドします。)

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

System_CAPS_important重要

この型は、 IDisposable インターフェイスです。 型の使用が完了したらを直接または間接的にその破棄する必要があります。 型を直接に破棄するには、try/catch ブロックで Dispose メソッドを呼び出します。 間接的に破棄する場合は、 using (C#) または Using (Visual Basic) 言語構成要素を使用します。 詳細については、IDisposable インターフェイスに関するトピックの "IDisposable を実装するオブジェクトを使用する" セクションを参照してください 。

次のコード例は、読み取りし、書き込みをアンマネージ メモリを使用する方法を示します、 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();
    }
}

ユニバーサル Windows プラットフォーム
10 以降で使用可能
.NET Framework
2.0 以降で使用可能
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能

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

トップに戻る
表示: