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
- linebase.cs
- BulletedListEventArgs.cs
- XmlAttribute.cs
- SecuritySessionSecurityTokenProvider.cs
- XmlSchemaExporter.cs
- ChtmlLinkAdapter.cs
- XamlWriter.cs
- VisualProxy.cs
- AbstractSvcMapFileLoader.cs
- Token.cs
- EtwTrace.cs
- LowerCaseStringConverter.cs
- XmlEncodedRawTextWriter.cs
- ObjectCloneHelper.cs
- PolyQuadraticBezierSegment.cs
- MexBindingElement.cs
- ThemeDictionaryExtension.cs
- EventSetter.cs
- TemplateKeyConverter.cs
- XmlQueryType.cs
- Binding.cs
- MetadataException.cs
- InvalidateEvent.cs
- filewebresponse.cs
- MemberJoinTreeNode.cs
- TextElementCollectionHelper.cs
- GetPageCompletedEventArgs.cs
- TemplateXamlTreeBuilder.cs
- ObjectDataSourceView.cs
- SafeNativeMethods.cs
- DatagridviewDisplayedBandsData.cs
- LayoutInformation.cs
- Serializer.cs
- BroadcastEventHelper.cs
- FormClosedEvent.cs
- SqlNotificationRequest.cs
- ComponentCache.cs
- MessageQueuePermissionEntryCollection.cs
- RepeatBehaviorConverter.cs
- XmlReflectionImporter.cs
- SendKeys.cs
- Menu.cs
- TimeoutException.cs
- DeploymentExceptionMapper.cs
- SystemIPv4InterfaceProperties.cs
- EventHandlersStore.cs
- MarkerProperties.cs
- MenuItemStyleCollection.cs
- TypeInitializationException.cs
- GraphicsPathIterator.cs
- SortDescriptionCollection.cs
- DataBindingHandlerAttribute.cs
- FrameDimension.cs
- Models.cs
- NavigationWindow.cs
- DataServiceConfiguration.cs
- ButtonField.cs
- WeakEventTable.cs
- ZipIOLocalFileDataDescriptor.cs
- PageRanges.cs
- HebrewCalendar.cs
- SimpleTypeResolver.cs
- DataContractSerializerServiceBehavior.cs
- FormViewActionList.cs
- CheckBoxList.cs
- DetailsViewRow.cs
- OutputCacheSection.cs
- UIServiceHelper.cs
- DefaultProxySection.cs
- DBSchemaRow.cs
- InternalCache.cs
- CapabilitiesAssignment.cs
- AdPostCacheSubstitution.cs
- DynamicDataManager.cs
- Freezable.cs
- HttpRequestCacheValidator.cs
- SmiMetaDataProperty.cs
- SqlTriggerAttribute.cs
- NullPackagingPolicy.cs
- ValueQuery.cs
- RemoteCryptoTokenProvider.cs
- AutoResizedEvent.cs
- DocumentScope.cs
- SqlNotificationEventArgs.cs
- InternalConfigSettingsFactory.cs
- PasswordTextNavigator.cs
- CardSpaceSelector.cs
- DrawingGroupDrawingContext.cs
- StorageConditionPropertyMapping.cs
- TCPClient.cs
- _HeaderInfo.cs
- SectionXmlInfo.cs
- CheckBoxRenderer.cs
- PenThreadPool.cs
- MemberHolder.cs
- regiisutil.cs
- EntityDesignerDataSourceView.cs
- Vector3dCollection.cs
- XmlExpressionDumper.cs
- CharacterMetrics.cs