Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- WindowsRichEdit.cs
- XmlWhitespace.cs
- TimerElapsedEvenArgs.cs
- ColorDialog.cs
- BatchWriter.cs
- ListViewSelectEventArgs.cs
- FocusManager.cs
- AssociationSetMetadata.cs
- DesignerActionMethodItem.cs
- DocumentPageTextView.cs
- XmlChildEnumerator.cs
- SortedList.cs
- EventLogEntry.cs
- ObjectDataSourceSelectingEventArgs.cs
- SharedPerformanceCounter.cs
- DataListCommandEventArgs.cs
- RefreshPropertiesAttribute.cs
- CssStyleCollection.cs
- BooleanSwitch.cs
- HandlerFactoryCache.cs
- PolyQuadraticBezierSegment.cs
- securitycriticaldata.cs
- TreeNodeStyle.cs
- SqlRowUpdatingEvent.cs
- DesignerCommandAdapter.cs
- CardSpaceShim.cs
- Transform.cs
- DataServices.cs
- EventLogPermissionAttribute.cs
- PageThemeParser.cs
- TextComposition.cs
- DiscoveryClientProtocol.cs
- StaticResourceExtension.cs
- RedirectionProxy.cs
- HttpAsyncResult.cs
- unsafenativemethodstextservices.cs
- ErrorFormatter.cs
- ProtectedConfigurationSection.cs
- HostSecurityManager.cs
- TextBreakpoint.cs
- PackageRelationshipCollection.cs
- SharedUtils.cs
- XmlValueConverter.cs
- SystemIPGlobalStatistics.cs
- RelationalExpressions.cs
- ResolveNameEventArgs.cs
- DocumentReference.cs
- PerfCounters.cs
- SystemDropShadowChrome.cs
- RoleGroup.cs
- KnownBoxes.cs
- Point3D.cs
- Setter.cs
- DrawingState.cs
- PortCache.cs
- SignedXml.cs
- ToolStripContentPanel.cs
- SQLMembershipProvider.cs
- GiveFeedbackEvent.cs
- HMAC.cs
- XmlEnumAttribute.cs
- SqlGatherProducedAliases.cs
- PositiveTimeSpanValidator.cs
- ContextMenuStripActionList.cs
- IDReferencePropertyAttribute.cs
- ProtectedUri.cs
- NetStream.cs
- ReceiveActivityValidator.cs
- SaveCardRequest.cs
- ErrorEventArgs.cs
- ResponseStream.cs
- ClientApiGenerator.cs
- Win32Native.cs
- ThemeableAttribute.cs
- RSAPKCS1SignatureDeformatter.cs
- CultureInfo.cs
- LinqDataSourceStatusEventArgs.cs
- TextServicesHost.cs
- GuidelineCollection.cs
- ExpressionLexer.cs
- TextPointer.cs
- MemberExpressionHelper.cs
- ViewLoader.cs
- XmlToDatasetMap.cs
- ResponseStream.cs
- RoleBoolean.cs
- CustomAttributeFormatException.cs
- SqlCacheDependencyDatabase.cs
- DataServiceHost.cs
- AssemblyInfo.cs
- FontSourceCollection.cs
- SharedPersonalizationStateInfo.cs
- ClientConfigurationSystem.cs
- HierarchicalDataBoundControlAdapter.cs
- WindowsListViewItemCheckBox.cs
- EditorAttribute.cs
- CompiledRegexRunnerFactory.cs
- AnnotationResourceChangedEventArgs.cs
- XamlWrappingReader.cs
- StringWriter.cs