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
- RMEnrollmentPage2.cs
- NeedSkipTokenVisitor.cs
- CustomWebEventKey.cs
- ParagraphVisual.cs
- ProvidersHelper.cs
- WebPartMenu.cs
- BooleanProjectedSlot.cs
- InfoCardArgumentException.cs
- HTMLTextWriter.cs
- SystemWebCachingSectionGroup.cs
- ProfileManager.cs
- Latin1Encoding.cs
- SystemIPv4InterfaceProperties.cs
- EventBuilder.cs
- TriggerCollection.cs
- TemplatedControlDesigner.cs
- ReachSerializationCacheItems.cs
- ServicesSection.cs
- ExpandSegment.cs
- RewritingProcessor.cs
- FileReservationCollection.cs
- CommonXSendMessage.cs
- Rect.cs
- Gdiplus.cs
- PassportIdentity.cs
- HttpContextServiceHost.cs
- X509Certificate.cs
- TransformGroup.cs
- ComponentManagerBroker.cs
- KeyboardNavigation.cs
- AssemblyAttributes.cs
- UnsafeNativeMethods.cs
- TextBoxBase.cs
- LocationUpdates.cs
- OleDbDataReader.cs
- FormViewRow.cs
- ImagingCache.cs
- HttpCacheParams.cs
- LocalizedNameDescriptionPair.cs
- UnsafeNativeMethods.cs
- XmlComplianceUtil.cs
- Latin1Encoding.cs
- CategoryAttribute.cs
- UpdateException.cs
- TrailingSpaceComparer.cs
- TypeConverterHelper.cs
- ParagraphVisual.cs
- EventSinkActivity.cs
- JoinGraph.cs
- Visual3D.cs
- SmtpLoginAuthenticationModule.cs
- AdornerHitTestResult.cs
- Root.cs
- PanningMessageFilter.cs
- Comparer.cs
- PropertyConverter.cs
- ValidatorCollection.cs
- DesignerProperties.cs
- BuildResult.cs
- SeverityFilter.cs
- BuildDependencySet.cs
- DataGridViewCell.cs
- ComponentEvent.cs
- oledbmetadatacollectionnames.cs
- CalloutQueueItem.cs
- ProviderUtil.cs
- ValueQuery.cs
- ByteKeyFrameCollection.cs
- XmlChoiceIdentifierAttribute.cs
- ContainerActivationHelper.cs
- TypeConstant.cs
- FontStyles.cs
- Help.cs
- NavigationProperty.cs
- SqlCommandBuilder.cs
- CacheMemory.cs
- DataGridViewCellStateChangedEventArgs.cs
- CellParaClient.cs
- ModuleBuilderData.cs
- ProcessHostConfigUtils.cs
- TypographyProperties.cs
- TerminateSequence.cs
- InternalMappingException.cs
- ScrollViewer.cs
- OLEDB_Util.cs
- RSAOAEPKeyExchangeDeformatter.cs
- uribuilder.cs
- ScrollItemProviderWrapper.cs
- ObjectHandle.cs
- DataPagerFieldItem.cs
- ClientSection.cs
- ExpressionBindingCollection.cs
- Exceptions.cs
- TextBlock.cs
- TemplateContent.cs
- Rotation3D.cs
- LinqDataSourceView.cs
- RenamedEventArgs.cs
- FlowLayoutSettings.cs
- ADRoleFactoryConfiguration.cs