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
- sortedlist.cs
- IDispatchConstantAttribute.cs
- DeflateStream.cs
- EventLogPermissionEntry.cs
- TypeEnumerableViewSchema.cs
- ModelPerspective.cs
- ProxyWebPartManager.cs
- ValidationHelpers.cs
- XhtmlBasicLabelAdapter.cs
- TreeNodeBinding.cs
- BuildProviderAppliesToAttribute.cs
- FileVersion.cs
- DataTemplateSelector.cs
- BuildResult.cs
- SoapIncludeAttribute.cs
- ServiceParser.cs
- ConfigXmlDocument.cs
- PeerNameResolver.cs
- OdbcConnectionOpen.cs
- InstanceDataCollectionCollection.cs
- HttpAsyncResult.cs
- CodeDelegateInvokeExpression.cs
- CapabilitiesSection.cs
- MetadataItemEmitter.cs
- PropertyEntry.cs
- ColorConvertedBitmap.cs
- TypeUtils.cs
- ObfuscationAttribute.cs
- OuterGlowBitmapEffect.cs
- ResXDataNode.cs
- DataException.cs
- MSAAEventDispatcher.cs
- BCryptHashAlgorithm.cs
- PlainXmlDeserializer.cs
- MatrixTransform.cs
- WeakReference.cs
- DbCommandDefinition.cs
- DesignerActionListCollection.cs
- DecimalSumAggregationOperator.cs
- CodeTypeParameterCollection.cs
- EntityDataSourceView.cs
- SiteMapDataSourceView.cs
- BigInt.cs
- EventHandlersDesigner.cs
- TextEffectResolver.cs
- LassoHelper.cs
- PointHitTestResult.cs
- FormsAuthenticationCredentials.cs
- AttributeCollection.cs
- HtmlInputSubmit.cs
- Decoder.cs
- ArrayList.cs
- ToolboxItemAttribute.cs
- ConnectionStringsSection.cs
- HostProtectionException.cs
- Thread.cs
- ServiceSecurityAuditBehavior.cs
- DoubleAverageAggregationOperator.cs
- StrokeCollection2.cs
- ChildrenQuery.cs
- DiscoveryEndpointElement.cs
- PowerStatus.cs
- TextElement.cs
- SHA1.cs
- SetStateEventArgs.cs
- SerializationInfo.cs
- MatrixTransform.cs
- SecurityState.cs
- SchemaMerger.cs
- PageContentCollection.cs
- XmlNamespaceMapping.cs
- Point.cs
- StandardToolWindows.cs
- UnsafeNativeMethods.cs
- SimpleApplicationHost.cs
- TiffBitmapDecoder.cs
- SoapAttributeAttribute.cs
- ScalarOps.cs
- MetadataReference.cs
- MenuItemBindingCollection.cs
- EntityDataSourceColumn.cs
- SchemaNamespaceManager.cs
- PerspectiveCamera.cs
- DurableInstanceContextProvider.cs
- SqlConnectionFactory.cs
- UIElement.cs
- TabControlEvent.cs
- ExpressionLink.cs
- BuildProvidersCompiler.cs
- Style.cs
- XmlDictionaryReader.cs
- CodeExporter.cs
- Validator.cs
- HwndTarget.cs
- XmlQualifiedNameTest.cs
- VerbConverter.cs
- PropertyKey.cs
- EnvelopeVersion.cs
- Point3DCollection.cs
- SchemaCollectionPreprocessor.cs