Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// 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);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- JsonMessageEncoderFactory.cs
- CompositeFontFamily.cs
- CriticalFinalizerObject.cs
- SkipStoryboardToFill.cs
- GotoExpression.cs
- XmlSchemaSimpleTypeList.cs
- DynamicActivityProperty.cs
- PageBuildProvider.cs
- ValidationEventArgs.cs
- CodeArrayIndexerExpression.cs
- ToolStripActionList.cs
- Panel.cs
- AdCreatedEventArgs.cs
- MetadataItem.cs
- WebMessageEncoderFactory.cs
- DataListItemEventArgs.cs
- mansign.cs
- ObjectView.cs
- HtmlImage.cs
- DrawingCollection.cs
- BuildProvidersCompiler.cs
- StickyNoteContentControl.cs
- BuildResult.cs
- MouseBinding.cs
- HitTestDrawingContextWalker.cs
- UnauthorizedAccessException.cs
- XmlArrayAttribute.cs
- CorruptStoreException.cs
- DependencyPropertyKind.cs
- TemplateParser.cs
- IChannel.cs
- IdentifierCollection.cs
- WebRequest.cs
- OdbcErrorCollection.cs
- Keywords.cs
- CalendarAutomationPeer.cs
- MouseActionConverter.cs
- CompositeFontInfo.cs
- NotSupportedException.cs
- ObjectStateManagerMetadata.cs
- LayoutEngine.cs
- ColorAnimationUsingKeyFrames.cs
- WorkflowMarkupSerializationManager.cs
- SqlCommand.cs
- MLangCodePageEncoding.cs
- TransformerInfoCollection.cs
- PackagingUtilities.cs
- SortKey.cs
- ComponentDispatcherThread.cs
- DatagridviewDisplayedBandsData.cs
- IfAction.cs
- TextFormatterHost.cs
- FlowPosition.cs
- EmissiveMaterial.cs
- SmtpDigestAuthenticationModule.cs
- WindowsClientElement.cs
- NavigationHelper.cs
- PartialClassGenerationTask.cs
- OracleDataAdapter.cs
- ConnectionPoolRegistry.cs
- Label.cs
- MSAAWinEventWrap.cs
- SubtreeProcessor.cs
- ProvidePropertyAttribute.cs
- StoreConnection.cs
- ObjectDataProvider.cs
- Package.cs
- XPathNavigatorKeyComparer.cs
- AnimatedTypeHelpers.cs
- CacheForPrimitiveTypes.cs
- BaseServiceProvider.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ParseHttpDate.cs
- CodeExpressionCollection.cs
- TreeNodeCollection.cs
- NumericUpDownAccelerationCollection.cs
- XmlTextWriter.cs
- FontFamilyIdentifier.cs
- XPathMultyIterator.cs
- SafeLocalAllocation.cs
- StateMachineHelpers.cs
- RootBrowserWindowAutomationPeer.cs
- DataBindEngine.cs
- XamlHostingSectionGroup.cs
- LinkLabel.cs
- DataGridViewSelectedColumnCollection.cs
- PersonalizationEntry.cs
- RegexCode.cs
- SystemUdpStatistics.cs
- SystemIPInterfaceProperties.cs
- LineMetrics.cs
- XmlTextReaderImpl.cs
- GcHandle.cs
- CompareValidator.cs
- HtmlElementCollection.cs
- NameScopePropertyAttribute.cs
- ByteKeyFrameCollection.cs
- GlyphInfoList.cs
- MemoryMappedFile.cs
- CharUnicodeInfo.cs