UnmanagedMemoryStream.Write Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
Write(ReadOnlySpan<Byte>) |
Sağlanan bayt aralığındaki verileri kullanarak geçerli yönetilmeyen bellek akışına bir bayt bloğu yazar. |
Write(Byte[], Int32, Int32) |
Arabellekten alınan verileri kullanarak geçerli akışa bir bayt bloğu yazar. |
Write(ReadOnlySpan<Byte>)
- Kaynak:
- UnmanagedMemoryStream.cs
- Kaynak:
- UnmanagedMemoryStream.cs
- Kaynak:
- UnmanagedMemoryStream.cs
Sağlanan bayt aralığındaki verileri kullanarak geçerli yönetilmeyen bellek akışına bir bayt bloğu yazar.
public:
override void Write(ReadOnlySpan<System::Byte> source);
public:
override void Write(ReadOnlySpan<System::Byte> buffer);
public override void Write (ReadOnlySpan<byte> source);
public override void Write (ReadOnlySpan<byte> buffer);
override this.Write : ReadOnlySpan<byte> -> unit
override this.Write : ReadOnlySpan<byte> -> unit
Public Overrides Sub Write (source As ReadOnlySpan(Of Byte))
Public Overrides Sub Write (buffer As ReadOnlySpan(Of Byte))
Parametreler
- sourcebuffer
- ReadOnlySpan<Byte>
Baytların geçerli yönetilmeyen bellek akışına kopyalandığı baytların yayılması.
Şunlara uygulanır
Write(Byte[], Int32, Int32)
- Kaynak:
- UnmanagedMemoryStream.cs
- Kaynak:
- UnmanagedMemoryStream.cs
- Kaynak:
- UnmanagedMemoryStream.cs
Arabellekten alınan verileri kullanarak geçerli akışa bir bayt bloğu yazar.
public:
override void Write(cli::array <System::Byte> ^ buffer, int offset, int count);
public override void Write (byte[] buffer, int offset, int count);
override this.Write : byte[] * int * int -> unit
Public Overrides Sub Write (buffer As Byte(), offset As Integer, count As Integer)
Parametreler
- buffer
- Byte[]
Baytların geçerli akışa kopyalandığı bayt dizisi.
- offset
- Int32
Geçerli akışa bayt kopyalamaya başlanacak arabellekteki uzaklık.
- count
- Int32
Geçerli akışa yazacak bayt sayısı.
Özel durumlar
Akış kapatılır.
Temel alınan bellek yazmayı desteklemez.
-veya-
Akışa CanWrite yazma girişiminde bulunulup özelliği şeklindedir false
.
-veya-
count
Değer, akışın kapasitesinden büyüktür.
-veya-
Konum, akış kapasitesinin sonundadır.
Bir G/Ç hatası oluşur.
Belirtilen parametrelerden biri sıfırdan küçük.
offset
Parametresi eksi parametresinin buffer
uzunluğu parametresinden count
küçüktür.
buffer
parametresidirnull
.
Örnekler
Aşağıdaki kod örneği, sınıfını kullanarak yönetilmeyen bellekten okuma ve yazma işlemini UnmanagedMemoryStream gösterir. Yönetilmeyen bellek bloğu ayrılır ve sınıfı kullanılarak Marshal ayrılmıştır.
// 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();
}
}
Açıklamalar
Yazma işlemi akışın geçerli konumunda gerçekleşir.