2010-09-06 6 views

Antwort

6

Sie können nicht, es ist eine abstrakte Klasse. Die einzige sichtbare konkrete Implementierung davon ist SafeMemoryMappedViewHandle, eine Hilfsklasse für die Klassen im Namespace System.IO.MemoryMappedFiles. Es verfügt über einen nicht zugreifbaren Konstruktor, da es nur durch die Installation ordnungsgemäß initialisiert werden kann, die Speicherabbilddateien funktioniert.

Der Anwendungsfall ist ein IntPtr, der nicht verwaltetem Speicher zugeordnet ist und von einem Handle verwaltet wird. Ziemlich selten in der Windows-API, MapViewOfFile oder GlobalAllocPtr zum Beispiel. Wenn Sie Ihre eigenen erstellen möchten, müssen Sie von SafeBuffer ableiten, damit Sie den Konstruktor aufrufen und beispielsweise AcquirePointer aufrufen können. Das meiste ist unsicher. Was sind Sie wirklich versuchen zu tun?

+0

Ich versuche, eine sehr große Datei (Bytestrom) von der Festplatte in einen UnmanagedMemoryStream zu lesen. Die Datei ist größer als die maximale Anzahl von Bytes, die ein Bytearray enthalten kann. – ManInMoon

+0

Nun, verwenden Sie die .NET 4.0-Unterstützung für Memory-Mapped-Dateien. Sinnlos, MemoryMappedViewStream neu zu erfinden. Es macht das Lesen der Datei nicht schneller. –

+0

Danke Hans. Ich habe das versucht, aber MemoryMappedFiles sind sehr langsam – ManInMoon

Verwandte Themen