Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- SequentialUshortCollection.cs
- RsaKeyIdentifierClause.cs
- RenderDataDrawingContext.cs
- WindowsListBox.cs
- FileNotFoundException.cs
- NavigateEvent.cs
- BitmapFrameEncode.cs
- FixedDocumentPaginator.cs
- RemoteWebConfigurationHostStream.cs
- TableAdapterManagerGenerator.cs
- DeleteStoreRequest.cs
- ArrayWithOffset.cs
- QueryCacheEntry.cs
- MenuTracker.cs
- TypeUtils.cs
- InternalConfigConfigurationFactory.cs
- ApplicationDirectoryMembershipCondition.cs
- SessionStateContainer.cs
- ControlCachePolicy.cs
- DynamicControl.cs
- InternalPermissions.cs
- SimplePropertyEntry.cs
- CompModSwitches.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ContractCodeDomInfo.cs
- DataGridViewCellCollection.cs
- DbException.cs
- SelectionProviderWrapper.cs
- WpfWebRequestHelper.cs
- PrimarySelectionAdorner.cs
- PingOptions.cs
- TextBoxLine.cs
- DataGridViewSelectedCellCollection.cs
- BitmapSizeOptions.cs
- DbConnectionPool.cs
- ConnectionConsumerAttribute.cs
- StrongNameMembershipCondition.cs
- Hash.cs
- Message.cs
- PresentationSource.cs
- InternalMappingException.cs
- ToolStripGrip.cs
- ByteStack.cs
- ReferentialConstraint.cs
- DataObject.cs
- _ProxyChain.cs
- RoleManagerSection.cs
- PipeException.cs
- DiscreteKeyFrames.cs
- HttpCachePolicyElement.cs
- DrawingBrush.cs
- ActivityFunc.cs
- VisualState.cs
- Stack.cs
- TimeoutException.cs
- CaseStatement.cs
- CatalogPart.cs
- DataSourceHelper.cs
- MenuAdapter.cs
- WsdlInspector.cs
- ExtensionElement.cs
- NumberFormatter.cs
- odbcmetadatacolumnnames.cs
- Cursor.cs
- PartialCachingAttribute.cs
- shaperfactoryquerycachekey.cs
- TableRowCollection.cs
- StorageMappingFragment.cs
- _ListenerResponseStream.cs
- Error.cs
- TemplateBindingExpression.cs
- PartialCachingControl.cs
- ColorTranslator.cs
- ReversePositionQuery.cs
- AssociationSet.cs
- lengthconverter.cs
- ResourceDescriptionAttribute.cs
- FixedPage.cs
- CodeDelegateInvokeExpression.cs
- SizeConverter.cs
- SuppressMergeCheckAttribute.cs
- HMACSHA384.cs
- LoginUtil.cs
- DeviceOverridableAttribute.cs
- SafeRegistryHandle.cs
- FileNotFoundException.cs
- BitmapInitialize.cs
- XmlSchemaInfo.cs
- CatalogPart.cs
- TableHeaderCell.cs
- counter.cs
- XMLSchema.cs
- _HeaderInfo.cs
- EventDescriptorCollection.cs
- PackageRelationshipSelector.cs
- XamlVector3DCollectionSerializer.cs
- Decoder.cs
- Maps.cs
- DataGridViewAdvancedBorderStyle.cs
- MetadataItem_Static.cs