UnmanagedMemoryStream Konstruktorer
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Initierar en ny instans av UnmanagedMemoryStream klassen.
Överlagringar
| Name | Description |
|---|---|
| UnmanagedMemoryStream() |
Initierar en ny instans av UnmanagedMemoryStream klassen. |
| UnmanagedMemoryStream(Byte*, Int64) |
Initierar en ny instans av UnmanagedMemoryStream klassen med den angivna platsen och minneslängden. |
| UnmanagedMemoryStream(SafeBuffer, Int64, Int64) |
Initierar en ny instans av UnmanagedMemoryStream klassen i en säker buffert med en angiven förskjutning och längd. |
| UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) |
Initierar en ny instans av UnmanagedMemoryStream klassen med den angivna platsen, minneslängden, den totala mängden minne och filåtkomstvärden. |
| UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) |
Initierar en ny instans av UnmanagedMemoryStream klassen i en säker buffert med en angiven förskjutning, längd och filåtkomst. |
UnmanagedMemoryStream()
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
Initierar en ny instans av UnmanagedMemoryStream klassen.
protected:
UnmanagedMemoryStream();
protected UnmanagedMemoryStream();
Protected Sub New ()
Undantag
Användaren har inte den behörighet som krävs.
Gäller för
UnmanagedMemoryStream(Byte*, Int64)
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
Viktigt!
Detta API uppfyller inte CLS.
Initierar en ny instans av UnmanagedMemoryStream klassen med den angivna platsen och minneslängden.
public:
UnmanagedMemoryStream(System::Byte* pointer, long length);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public UnmanagedMemoryStream(byte* pointer, long length);
[System.CLSCompliant(false)]
public UnmanagedMemoryStream(byte* pointer, long length);
public UnmanagedMemoryStream(byte* pointer, long length);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
new System.IO.UnmanagedMemoryStream : nativeptr<byte> * int64 -> System.IO.UnmanagedMemoryStream
[<System.CLSCompliant(false)>]
new System.IO.UnmanagedMemoryStream : nativeptr<byte> * int64 -> System.IO.UnmanagedMemoryStream
new System.IO.UnmanagedMemoryStream : nativeptr<byte> * int64 -> System.IO.UnmanagedMemoryStream
Parametrar
- pointer
- Byte*
En pekare till en ohanterad minnesplats.
- length
- Int64
Längden på det minne som ska användas.
- Attribut
Undantag
Användaren har inte den behörighet som krävs.
Värdet pointer är null.
Värdet length är mindre än noll.
-eller-
Är length tillräckligt stor för att orsaka ett spill.
Exempel
Följande kodexempel visar hur du läser från och skriver till ohanterat minne med hjälp av UnmanagedMemoryStream klassen. Ett block med ohanterat minne allokeras och avallokeras med hjälp av Marshal klassen.
// 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.Runtime.InteropServices;
using System.Text;
unsafe class Program
{
static void Main()
{
// Create some data to write.
byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");
// Allocate a block of unmanaged memory.
IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);
// Get a byte pointer from the unmanaged memory block.
byte* memBytePtr = (byte*)memIntPtr.ToPointer();
UnmanagedMemoryStream writeStream =
new UnmanagedMemoryStream(
memBytePtr, text.Length, text.Length, FileAccess.Write);
// Write the data.
WriteToStream(writeStream, text);
// Close the stream.
writeStream.Close();
// Create another UnmanagedMemoryStream for reading.
UnmanagedMemoryStream readStream =
new UnmanagedMemoryStream(memBytePtr, text.Length);
// Display the contents of the stream to the console.
PrintStream(readStream);
// Close the reading stream.
readStream.Close();
// Free up the unmanaged memory.
Marshal.FreeHGlobal(memIntPtr);
}
public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
{
// Verify that the stream is writable:
// By default, UnmanagedMemoryStream objects do not have write access,
// write access must be set explicitly.
if (writeStream.CanWrite)
{
// Write the data, byte by byte
for (int i = 0; i < writeStream.Length; i++)
{
writeStream.WriteByte(text[i]);
}
}
}
public static void PrintStream(UnmanagedMemoryStream readStream)
{
byte[] text = new byte[readStream.Length];
// Verify that the stream is writable:
// By default, UnmanagedMemoryStream objects do not have write access,
// write access must be set explicitly.
if (readStream.CanRead)
{
// Write the data, byte by byte
for (int i = 0; i < readStream.Length; i++)
{
text[i] = (byte)readStream.ReadByte();
}
}
Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
}
}
Kommentarer
Den här konstruktorn skapar en ny instans av UnmanagedMemoryStream klassen och anger CanWrite som standard egenskapen till false och CanRead egenskapen till true. Egenskapen Length är inställd på parameterns length värde och kan inte ändras.
Gäller för
UnmanagedMemoryStream(SafeBuffer, Int64, Int64)
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
Initierar en ny instans av UnmanagedMemoryStream klassen i en säker buffert med en angiven förskjutning och längd.
public:
UnmanagedMemoryStream(System::Runtime::InteropServices::SafeBuffer ^ buffer, long offset, long length);
public UnmanagedMemoryStream(System.Runtime.InteropServices.SafeBuffer buffer, long offset, long length);
new System.IO.UnmanagedMemoryStream : System.Runtime.InteropServices.SafeBuffer * int64 * int64 -> System.IO.UnmanagedMemoryStream
Public Sub New (buffer As SafeBuffer, offset As Long, length As Long)
Parametrar
- buffer
- SafeBuffer
Bufferten som ska innehålla den ohanterade minnesströmmen.
- offset
- Int64
Bytepositionen i bufferten där den ohanterade minnesströmmen ska startas.
- length
- Int64
Längden på den ohanterade minnesströmmen.
Gäller för
UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
Viktigt!
Detta API uppfyller inte CLS.
Initierar en ny instans av UnmanagedMemoryStream klassen med den angivna platsen, minneslängden, den totala mängden minne och filåtkomstvärden.
public:
UnmanagedMemoryStream(System::Byte* pointer, long length, long capacity, System::IO::FileAccess access);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public UnmanagedMemoryStream(byte* pointer, long length, long capacity, System.IO.FileAccess access);
[System.CLSCompliant(false)]
public UnmanagedMemoryStream(byte* pointer, long length, long capacity, System.IO.FileAccess access);
public UnmanagedMemoryStream(byte* pointer, long length, long capacity, System.IO.FileAccess access);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
new System.IO.UnmanagedMemoryStream : nativeptr<byte> * int64 * int64 * System.IO.FileAccess -> System.IO.UnmanagedMemoryStream
[<System.CLSCompliant(false)>]
new System.IO.UnmanagedMemoryStream : nativeptr<byte> * int64 * int64 * System.IO.FileAccess -> System.IO.UnmanagedMemoryStream
new System.IO.UnmanagedMemoryStream : nativeptr<byte> * int64 * int64 * System.IO.FileAccess -> System.IO.UnmanagedMemoryStream
Parametrar
- pointer
- Byte*
En pekare till en ohanterad minnesplats.
- length
- Int64
Längden på det minne som ska användas.
- capacity
- Int64
Den totala mängden minne som tilldelats dataströmmen.
- access
- FileAccess
Ett av FileAccess värdena.
- Attribut
Undantag
Användaren har inte den behörighet som krävs.
Värdet pointer är null.
Värdet length är mindre än noll.
-eller-
Värdet capacity är mindre än noll.
-eller-
Värdet length är större än värdet capacity .
Exempel
Följande kodexempel visar hur du läser från och skriver till ohanterat minne med hjälp av UnmanagedMemoryStream klassen. Ett block med ohanterat minne allokeras och avallokeras med hjälp av Marshal klassen.
// 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();
}
}
Kommentarer
Parametern length definierar den aktuella mängden minne som används. Om du läser eller lägger till data i dataströmmen length ska värdet vara lika med mängden giltiga data i dataströmmen som ska läsas från eller bevaras. Om du skriver till dataströmmen ska det här värdet vara noll.
Parametern capacity anger mängden tillgängligt minne. Det här värdet kan beskriva en region som är längre än den angivna längden eller ange en region som kan läggas till. Alla försök att skriva utöver det här värdet misslyckas.
Parametern access anger CanReadegenskaperna , och CanWrite . Observera att det Write inte går att skriva dataströmmen genom att ange den. Med åtkomstparametrarna kan implementeraren skapa ett objekt vars implementering kan matcha den faktiska dataströmmen som exponeras.
Gäller för
UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
- Källa:
- UnmanagedMemoryStream.cs
Initierar en ny instans av UnmanagedMemoryStream klassen i en säker buffert med en angiven förskjutning, längd och filåtkomst.
public:
UnmanagedMemoryStream(System::Runtime::InteropServices::SafeBuffer ^ buffer, long offset, long length, System::IO::FileAccess access);
public UnmanagedMemoryStream(System.Runtime.InteropServices.SafeBuffer buffer, long offset, long length, System.IO.FileAccess access);
new System.IO.UnmanagedMemoryStream : System.Runtime.InteropServices.SafeBuffer * int64 * int64 * System.IO.FileAccess -> System.IO.UnmanagedMemoryStream
Public Sub New (buffer As SafeBuffer, offset As Long, length As Long, access As FileAccess)
Parametrar
- buffer
- SafeBuffer
Bufferten som ska innehålla den ohanterade minnesströmmen.
- offset
- Int64
Bytepositionen i bufferten där den ohanterade minnesströmmen ska startas.
- length
- Int64
Längden på den ohanterade minnesströmmen.
- access
- FileAccess
Läget för filåtkomst till den ohanterade minnesströmmen.