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
- GeometryHitTestParameters.cs
- DataControlImageButton.cs
- CharacterBuffer.cs
- DelegatingConfigHost.cs
- RestrictedTransactionalPackage.cs
- SqlDependency.cs
- dbenumerator.cs
- SpotLight.cs
- QueryCacheManager.cs
- HealthMonitoringSection.cs
- EnvelopedPkcs7.cs
- NamespaceQuery.cs
- Bidi.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ExpressionPrinter.cs
- CodeDelegateInvokeExpression.cs
- XmlDocumentFragment.cs
- AuthorizationSection.cs
- ToolStripSystemRenderer.cs
- DesignerForm.cs
- EncryptedPackageFilter.cs
- StylusPointProperties.cs
- WindowsListViewSubItem.cs
- ResourceSetExpression.cs
- Repeater.cs
- BindingEntityInfo.cs
- ElementFactory.cs
- DataSourceCache.cs
- SocketException.cs
- PackagingUtilities.cs
- Reference.cs
- FindProgressChangedEventArgs.cs
- HttpListenerTimeoutManager.cs
- OptionUsage.cs
- xml.cs
- X509CertificateRecipientClientCredential.cs
- ComplexBindingPropertiesAttribute.cs
- SqlBulkCopyColumnMappingCollection.cs
- SerializerDescriptor.cs
- ValidatorUtils.cs
- StaticExtension.cs
- PageThemeBuildProvider.cs
- WriterOutput.cs
- TextTreeUndoUnit.cs
- XmlMapping.cs
- MenuItemCollection.cs
- FileDialog_Vista_Interop.cs
- StateChangeEvent.cs
- DateTimeFormatInfo.cs
- Privilege.cs
- Table.cs
- InsufficientMemoryException.cs
- ImageSourceConverter.cs
- Timeline.cs
- Events.cs
- DetailsViewModeEventArgs.cs
- SizeAnimation.cs
- XmlObjectSerializerWriteContextComplex.cs
- CodeAttachEventStatement.cs
- CollectionChangeEventArgs.cs
- IDReferencePropertyAttribute.cs
- CommandTreeTypeHelper.cs
- Assert.cs
- DataGridViewDataErrorEventArgs.cs
- arclist.cs
- BitStack.cs
- XmlSerializerObjectSerializer.cs
- AccessibleObject.cs
- BamlMapTable.cs
- Object.cs
- PageContentAsyncResult.cs
- InputReportEventArgs.cs
- HyperLinkColumn.cs
- Socket.cs
- ActiveXSite.cs
- CatalogPartChrome.cs
- Condition.cs
- SelfIssuedTokenFactoryCredential.cs
- Command.cs
- ProviderException.cs
- _Semaphore.cs
- UriScheme.cs
- DataGridViewColumnConverter.cs
- PiiTraceSource.cs
- WebDisplayNameAttribute.cs
- ScrollBarAutomationPeer.cs
- BamlCollectionHolder.cs
- ImageMapEventArgs.cs
- RegistryExceptionHelper.cs
- RsaSecurityTokenAuthenticator.cs
- HtmlWindow.cs
- TimeIntervalCollection.cs
- WebHostedComPlusServiceHost.cs
- ListViewItemSelectionChangedEvent.cs
- EntityDataSourceReferenceGroup.cs
- GenericQueueSurrogate.cs
- IgnorePropertiesAttribute.cs
- DragEvent.cs
- SystemUnicastIPAddressInformation.cs
- VirtualPathUtility.cs