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
- RenderData.cs
- SpeakCompletedEventArgs.cs
- AdPostCacheSubstitution.cs
- ChameleonKey.cs
- WebPartDisplayModeCancelEventArgs.cs
- DataControlButton.cs
- SystemWebExtensionsSectionGroup.cs
- Classification.cs
- HttpListenerException.cs
- XmlSchemaExternal.cs
- graph.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- DefaultValueMapping.cs
- ConcurrentQueue.cs
- EncoderParameter.cs
- DetectEofStream.cs
- DesignerOptionService.cs
- WorkflowInstance.cs
- DuplicateMessageDetector.cs
- ResourceSetExpression.cs
- TypeConverter.cs
- ManifestBasedResourceGroveler.cs
- PartialCachingAttribute.cs
- ExitEventArgs.cs
- ImportCatalogPart.cs
- SQLInt32Storage.cs
- SystemWebCachingSectionGroup.cs
- SerializationInfo.cs
- ObjectStateEntry.cs
- TypeGenericEnumerableViewSchema.cs
- ReverseInheritProperty.cs
- SignedXml.cs
- Range.cs
- Visual3D.cs
- DataGridLinkButton.cs
- GraphicsPathIterator.cs
- WebPartsSection.cs
- DefaultValueTypeConverter.cs
- Bezier.cs
- KnownColorTable.cs
- DataPagerFieldCommandEventArgs.cs
- CollectionViewGroupRoot.cs
- SystemWebSectionGroup.cs
- SqlException.cs
- OdbcConnectionString.cs
- DataServiceHostWrapper.cs
- ManagedIStream.cs
- Calendar.cs
- CodePrimitiveExpression.cs
- FixedTextBuilder.cs
- COSERVERINFO.cs
- FileLevelControlBuilderAttribute.cs
- XmlTextEncoder.cs
- EditorPartCollection.cs
- XmlSchemaImport.cs
- SqlDataSourceWizardForm.cs
- CryptoStream.cs
- MD5CryptoServiceProvider.cs
- RightsManagementInformation.cs
- DispatchChannelSink.cs
- DataRowView.cs
- Formatter.cs
- FontCollection.cs
- MembershipSection.cs
- ServerIdentity.cs
- DateTimeFormat.cs
- ColorConverter.cs
- ImageSource.cs
- MarkerProperties.cs
- CodeLinePragma.cs
- RegionData.cs
- ExceptionNotification.cs
- ClassicBorderDecorator.cs
- cookiecontainer.cs
- DbBuffer.cs
- ExtensionSurface.cs
- LogicalExpressionEditor.cs
- ALinqExpressionVisitor.cs
- StatusBarPanelClickEvent.cs
- TimelineCollection.cs
- UDPClient.cs
- ExpressionWriter.cs
- SerializerProvider.cs
- EllipseGeometry.cs
- FlowDocument.cs
- WriteFileContext.cs
- _ProxyChain.cs
- HTTPRemotingHandler.cs
- EntityUtil.cs
- CheckBoxList.cs
- Stream.cs
- DataGridColumnHeadersPresenter.cs
- RadioButtonAutomationPeer.cs
- ExpressionParser.cs
- FixedDocumentPaginator.cs
- CqlIdentifiers.cs
- DesignerEditorPartChrome.cs
- PromptStyle.cs
- ServiceTimeoutsElement.cs
- AlphaSortedEnumConverter.cs