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
- WebPartsPersonalization.cs
- FilterFactory.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- GC.cs
- ProjectionCamera.cs
- RuleSettingsCollection.cs
- DataConnectionHelper.cs
- TargetParameterCountException.cs
- ObjectContextServiceProvider.cs
- ShutDownListener.cs
- MarkupProperty.cs
- Range.cs
- MonikerHelper.cs
- XslException.cs
- ChildTable.cs
- DesignerSerializerAttribute.cs
- XsltLoader.cs
- ReachSerializerAsync.cs
- AutoSizeToolBoxItem.cs
- HTMLTagNameToTypeMapper.cs
- MulticastIPAddressInformationCollection.cs
- RepeatButtonAutomationPeer.cs
- WindowsListViewScroll.cs
- SRGSCompiler.cs
- FormViewUpdatedEventArgs.cs
- CommandSet.cs
- TrackPointCollection.cs
- localization.cs
- FramingChannels.cs
- Item.cs
- DictionaryEntry.cs
- SingleAnimationUsingKeyFrames.cs
- SuppressMessageAttribute.cs
- DispatcherExceptionFilterEventArgs.cs
- TransactionContextManager.cs
- LinearGradientBrush.cs
- Blend.cs
- StateBag.cs
- EdmFunction.cs
- Calendar.cs
- FixedSOMImage.cs
- NullableBoolConverter.cs
- GridViewUpdateEventArgs.cs
- TextEncodedRawTextWriter.cs
- XmlIgnoreAttribute.cs
- RuleCache.cs
- QuotaThrottle.cs
- XmlDataLoader.cs
- Point3DCollection.cs
- TreeViewImageIndexConverter.cs
- ColorAnimationBase.cs
- DataGridPagerStyle.cs
- LinqDataSourceStatusEventArgs.cs
- Profiler.cs
- DoubleIndependentAnimationStorage.cs
- DesignerDataStoredProcedure.cs
- CustomErrorCollection.cs
- MimeXmlReflector.cs
- SharedConnectionInfo.cs
- AddInEnvironment.cs
- ContextProperty.cs
- InternalConfigRoot.cs
- ErrorTableItemStyle.cs
- SingleResultAttribute.cs
- _CacheStreams.cs
- Array.cs
- PartialArray.cs
- SelectorItemAutomationPeer.cs
- CodeValidator.cs
- IpcServerChannel.cs
- FrameworkObject.cs
- LinkedList.cs
- Int16Converter.cs
- TextMarkerSource.cs
- XMLUtil.cs
- pingexception.cs
- TextProviderWrapper.cs
- EmptyQuery.cs
- RowVisual.cs
- WhiteSpaceTrimStringConverter.cs
- MultidimensionalArrayItemReference.cs
- _ConnectionGroup.cs
- dbenumerator.cs
- EntityStoreSchemaGenerator.cs
- TripleDES.cs
- COM2IPerPropertyBrowsingHandler.cs
- AuthenticationService.cs
- CharUnicodeInfo.cs
- StateItem.cs
- ValidatedControlConverter.cs
- SqlInternalConnectionTds.cs
- UnsafeNativeMethodsPenimc.cs
- QueryResult.cs
- ILGenerator.cs
- ClusterRegistryConfigurationProvider.cs
- DataGridViewHitTestInfo.cs
- CharEnumerator.cs
- CryptoKeySecurity.cs
- SQLMoneyStorage.cs
- BitArray.cs