Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- PathSegmentCollection.cs
- TextEditorMouse.cs
- ResourceManagerWrapper.cs
- AggregateNode.cs
- processwaithandle.cs
- LateBoundBitmapDecoder.cs
- CollectionBase.cs
- XLinq.cs
- NavigationWindow.cs
- DBCSCodePageEncoding.cs
- ProcessModuleCollection.cs
- InputBindingCollection.cs
- EntityRecordInfo.cs
- IriParsingElement.cs
- OraclePermission.cs
- BroadcastEventHelper.cs
- ReadOnlyCollection.cs
- TypeDependencyAttribute.cs
- CompilerLocalReference.cs
- BufferedGraphicsManager.cs
- WsdlHelpGeneratorElement.cs
- XmlDataDocument.cs
- CaseStatement.cs
- SharedPerformanceCounter.cs
- InheritanceContextHelper.cs
- IResourceProvider.cs
- MailWebEventProvider.cs
- VideoDrawing.cs
- ComponentSerializationService.cs
- DetailsViewUpdateEventArgs.cs
- ControlBuilderAttribute.cs
- SchemaTypeEmitter.cs
- WorkItem.cs
- PerspectiveCamera.cs
- Mutex.cs
- OutputCacheModule.cs
- HitTestParameters3D.cs
- MaskedTextProvider.cs
- WebPartEditVerb.cs
- ChooseAction.cs
- StreamGeometry.cs
- Polygon.cs
- PixelFormats.cs
- AVElementHelper.cs
- BaseComponentEditor.cs
- regiisutil.cs
- XmlQuerySequence.cs
- DBDataPermission.cs
- ColorConverter.cs
- StringUtil.cs
- ToolStripOverflow.cs
- WarningException.cs
- ServicePoint.cs
- CustomValidator.cs
- MonitoringDescriptionAttribute.cs
- InvokeProviderWrapper.cs
- RequestCachingSection.cs
- SafePEFileHandle.cs
- TextTreeTextBlock.cs
- QueryReaderSettings.cs
- RoutingService.cs
- GeneralTransform3DTo2D.cs
- SerializationInfo.cs
- EventDescriptor.cs
- returneventsaver.cs
- LoginNameDesigner.cs
- ElementMarkupObject.cs
- StringComparer.cs
- MsmqIntegrationChannelFactory.cs
- DropTarget.cs
- SelfIssuedAuthAsymmetricKey.cs
- SchemaInfo.cs
- FontStretch.cs
- ReceiveActivity.cs
- DesignerSerializationOptionsAttribute.cs
- DataGridRowHeader.cs
- RectAnimationBase.cs
- OracleMonthSpan.cs
- DBDataPermission.cs
- AmbientLight.cs
- ConnectionPointCookie.cs
- ExpressionBindingCollection.cs
- DataStorage.cs
- ConversionValidationRule.cs
- ServiceCredentialsElement.cs
- AutomationAttributeInfo.cs
- BackoffTimeoutHelper.cs
- SafeWaitHandle.cs
- ProviderIncompatibleException.cs
- WinFormsSpinner.cs
- SizeFConverter.cs
- FormViewDeletedEventArgs.cs
- ContentPathSegment.cs
- TextElement.cs
- SqlBooleanizer.cs
- TableCell.cs
- VirtualDirectoryMapping.cs
- DataBindingsDialog.cs
- QueryAccessibilityHelpEvent.cs
- TextDpi.cs