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
- IsolatedStorage.cs
- OleDbRowUpdatedEvent.cs
- GridViewRowPresenter.cs
- ListArgumentProvider.cs
- QilTernary.cs
- dataobject.cs
- TreeNode.cs
- TextSelection.cs
- ToolZone.cs
- MimeMapping.cs
- CodeDomComponentSerializationService.cs
- PassportIdentity.cs
- EventNotify.cs
- SerializationHelper.cs
- FrameworkElement.cs
- PrintingPermission.cs
- TabPanel.cs
- _MultipleConnectAsync.cs
- NominalTypeEliminator.cs
- BuildProvidersCompiler.cs
- DataGridColumn.cs
- IntegerValidator.cs
- AuthorizationRule.cs
- Visual.cs
- PartialArray.cs
- ParentQuery.cs
- _TimerThread.cs
- DriveInfo.cs
- FormatControl.cs
- InkCanvasAutomationPeer.cs
- Header.cs
- ConsoleCancelEventArgs.cs
- complextypematerializer.cs
- TaskDesigner.cs
- ButtonBaseAutomationPeer.cs
- ReadOnlyHierarchicalDataSource.cs
- PartitionResolver.cs
- DynamicValidator.cs
- DisplayNameAttribute.cs
- InstanceNormalEvent.cs
- AccessibilityHelperForXpWin2k3.cs
- DesignerActionUIService.cs
- GenericAuthenticationEventArgs.cs
- StandardToolWindows.cs
- BindingsCollection.cs
- RuntimeWrappedException.cs
- MULTI_QI.cs
- DbConnectionInternal.cs
- ExpressionList.cs
- TerminateSequenceResponse.cs
- SplineQuaternionKeyFrame.cs
- HtmlFormWrapper.cs
- FlatButtonAppearance.cs
- BridgeDataRecord.cs
- IsolationInterop.cs
- DelayedRegex.cs
- DesignerOptionService.cs
- EditorAttribute.cs
- Rotation3D.cs
- Int32Converter.cs
- AppSettingsExpressionBuilder.cs
- WorkflowServiceHost.cs
- UInt64Storage.cs
- _emptywebproxy.cs
- Property.cs
- BitmapCodecInfo.cs
- FileClassifier.cs
- SectionInformation.cs
- NumericExpr.cs
- OracleParameter.cs
- Boolean.cs
- GradientStopCollection.cs
- DependencyPropertyChangedEventArgs.cs
- TCEAdapterGenerator.cs
- XmlTypeAttribute.cs
- BitConverter.cs
- SimpleWebHandlerParser.cs
- FileDialogCustomPlace.cs
- Monitor.cs
- QualifiedId.cs
- EditorPartChrome.cs
- ExtensionMethods.cs
- SyndicationDeserializer.cs
- TypeDescriptionProviderAttribute.cs
- BackgroundWorker.cs
- X509CertificateCollection.cs
- ToolStripItemTextRenderEventArgs.cs
- PermissionListSet.cs
- TableLayoutPanelCodeDomSerializer.cs
- AppDomain.cs
- CompareInfo.cs
- BindingWorker.cs
- SQLInt16.cs
- GridView.cs
- MaterialCollection.cs
- _SslState.cs
- PersonalizationState.cs
- HandleValueEditor.cs
- ParseHttpDate.cs
- AutoSizeToolBoxItem.cs