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
- NamespaceDecl.cs
- RuleSettingsCollection.cs
- TraceUtility.cs
- ChannelOptions.cs
- CommunicationObjectFaultedException.cs
- FixedSOMTableCell.cs
- DesignerVerbCollection.cs
- BoundPropertyEntry.cs
- X509Chain.cs
- AspNetSynchronizationContext.cs
- Accessors.cs
- NamespaceList.cs
- FormatConvertedBitmap.cs
- ColorMap.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ButtonBaseAdapter.cs
- HttpModuleAction.cs
- Geometry3D.cs
- Odbc32.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- DataGridCellEditEndingEventArgs.cs
- EventData.cs
- ByeMessageCD1.cs
- GenerateTemporaryTargetAssembly.cs
- DateTimeOffsetConverter.cs
- SelectedDatesCollection.cs
- WorkingDirectoryEditor.cs
- DataIdProcessor.cs
- XmlTextAttribute.cs
- URLAttribute.cs
- HandledEventArgs.cs
- DbParameterHelper.cs
- TreeView.cs
- WpfKnownTypeInvoker.cs
- RegexWriter.cs
- _AuthenticationState.cs
- ConfigurationSectionHelper.cs
- CodeTypeParameterCollection.cs
- ExecutionTracker.cs
- OracleDateTime.cs
- DictionaryBase.cs
- keycontainerpermission.cs
- Equal.cs
- StringAttributeCollection.cs
- Facet.cs
- WeakRefEnumerator.cs
- MouseGesture.cs
- AppDomainFactory.cs
- CellIdBoolean.cs
- DataBoundControl.cs
- TextTreeUndo.cs
- RunWorkerCompletedEventArgs.cs
- MemberPath.cs
- TreeNode.cs
- ConnectorEditor.cs
- ToolStrip.cs
- MultiSelectRootGridEntry.cs
- CryptoApi.cs
- XmlValueConverter.cs
- DependencyObjectProvider.cs
- ProcessModule.cs
- SmtpFailedRecipientException.cs
- SystemParameters.cs
- DataGridToolTip.cs
- RenderCapability.cs
- ButtonField.cs
- DetailsView.cs
- WebPartEditorOkVerb.cs
- CqlParser.cs
- AsyncOperationContext.cs
- UserMapPath.cs
- TraceLevelStore.cs
- LicenseProviderAttribute.cs
- TableHeaderCell.cs
- GPPOINTF.cs
- DataGridPageChangedEventArgs.cs
- ListViewEditEventArgs.cs
- LightweightCodeGenerator.cs
- ClientProxyGenerator.cs
- Quad.cs
- HwndStylusInputProvider.cs
- Process.cs
- Block.cs
- DataGridViewEditingControlShowingEventArgs.cs
- StretchValidation.cs
- ImageClickEventArgs.cs
- CompareValidator.cs
- IDispatchConstantAttribute.cs
- ContextQuery.cs
- SafeUserTokenHandle.cs
- ResponseBodyWriter.cs
- Range.cs
- SEHException.cs
- OperatingSystem.cs
- StoreContentChangedEventArgs.cs
- DispatcherObject.cs
- Label.cs
- RowParagraph.cs
- XmlFormatWriterGenerator.cs
- PrivacyNoticeBindingElement.cs