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
- XmlAtomicValue.cs
- EditableTreeList.cs
- ContextMenuAutomationPeer.cs
- SoapEnumAttribute.cs
- FactoryGenerator.cs
- translator.cs
- ContextDataSourceContextData.cs
- UICuesEvent.cs
- CngKeyCreationParameters.cs
- XmlStreamStore.cs
- GeneralEndpointIdentity.cs
- QilTernary.cs
- NavigatorOutput.cs
- ReadOnlyNameValueCollection.cs
- XslCompiledTransform.cs
- StyleModeStack.cs
- SimpleColumnProvider.cs
- ProviderIncompatibleException.cs
- EncodingNLS.cs
- ApplicationServiceManager.cs
- Main.cs
- SrgsRulesCollection.cs
- ToolBarButtonClickEvent.cs
- WebConfigurationHost.cs
- EntityDataSourceDesigner.cs
- EventSetter.cs
- MimeObjectFactory.cs
- CodeSubDirectory.cs
- ModuleBuilder.cs
- CodeStatementCollection.cs
- Item.cs
- FixedFlowMap.cs
- RewritingPass.cs
- FastEncoder.cs
- ImageInfo.cs
- CheckBoxStandardAdapter.cs
- XamlParser.cs
- ChildChangedEventArgs.cs
- dbenumerator.cs
- MLangCodePageEncoding.cs
- SemanticResultValue.cs
- EntityType.cs
- ColumnBinding.cs
- ConstraintCollection.cs
- TextEditor.cs
- ByteStreamGeometryContext.cs
- ProxyWebPartManagerDesigner.cs
- CodeCompileUnit.cs
- ChunkedMemoryStream.cs
- OleServicesContext.cs
- IDQuery.cs
- BasicViewGenerator.cs
- VectorAnimationBase.cs
- RectangleGeometry.cs
- ExtendedPropertyCollection.cs
- ConditionalBranch.cs
- DataGridViewColumnHeaderCell.cs
- SendMailErrorEventArgs.cs
- EntityContainerAssociationSetEnd.cs
- Schema.cs
- FillErrorEventArgs.cs
- HttpResponseHeader.cs
- ResourcesChangeInfo.cs
- IIS7UserPrincipal.cs
- MailHeaderInfo.cs
- PolyLineSegment.cs
- ServiceOperation.cs
- RegistrySecurity.cs
- UICuesEvent.cs
- LocatorGroup.cs
- LineSegment.cs
- SqlDataSourceCommandEventArgs.cs
- RotationValidation.cs
- BindingMemberInfo.cs
- IOException.cs
- KnownTypes.cs
- ItemAutomationPeer.cs
- XmlObjectSerializerWriteContext.cs
- TraceSwitch.cs
- Error.cs
- TypeInitializationException.cs
- ButtonBaseAdapter.cs
- DataControlCommands.cs
- RelationshipEnd.cs
- _NestedSingleAsyncResult.cs
- FormsAuthenticationUser.cs
- SqlConnectionPoolGroupProviderInfo.cs
- DataGridViewCellCancelEventArgs.cs
- WebEventTraceProvider.cs
- XmlWrappingReader.cs
- ExtenderControl.cs
- SecurityUniqueId.cs
- InternalResources.cs
- SiteMapProvider.cs
- TableColumn.cs
- XmlLanguage.cs
- LabelInfo.cs
- StorageMappingFragment.cs
- SpellerStatusTable.cs
- WebPartConnectionsConfigureVerb.cs