Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / IO / PinnedBufferMemoryStream.cs / 1305376 / PinnedBufferMemoryStream.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: PinnedBufferMemoryStream ** **[....] ** ** ** Purpose: Pins a byte[], exposing it as an unmanaged memory ** stream. Used in ResourceReader for corner cases. ** ** ===========================================================*/ using System; using System.Runtime.InteropServices; using System.Diagnostics.Contracts; namespace System.IO { internal sealed unsafe class PinnedBufferMemoryStream : UnmanagedMemoryStream { private byte[] _array; private GCHandle _pinningHandle; // The new inheritance model requires a Critical default ctor since base (UnmanagedMemoryStream) has one [System.Security.SecurityCritical] private PinnedBufferMemoryStream():base(){} [System.Security.SecurityCritical] // auto-generated internal PinnedBufferMemoryStream(byte[] array) { Contract.Assert(array != null, "Array can't be null"); int len = array.Length; // Handle 0 length byte arrays specially. if (len == 0) { array = new byte[1]; len = 0; } _array = array; _pinningHandle = new GCHandle(array, GCHandleType.Pinned); // Now the byte[] is pinned for the lifetime of this instance. // But I also need to get a pointer to that block of memory... fixed(byte* ptr = _array) Initialize(ptr, len, len, FileAccess.Read, true); } ~PinnedBufferMemoryStream() { Dispose(false); } [System.Security.SecuritySafeCritical] // auto-generated protected override void Dispose(bool disposing) { if (_isOpen) { _pinningHandle.Free(); _isOpen = false; } #if _DEBUG // To help track down lifetime issues on checked builds, force //a full GC here. if (disposing) { GC.Collect(); GC.WaitForPendingFinalizers(); } #endif base.Dispose(disposing); } } } // 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
- Wildcard.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- XPathNode.cs
- PropertyGridEditorPart.cs
- WebPartUtil.cs
- XPathBuilder.cs
- SingleAnimation.cs
- BinaryNegotiation.cs
- CustomCategoryAttribute.cs
- xmlformatgeneratorstatics.cs
- DataGridViewTopRowAccessibleObject.cs
- InternalResources.cs
- ApplicationSecurityManager.cs
- FixedDocumentPaginator.cs
- XmlLoader.cs
- Certificate.cs
- UrlParameterReader.cs
- UnmanagedMarshal.cs
- XmlElementAttribute.cs
- DrawingAttributeSerializer.cs
- SafeEventLogWriteHandle.cs
- TransactedBatchingBehavior.cs
- QilVisitor.cs
- Point3DCollection.cs
- Rotation3D.cs
- LayoutEngine.cs
- OdbcException.cs
- BamlResourceContent.cs
- UpdateInfo.cs
- DiagnosticsElement.cs
- EntityFrameworkVersions.cs
- NamespaceMapping.cs
- While.cs
- DesignRelationCollection.cs
- ComplexBindingPropertiesAttribute.cs
- ToolBar.cs
- WebPartDeleteVerb.cs
- XPathBinder.cs
- HandleRef.cs
- FileNotFoundException.cs
- SystemTcpStatistics.cs
- PageAsyncTaskManager.cs
- HostingEnvironmentWrapper.cs
- XmlSchemaComplexContent.cs
- WindowShowOrOpenTracker.cs
- MimeXmlReflector.cs
- Triplet.cs
- SelectionListDesigner.cs
- DynamicValueConverter.cs
- DisplayNameAttribute.cs
- parserscommon.cs
- AdCreatedEventArgs.cs
- LocalBuilder.cs
- PropertyTab.cs
- AttributeXamlType.cs
- XmlSchemaAnnotated.cs
- CssStyleCollection.cs
- WebPartVerbCollection.cs
- XmlDataDocument.cs
- OutOfProcStateClientManager.cs
- XmlText.cs
- ApplicationId.cs
- XmlObjectSerializerReadContextComplexJson.cs
- SelectionEditor.cs
- ZoneIdentityPermission.cs
- MaskedTextBoxDesigner.cs
- FixedSOMSemanticBox.cs
- PropertyItemInternal.cs
- Stopwatch.cs
- SqlFileStream.cs
- MiniParameterInfo.cs
- UnknownBitmapDecoder.cs
- HierarchicalDataBoundControl.cs
- CqlGenerator.cs
- ApplicationActivator.cs
- DesignerCategoryAttribute.cs
- WbemProvider.cs
- TraceHandler.cs
- XmlTextAttribute.cs
- Journaling.cs
- DrawingVisualDrawingContext.cs
- HttpGetServerProtocol.cs
- DataGridCell.cs
- IgnoreSection.cs
- StringWriter.cs
- OpenFileDialog.cs
- StreamUpdate.cs
- DataFormats.cs
- HtmlInputReset.cs
- VisualBasicSettingsHandler.cs
- PresentationTraceSources.cs
- ScrollChrome.cs
- ScrollViewerAutomationPeer.cs
- FilterElement.cs
- CssClassPropertyAttribute.cs
- ContentIterators.cs
- HtmlTextArea.cs
- AvTrace.cs
- XmlObjectSerializerWriteContextComplex.cs
- DesignSurfaceEvent.cs