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
- DataGridItem.cs
- GenerateTemporaryTargetAssembly.cs
- DrawingVisual.cs
- LazyLoadBehavior.cs
- SchemaEntity.cs
- AdjustableArrowCap.cs
- InputLanguageSource.cs
- ExtractedStateEntry.cs
- ToolStripOverflowButton.cs
- EntityViewContainer.cs
- MonitorWrapper.cs
- RoutedCommand.cs
- DisplayMemberTemplateSelector.cs
- XmlNullResolver.cs
- Typography.cs
- ChooseAction.cs
- ExpressionBindingCollection.cs
- EncoderParameters.cs
- Debug.cs
- MailAddress.cs
- HighlightVisual.cs
- ControlParameter.cs
- HeaderCollection.cs
- TreeViewEvent.cs
- CommonProperties.cs
- DoubleLink.cs
- StringConverter.cs
- LinqDataSourceView.cs
- NamespaceList.cs
- TextSchema.cs
- MembershipValidatePasswordEventArgs.cs
- SQLRoleProvider.cs
- SafeFileHandle.cs
- VisualStateManager.cs
- ExtendLockAsyncResult.cs
- Models.cs
- DescendantQuery.cs
- AppliedDeviceFiltersEditor.cs
- SHA1Managed.cs
- wgx_exports.cs
- WebHttpBinding.cs
- ConfigurationManagerInternalFactory.cs
- ListenerElementsCollection.cs
- SchemaCollectionCompiler.cs
- MenuAutomationPeer.cs
- GenericParameterDataContract.cs
- FieldDescriptor.cs
- SqlParameter.cs
- CodeConstructor.cs
- UnicodeEncoding.cs
- TextDecorationCollectionConverter.cs
- DesignerImageAdapter.cs
- SoapClientProtocol.cs
- LockCookie.cs
- ParserStreamGeometryContext.cs
- UserControlParser.cs
- HtmlAnchor.cs
- ContentPlaceHolder.cs
- PartialList.cs
- ByteAnimationBase.cs
- XmlHierarchyData.cs
- UserControlDesigner.cs
- GestureRecognizer.cs
- OperationInfo.cs
- CompositeScriptReferenceEventArgs.cs
- PointF.cs
- CustomError.cs
- WmlObjectListAdapter.cs
- TextTreeRootNode.cs
- RtfFormatStack.cs
- SizeKeyFrameCollection.cs
- Visitors.cs
- ProfilePropertyNameValidator.cs
- GenericWebPart.cs
- SignatureHelper.cs
- HostingEnvironmentException.cs
- TraceContext.cs
- PageThemeBuildProvider.cs
- RemotingServices.cs
- Highlights.cs
- SafeHandles.cs
- Scene3D.cs
- BrowserDefinition.cs
- SmiEventSink.cs
- BindableTemplateBuilder.cs
- ExpressionVisitorHelpers.cs
- URLIdentityPermission.cs
- NullRuntimeConfig.cs
- TextSelectionProcessor.cs
- DomainConstraint.cs
- StringUtil.cs
- CodeSubDirectoriesCollection.cs
- XPathParser.cs
- ScriptControl.cs
- DataGridViewCellStyleConverter.cs
- ParentControlDesigner.cs
- ThreadInterruptedException.cs
- MailMessageEventArgs.cs
- PersonalizablePropertyEntry.cs
- ConfigXmlDocument.cs