Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DetailsViewRow.cs
- XPathPatternBuilder.cs
- SortedSetDebugView.cs
- StringStorage.cs
- ZipIOExtraFieldElement.cs
- Object.cs
- SoapConverter.cs
- DetailsViewUpdatedEventArgs.cs
- StopStoryboard.cs
- AnalyzedTree.cs
- Delegate.cs
- RegistryConfigurationProvider.cs
- Renderer.cs
- GroupBox.cs
- InstanceOwner.cs
- FamilyTypefaceCollection.cs
- ResourcePermissionBase.cs
- ListControlStringCollectionEditor.cs
- SerializerDescriptor.cs
- TextSimpleMarkerProperties.cs
- KeyConverter.cs
- ThrowHelper.cs
- PagesSection.cs
- NativeMethods.cs
- AssemblyAttributesGoHere.cs
- WorkflowDebuggerSteppingAttribute.cs
- StatementContext.cs
- ProtocolsConfigurationHandler.cs
- XmlBinaryReader.cs
- BitmapEffectState.cs
- HtmlControlPersistable.cs
- DataGridHeaderBorder.cs
- Span.cs
- SlotInfo.cs
- BitmapVisualManager.cs
- DBParameter.cs
- HttpConfigurationSystem.cs
- GrowingArray.cs
- Metadata.cs
- IteratorDescriptor.cs
- ImpersonationContext.cs
- MetafileHeaderWmf.cs
- SchemaInfo.cs
- SqlNode.cs
- Substitution.cs
- ObjectListDesigner.cs
- DesignTimeXamlWriter.cs
- XmlWrappingReader.cs
- AssociationSetEnd.cs
- EllipticalNodeOperations.cs
- GridViewItemAutomationPeer.cs
- PeerNeighborManager.cs
- PopOutPanel.cs
- Suspend.cs
- ColorContextHelper.cs
- TaskExtensions.cs
- RepeaterItemEventArgs.cs
- ImageButton.cs
- HeaderUtility.cs
- RequestCache.cs
- Padding.cs
- OleDbStruct.cs
- PlatformCulture.cs
- KeyInfo.cs
- sqlser.cs
- XmlILOptimizerVisitor.cs
- ComponentChangingEvent.cs
- UserPreferenceChangedEventArgs.cs
- SmtpDigestAuthenticationModule.cs
- SmiRequestExecutor.cs
- ListBoxItem.cs
- PostBackTrigger.cs
- BindingSource.cs
- AnnotationHighlightLayer.cs
- AppSettingsExpressionBuilder.cs
- DelegateSerializationHolder.cs
- SByte.cs
- PlaceHolder.cs
- List.cs
- SQLGuidStorage.cs
- HtmlControl.cs
- AutomationElementIdentifiers.cs
- InternalRelationshipCollection.cs
- WebEncodingValidator.cs
- XsltContext.cs
- XmlImplementation.cs
- SeverityFilter.cs
- MergePropertyDescriptor.cs
- ImageList.cs
- GridViewEditEventArgs.cs
- SqlDataReader.cs
- HtmlContainerControl.cs
- StatusBar.cs
- RecordsAffectedEventArgs.cs
- DocumentCollection.cs
- NetTcpSectionData.cs
- WebPartMovingEventArgs.cs
- MembershipValidatePasswordEventArgs.cs
- CommunicationException.cs
- ScrollViewerAutomationPeer.cs