Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Reflection / Pointer.cs / 1 / Pointer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //////////////////////////////////////////////////////////////////////////////// // // This is a wrapper class for Pointers // // // // namespace System.Reflection { using System; using CultureInfo = System.Globalization.CultureInfo; using System.Runtime.Serialization; [CLSCompliant(false)] [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class Pointer: ISerializable { unsafe private void* _ptr; private Type _ptrType; private Pointer() {} private unsafe Pointer(SerializationInfo info, StreamingContext context) { _ptr = ((IntPtr)(info.GetValue("_ptr", typeof(IntPtr)))).ToPointer(); _ptrType = (Type)info.GetValue("_ptrType", typeof(Type)); } // This method will box an pointer. We save both the // value and the type so we can access it from the native code // during an Invoke. public static unsafe Object Box(void *ptr,Type type) { if (type == null) throw new ArgumentNullException("type"); if (!type.IsPointer) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr"); Pointer x = new Pointer(); x._ptr = ptr; x._ptrType = type; return x; } // Returned the stored pointer. public static unsafe void* Unbox(Object ptr) { if (!(ptr is Pointer)) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr"); return ((Pointer)ptr)._ptr; } internal Type GetPointerType() { return _ptrType; } internal unsafe Object GetPointerValue() { return (IntPtr)_ptr; } unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("_ptr", new IntPtr(_ptr)); info.AddValue("_ptrType", _ptrType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //////////////////////////////////////////////////////////////////////////////// // // This is a wrapper class for Pointers // // // // namespace System.Reflection { using System; using CultureInfo = System.Globalization.CultureInfo; using System.Runtime.Serialization; [CLSCompliant(false)] [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class Pointer: ISerializable { unsafe private void* _ptr; private Type _ptrType; private Pointer() {} private unsafe Pointer(SerializationInfo info, StreamingContext context) { _ptr = ((IntPtr)(info.GetValue("_ptr", typeof(IntPtr)))).ToPointer(); _ptrType = (Type)info.GetValue("_ptrType", typeof(Type)); } // This method will box an pointer. We save both the // value and the type so we can access it from the native code // during an Invoke. public static unsafe Object Box(void *ptr,Type type) { if (type == null) throw new ArgumentNullException("type"); if (!type.IsPointer) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr"); Pointer x = new Pointer(); x._ptr = ptr; x._ptrType = type; return x; } // Returned the stored pointer. public static unsafe void* Unbox(Object ptr) { if (!(ptr is Pointer)) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr"); return ((Pointer)ptr)._ptr; } internal Type GetPointerType() { return _ptrType; } internal unsafe Object GetPointerValue() { return (IntPtr)_ptr; } unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("_ptr", new IntPtr(_ptr)); info.AddValue("_ptrType", _ptrType); } } } // 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
- PageBuildProvider.cs
- InvalidFilterCriteriaException.cs
- DesignerTextViewAdapter.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- ISAPIWorkerRequest.cs
- Missing.cs
- EndpointAddressMessageFilterTable.cs
- GridEntryCollection.cs
- HtmlLink.cs
- WebBrowserBase.cs
- ReceiveSecurityHeaderEntry.cs
- SafeHandle.cs
- oledbmetadatacollectionnames.cs
- XmlAutoDetectWriter.cs
- WorkflowOwnershipException.cs
- WebPartZoneAutoFormat.cs
- LinearQuaternionKeyFrame.cs
- XmlBufferReader.cs
- ValueConversionAttribute.cs
- OverloadGroupAttribute.cs
- Wizard.cs
- ReadOnlyTernaryTree.cs
- ObjectDataSourceView.cs
- GridSplitter.cs
- DynamicControl.cs
- LocalizationComments.cs
- Profiler.cs
- Sentence.cs
- TextTreeUndo.cs
- HandleCollector.cs
- ContractMapping.cs
- TextRangeEdit.cs
- selecteditemcollection.cs
- HtmlControlPersistable.cs
- TextBox.cs
- DataKey.cs
- AspNetSynchronizationContext.cs
- EnumConverter.cs
- CellCreator.cs
- DataGridColumnHeader.cs
- XsltOutput.cs
- XmlWrappingReader.cs
- Logging.cs
- CharacterBuffer.cs
- Vector3DIndependentAnimationStorage.cs
- ProvidersHelper.cs
- Config.cs
- FixedPageStructure.cs
- XmlSchemaAttributeGroup.cs
- PartitionerStatic.cs
- TaskFileService.cs
- SQLBytes.cs
- QilIterator.cs
- AnimationLayer.cs
- ClientProxyGenerator.cs
- LinqDataView.cs
- HtmlTableRow.cs
- ForceCopyBuildProvider.cs
- ListViewContainer.cs
- XmlWellformedWriterHelpers.cs
- EventLogConfiguration.cs
- WebPartDisplayModeCancelEventArgs.cs
- HtmlForm.cs
- ProcessHostServerConfig.cs
- BamlTreeUpdater.cs
- ImageMetadata.cs
- TransactionFilter.cs
- WebException.cs
- ActivityBindForm.cs
- ObjectViewQueryResultData.cs
- NativeMethods.cs
- DefaultTraceListener.cs
- DataComponentNameHandler.cs
- DetailsViewUpdateEventArgs.cs
- LogReservationCollection.cs
- X509CertificateTrustedIssuerElementCollection.cs
- HostUtils.cs
- DataGridViewColumnCollection.cs
- RoutedPropertyChangedEventArgs.cs
- X509Certificate.cs
- DesignerActionUI.cs
- IsolatedStorageException.cs
- DLinqAssociationProvider.cs
- XsltContext.cs
- RubberbandSelector.cs
- FileDialog.cs
- ControlValuePropertyAttribute.cs
- SharedPerformanceCounter.cs
- DrawingVisual.cs
- PreservationFileReader.cs
- SqlDataSource.cs
- UnauthorizedAccessException.cs
- ReadOnlyCollectionBuilder.cs
- SrgsDocumentParser.cs
- ConnectionManagementElement.cs
- WorkflowRuntimeService.cs
- TemplateInstanceAttribute.cs
- basemetadatamappingvisitor.cs
- SecurityCapabilities.cs
- __ComObject.cs