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
- HttpServerChannel.cs
- EntityDataSourceView.cs
- ToolstripProfessionalRenderer.cs
- IndependentAnimationStorage.cs
- WebPartExportVerb.cs
- BaseHashHelper.cs
- TextRunProperties.cs
- WindowsScrollBar.cs
- EntityDataSourceMemberPath.cs
- TableParagraph.cs
- Missing.cs
- SourceFilter.cs
- CommandValueSerializer.cs
- BuildProvider.cs
- AttachInfo.cs
- SymbolTable.cs
- RenderData.cs
- XPathNodeList.cs
- ToolTipService.cs
- PathStreamGeometryContext.cs
- CapiSymmetricAlgorithm.cs
- WebBrowserDocumentCompletedEventHandler.cs
- TokenFactoryBase.cs
- ContextStaticAttribute.cs
- FastEncoderStatics.cs
- ScrollChrome.cs
- PackWebResponse.cs
- PrintDialog.cs
- IisTraceListener.cs
- SupportsEventValidationAttribute.cs
- TableSectionStyle.cs
- VisualBrush.cs
- SoapTypeAttribute.cs
- ProfilePropertySettings.cs
- MaxMessageSizeStream.cs
- ComponentDispatcher.cs
- List.cs
- AsyncPostBackTrigger.cs
- validationstate.cs
- FormatConvertedBitmap.cs
- Rect.cs
- HiddenFieldDesigner.cs
- RightsManagementEncryptionTransform.cs
- Positioning.cs
- ItemsPanelTemplate.cs
- SystemWebCachingSectionGroup.cs
- DesignTimeHTMLTextWriter.cs
- SslStream.cs
- ResourceAttributes.cs
- Base64Encoding.cs
- HwndHostAutomationPeer.cs
- Base64Stream.cs
- CodeConstructor.cs
- MachineKeySection.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- QueryCacheKey.cs
- ExceptionHelpers.cs
- ChangesetResponse.cs
- Win32Native.cs
- XamlToRtfParser.cs
- AsymmetricKeyExchangeDeformatter.cs
- CheckPair.cs
- FormatConvertedBitmap.cs
- XPathDocument.cs
- RuntimeResourceSet.cs
- InitializationEventAttribute.cs
- EnvironmentPermission.cs
- BasicViewGenerator.cs
- HtmlWindow.cs
- EmptyEnumerator.cs
- SelectionItemProviderWrapper.cs
- WebRequestModuleElement.cs
- Odbc32.cs
- DirectionalAction.cs
- dbdatarecord.cs
- VariantWrapper.cs
- SubpageParaClient.cs
- BitmapEffectGroup.cs
- VectorAnimationUsingKeyFrames.cs
- DrawToolTipEventArgs.cs
- DbProviderConfigurationHandler.cs
- CultureSpecificStringDictionary.cs
- SocketAddress.cs
- TextPointerBase.cs
- StickyNoteAnnotations.cs
- Win32PrintDialog.cs
- PathFigureCollectionConverter.cs
- DataGridViewImageColumn.cs
- MarginsConverter.cs
- ApplicationServiceHelper.cs
- ObjectAnimationBase.cs
- TypeProvider.cs
- UrlAuthorizationModule.cs
- SqlCommand.cs
- ChangePasswordAutoFormat.cs
- RecordManager.cs
- MetadataPropertyCollection.cs
- WebPartExportVerb.cs
- Certificate.cs
- _CookieModule.cs