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
- ScriptRegistrationManager.cs
- SingleConverter.cs
- ListViewPagedDataSource.cs
- SecurityKeyType.cs
- PrintPageEvent.cs
- OdbcException.cs
- XmlQueryType.cs
- Util.cs
- DBAsyncResult.cs
- BatchWriter.cs
- OlePropertyStructs.cs
- DuplicateMessageDetector.cs
- mda.cs
- WebPartVerbsEventArgs.cs
- Typography.cs
- LineSegment.cs
- DataGrid.cs
- XappLauncher.cs
- AddInActivator.cs
- CompilationLock.cs
- TextProperties.cs
- WebPartsPersonalizationAuthorization.cs
- TextPatternIdentifiers.cs
- SqlNode.cs
- CollectionConverter.cs
- SQLBytesStorage.cs
- WindowsListViewGroupSubsetLink.cs
- MimeBasePart.cs
- UiaCoreApi.cs
- SetIterators.cs
- DesignerDataTableBase.cs
- WriteLine.cs
- SafeUserTokenHandle.cs
- EntityDataSourceColumn.cs
- UnsafeNativeMethodsTablet.cs
- ReadOnlyHierarchicalDataSource.cs
- ListViewCommandEventArgs.cs
- XmlLanguage.cs
- PeerObject.cs
- TemplateContentLoader.cs
- PrimaryKeyTypeConverter.cs
- PropertyGridView.cs
- CodePageEncoding.cs
- DefaultHttpHandler.cs
- DependencyPropertyConverter.cs
- XmlSerializerAssemblyAttribute.cs
- WebPartRestoreVerb.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- SqlUdtInfo.cs
- HtmlMeta.cs
- SoapSchemaImporter.cs
- MethodBuilder.cs
- JapaneseCalendar.cs
- dsa.cs
- MailWriter.cs
- Transform.cs
- EventlogProvider.cs
- ReadOnlyKeyedCollection.cs
- ProfileModule.cs
- HtmlImage.cs
- CustomAssemblyResolver.cs
- AuthenticationManager.cs
- ZipIOFileItemStream.cs
- Message.cs
- XhtmlBasicImageAdapter.cs
- ConfigXmlCDataSection.cs
- NavigationPropertyEmitter.cs
- ConnectionConsumerAttribute.cs
- BuildProvidersCompiler.cs
- XamlSerializer.cs
- Stack.cs
- Helper.cs
- DockPanel.cs
- GridViewRowCollection.cs
- OraclePermission.cs
- Error.cs
- DesignerEditorPartChrome.cs
- ManagementObjectCollection.cs
- MergeFilterQuery.cs
- WebPartDeleteVerb.cs
- ReverseComparer.cs
- EdmComplexPropertyAttribute.cs
- MsmqInputChannelListener.cs
- LocatorGroup.cs
- UIElementIsland.cs
- EqualityComparer.cs
- CellTreeNode.cs
- PerfCounters.cs
- MultiByteCodec.cs
- RecordsAffectedEventArgs.cs
- SymbolResolver.cs
- PresentationSource.cs
- ClientRolePrincipal.cs
- SharedStream.cs
- NeutralResourcesLanguageAttribute.cs
- Evidence.cs
- ReceiveActivity.cs
- ToolTipAutomationPeer.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- TabRenderer.cs