이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

UnmanagedMemoryStream 클래스

 

관리 코드에서 관리되지 않는 메모리 블록에 액세스할 수 있도록 합니다.

네임스페이스:   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을 반환합니다.(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 인터페이스입니다. 형식을 사용 하 여 했으면 삭제 해야의 직접 또는 간접적으로. 직접 형식의 dispose를 호출 하는 Dispose 에서 메서드는 try/catch 블록입니다. 작업을 삭제할 하지 직접,를 사용 하 여 언어 구문와 같은 using (in 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 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: