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
- ProfilePropertyMetadata.cs
- AliasedSlot.cs
- columnmapfactory.cs
- Msec.cs
- DataView.cs
- DataGrid.cs
- JsonUriDataContract.cs
- ForeignConstraint.cs
- ControlEvent.cs
- HtmlWindow.cs
- GeometryCombineModeValidation.cs
- ListViewInsertionMark.cs
- NamespaceMapping.cs
- ProfilePropertySettingsCollection.cs
- JsonGlobals.cs
- CssTextWriter.cs
- GotoExpression.cs
- MaskedTextBox.cs
- IntranetCredentialPolicy.cs
- KeySpline.cs
- XhtmlConformanceSection.cs
- TransformGroup.cs
- ScriptingJsonSerializationSection.cs
- CatalogPartChrome.cs
- WebPartsPersonalization.cs
- VersionPair.cs
- DefaultTextStoreTextComposition.cs
- TripleDESCryptoServiceProvider.cs
- MessageCredentialType.cs
- TerminateDesigner.cs
- DataGridViewDesigner.cs
- HttpResponseInternalWrapper.cs
- SystemInformation.cs
- XmlHierarchicalDataSourceView.cs
- DbProviderFactories.cs
- XmlNamespaceManager.cs
- LinkedList.cs
- XmlAnyElementAttributes.cs
- Array.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- InheritanceContextHelper.cs
- JsonDataContract.cs
- ItemDragEvent.cs
- MachinePropertyVariants.cs
- QilPatternFactory.cs
- UpDownBase.cs
- NavigationExpr.cs
- CollectionDataContractAttribute.cs
- ReadOnlyNameValueCollection.cs
- CellCreator.cs
- TextSpan.cs
- ProxyWebPartManager.cs
- EllipseGeometry.cs
- OpenTypeLayoutCache.cs
- ListViewHitTestInfo.cs
- StylusPointPropertyId.cs
- _WebProxyDataBuilder.cs
- MessageQueue.cs
- PageBuildProvider.cs
- ProcessHost.cs
- MouseButton.cs
- VirtualDirectoryMapping.cs
- QilParameter.cs
- DetailsViewDeleteEventArgs.cs
- Expressions.cs
- ModuleBuilder.cs
- DBConnection.cs
- QueryExtender.cs
- Rights.cs
- StateBag.cs
- ImmutableAssemblyCacheEntry.cs
- IndependentAnimationStorage.cs
- InternalBufferManager.cs
- StrokeCollection.cs
- TableCell.cs
- ImageFormat.cs
- DesignSurface.cs
- CancelEventArgs.cs
- XsdDuration.cs
- CqlParserHelpers.cs
- DBParameter.cs
- VerbConverter.cs
- ListViewGroupConverter.cs
- RoleManagerSection.cs
- DuplicateWaitObjectException.cs
- ToolStripTemplateNode.cs
- OAVariantLib.cs
- AttributeCollection.cs
- MessageHeaderAttribute.cs
- ReadOnlyCollection.cs
- TextElementEditingBehaviorAttribute.cs
- QuaternionAnimation.cs
- URI.cs
- VerificationAttribute.cs
- SmiGettersStream.cs
- UrlRoutingHandler.cs
- ToolStripArrowRenderEventArgs.cs
- SystemResourceHost.cs
- WebServiceResponseDesigner.cs
- TableRowGroup.cs