Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / IO / UnmanagedMemoryStreamWrapper.cs / 1 / UnmanagedMemoryStreamWrapper.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*============================================================
**
** Class: UnmanagedMemoryStreamWrapper
**
** Purpose: Create a Memorystream over an UnmanagedMemoryStream
**
===========================================================*/
using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
namespace System.IO {
// Needed for backwards compatibility with V1.x usages of the
// ResourceManager, where a MemoryStream is now returned as an
// UnmanagedMemoryStream from ResourceReader.
internal sealed class UnmanagedMemoryStreamWrapper : MemoryStream {
private UnmanagedMemoryStream _unmanagedStream;
internal UnmanagedMemoryStreamWrapper(UnmanagedMemoryStream stream) {
_unmanagedStream = stream;
}
public override bool CanRead {
get { return _unmanagedStream.CanRead; }
}
public override bool CanSeek {
get { return _unmanagedStream.CanSeek; }
}
public override bool CanWrite {
get { return _unmanagedStream.CanWrite; }
}
protected override void Dispose(bool disposing)
{
try {
if (disposing)
_unmanagedStream.Close();
}
finally {
base.Dispose(disposing);
}
}
public override void Flush() {
_unmanagedStream.Flush();
}
public override byte[] GetBuffer() {
throw new UnauthorizedAccessException(Environment.GetResourceString("UnauthorizedAccess_MemStreamBuffer"));
}
public override int Capacity {
get {
return (int) _unmanagedStream.Capacity;
}
set {
throw new IOException(Environment.GetResourceString("IO.IO_FixedCapacity"));
}
}
public override long Length {
get {
return _unmanagedStream.Length;
}
}
public override long Position {
get {
return _unmanagedStream.Position;
}
set {
_unmanagedStream.Position = value;
}
}
public override int Read([In, Out] byte[] buffer, int offset, int count) {
return _unmanagedStream.Read(buffer, offset, count);
}
public override int ReadByte() {
return _unmanagedStream.ReadByte();
}
public override long Seek(long offset, SeekOrigin loc) {
return _unmanagedStream.Seek(offset, loc);
}
public unsafe override byte[] ToArray() {
if (!_unmanagedStream._isOpen) __Error.StreamIsClosed();
if (!_unmanagedStream.CanRead) __Error.ReadNotSupported();
byte[] buffer = new byte[_unmanagedStream.Length];
Buffer.memcpy(_unmanagedStream.Pointer, 0, buffer, 0, (int) _unmanagedStream.Length);
return buffer;
}
public override void Write(byte[] buffer, int offset, int count) {
_unmanagedStream.Write(buffer, offset, count);
}
public override void WriteByte(byte value) {
_unmanagedStream.WriteByte(value);
}
// Writes this MemoryStream to another stream.
public unsafe override void WriteTo(Stream stream) {
if (!_unmanagedStream._isOpen) __Error.StreamIsClosed();
if (!_unmanagedStream.CanRead) __Error.ReadNotSupported();
if (stream==null)
throw new ArgumentNullException("stream", Environment.GetResourceString("ArgumentNull_Stream"));
byte[] buffer = ToArray();
stream.Write(buffer, 0, buffer.Length);
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AttributeCollection.cs
- BitmapPalette.cs
- Profiler.cs
- Int32.cs
- SqlDataSourceParameterParser.cs
- XmlObjectSerializerReadContextComplex.cs
- ExtensionFile.cs
- UnsignedPublishLicense.cs
- Site.cs
- Certificate.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ControllableStoryboardAction.cs
- SafeFileMappingHandle.cs
- ZipPackage.cs
- DataGridLinkButton.cs
- SafeBitVector32.cs
- HtmlControl.cs
- ScriptIgnoreAttribute.cs
- ConnectionsZoneDesigner.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- AsymmetricSecurityProtocol.cs
- BaseParagraph.cs
- EntryPointNotFoundException.cs
- ProfilePropertySettings.cs
- XmlILConstructAnalyzer.cs
- GridViewColumnHeader.cs
- ProgressBarRenderer.cs
- Variant.cs
- SafeFileMapViewHandle.cs
- AppDomainShutdownMonitor.cs
- NavigationFailedEventArgs.cs
- CardSpaceException.cs
- InputLangChangeRequestEvent.cs
- HtmlShimManager.cs
- CheckBoxPopupAdapter.cs
- ClientSettingsSection.cs
- FieldBuilder.cs
- TypeGeneratedEventArgs.cs
- TransformerInfoCollection.cs
- IdentitySection.cs
- xml.cs
- LinkedResourceCollection.cs
- ProcessModule.cs
- GridViewColumn.cs
- isolationinterop.cs
- SqlServer2KCompatibilityCheck.cs
- NativeMethods.cs
- ipaddressinformationcollection.cs
- CredentialCache.cs
- TaskScheduler.cs
- InplaceBitmapMetadataWriter.cs
- AtomParser.cs
- TextMessageEncodingElement.cs
- AutoGeneratedField.cs
- MasterPage.cs
- SeverityFilter.cs
- StatusBarDrawItemEvent.cs
- ObjectCloneHelper.cs
- HealthMonitoringSectionHelper.cs
- AutomationPatternInfo.cs
- XPathPatternBuilder.cs
- SafeEventLogReadHandle.cs
- ZoneIdentityPermission.cs
- EventLogException.cs
- BrowserCapabilitiesCodeGenerator.cs
- FontInfo.cs
- TagMapInfo.cs
- GestureRecognizer.cs
- ColorContext.cs
- TableRow.cs
- IsolatedStoragePermission.cs
- StringAnimationBase.cs
- RemotingServices.cs
- FrameworkElementFactory.cs
- BufferCache.cs
- MetaDataInfo.cs
- ReliabilityContractAttribute.cs
- TargetException.cs
- CodeSnippetExpression.cs
- Padding.cs
- SqlDataSourceSelectingEventArgs.cs
- X509Certificate2Collection.cs
- CodeDomSerializerException.cs
- GridViewUpdatedEventArgs.cs
- ServiceCredentialsElement.cs
- objectresult_tresulttype.cs
- MessageHeaderDescription.cs
- IsolatedStorage.cs
- XmlSerializer.cs
- MergeFilterQuery.cs
- CapabilitiesAssignment.cs
- XmlExpressionDumper.cs
- ShaperBuffers.cs
- TypeSource.cs
- KeyPressEvent.cs
- ContainerUtilities.cs
- ClientConfigPaths.cs
- CompositeTypefaceMetrics.cs
- xmlformatgeneratorstatics.cs
- MultipartIdentifier.cs