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
- AnnouncementClient.cs
- QuaternionValueSerializer.cs
- ZipIOModeEnforcingStream.cs
- dtdvalidator.cs
- XmlSerializerSection.cs
- CollaborationHelperFunctions.cs
- DefaultPropertiesToSend.cs
- GlobalEventManager.cs
- TreeViewHitTestInfo.cs
- SoapReflectionImporter.cs
- XslCompiledTransform.cs
- HandlerMappingMemo.cs
- CodeDefaultValueExpression.cs
- RecognizeCompletedEventArgs.cs
- ColumnWidthChangingEvent.cs
- PersonalizationState.cs
- ConfigurationLockCollection.cs
- CodeIndexerExpression.cs
- SessionViewState.cs
- LabelEditEvent.cs
- MatrixTransform.cs
- XmlSequenceWriter.cs
- dataSvcMapFileLoader.cs
- printdlgexmarshaler.cs
- OutputCacheSettingsSection.cs
- Win32SafeHandles.cs
- ProjectionCamera.cs
- EntityKeyElement.cs
- SecurityHeaderTokenResolver.cs
- DataServiceStreamResponse.cs
- BridgeDataRecord.cs
- QfeChecker.cs
- SafeNativeMethods.cs
- CustomPopupPlacement.cs
- RSAPKCS1SignatureDeformatter.cs
- ServiceCredentials.cs
- XXXInfos.cs
- DES.cs
- Table.cs
- OpCopier.cs
- compensatingcollection.cs
- QueryCacheKey.cs
- TableColumnCollectionInternal.cs
- SqlDataSourceCommandParser.cs
- KnownTypeAttribute.cs
- SettingsAttributeDictionary.cs
- BaseParser.cs
- TypeSystem.cs
- AudioFormatConverter.cs
- SecurityException.cs
- FixedElement.cs
- GeneralTransform.cs
- KeyFrames.cs
- PathStreamGeometryContext.cs
- _AutoWebProxyScriptEngine.cs
- ConfigurationLocation.cs
- IOThreadTimer.cs
- SettingsBase.cs
- MimeTextImporter.cs
- TextEditorTables.cs
- RelationshipDetailsRow.cs
- TableParagraph.cs
- WebPartCatalogCloseVerb.cs
- DetailsView.cs
- DataGridViewCheckBoxColumn.cs
- IgnoreFileBuildProvider.cs
- KeyEvent.cs
- ServiceChannelManager.cs
- RemotingServices.cs
- SystemEvents.cs
- ArraySet.cs
- PropertyEmitter.cs
- CompositeActivityTypeDescriptor.cs
- HttpRawResponse.cs
- PieceNameHelper.cs
- Soap12ServerProtocol.cs
- WhiteSpaceTrimStringConverter.cs
- Brush.cs
- AjaxFrameworkAssemblyAttribute.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- LayoutInformation.cs
- FontEditor.cs
- ManagementClass.cs
- OdbcCommand.cs
- ImagingCache.cs
- SQLInt16Storage.cs
- Clock.cs
- SR.cs
- ExeContext.cs
- HttpRuntimeSection.cs
- Compiler.cs
- InlinedAggregationOperatorEnumerator.cs
- TableStyle.cs
- ScrollData.cs
- SqlBuilder.cs
- XmlAnyElementAttribute.cs
- X509CertificateValidator.cs
- EventProviderWriter.cs
- IApplicationTrustManager.cs
- Blend.cs