Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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);
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectNotFoundException.cs
- CodeEventReferenceExpression.cs
- IndentedWriter.cs
- ProviderBase.cs
- SqlDataSourceStatusEventArgs.cs
- WebPartVerbsEventArgs.cs
- PackWebRequest.cs
- Oci.cs
- ObjectListField.cs
- DefaultBindingPropertyAttribute.cs
- PathNode.cs
- MapPathBasedVirtualPathProvider.cs
- Expr.cs
- ListViewTableCell.cs
- ExecutionContext.cs
- PrinterSettings.cs
- AudienceUriMode.cs
- EtwTrackingParticipant.cs
- ScriptServiceAttribute.cs
- ScaleTransform3D.cs
- _UncName.cs
- DispatchChannelSink.cs
- PropertyChangingEventArgs.cs
- FrameworkRichTextComposition.cs
- ScriptResourceAttribute.cs
- SerializerProvider.cs
- DynamicResourceExtensionConverter.cs
- AdapterDictionary.cs
- BamlBinaryWriter.cs
- PageCodeDomTreeGenerator.cs
- MaterialGroup.cs
- ReferenceSchema.cs
- InfoCardRSACryptoProvider.cs
- RelationshipManager.cs
- HScrollBar.cs
- PagesSection.cs
- Native.cs
- XmlSchemaSimpleContent.cs
- ElasticEase.cs
- SqlAliasesReferenced.cs
- ContainerUtilities.cs
- ScrollBar.cs
- SerializerWriterEventHandlers.cs
- LiteralTextParser.cs
- IconConverter.cs
- HtmlElementErrorEventArgs.cs
- DataGridToolTip.cs
- PolyLineSegment.cs
- DefaultWorkflowLoaderService.cs
- IPAddress.cs
- PanelDesigner.cs
- RoutedEvent.cs
- LambdaCompiler.Lambda.cs
- ClientBuildManager.cs
- SqlCacheDependency.cs
- SelectionBorderGlyph.cs
- RemotingAttributes.cs
- OdbcTransaction.cs
- TextTreeRootTextBlock.cs
- DesignerHierarchicalDataSourceView.cs
- NullableFloatSumAggregationOperator.cs
- StorageMappingFragment.cs
- MetadataFile.cs
- Point3DConverter.cs
- CompoundFileStorageReference.cs
- IsolatedStorageException.cs
- AssemblyBuilder.cs
- HostingEnvironmentWrapper.cs
- mactripleDES.cs
- CodeCastExpression.cs
- ClientViaElement.cs
- TextWriter.cs
- TraceRecord.cs
- PageOrientation.cs
- WebPartManagerInternals.cs
- ProxyWebPartManagerDesigner.cs
- ProcessInputEventArgs.cs
- _ConnectionGroup.cs
- GlobalDataBindingHandler.cs
- CollectionContainer.cs
- UniqueConstraint.cs
- CatalogPartCollection.cs
- ErrorLog.cs
- PresentationSource.cs
- StorageInfo.cs
- UnicodeEncoding.cs
- SafeNativeMethods.cs
- BrowserDefinition.cs
- ConnectionStringSettingsCollection.cs
- TreeNode.cs
- UriParserTemplates.cs
- Rect.cs
- ObjectDataSourceSelectingEventArgs.cs
- KoreanCalendar.cs
- XmlSchemaInferenceException.cs
- ContentElement.cs
- WsatProxy.cs
- HttpRequestCacheValidator.cs
- __ComObject.cs
- XmlAttributeProperties.cs