Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Reflection / Pointer.cs / 1305376 / 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; using System.Diagnostics.Contracts; [CLSCompliant(false)] [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class Pointer: ISerializable { unsafe private void* _ptr; private RuntimeType _ptrType; private Pointer() {} [System.Security.SecurityCritical] // auto-generated private unsafe Pointer(SerializationInfo info, StreamingContext context) { _ptr = ((IntPtr)(info.GetValue("_ptr", typeof(IntPtr)))).ToPointer(); _ptrType = (RuntimeType)info.GetValue("_ptrType", typeof(RuntimeType)); } // 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. [System.Security.SecurityCritical] // auto-generated 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"); Contract.EndContractBlock(); RuntimeType rt = type as RuntimeType; if (rt == null) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"), "ptr"); Pointer x = new Pointer(); x._ptr = ptr; x._ptrType = rt; return x; } // Returned the stored pointer. [System.Security.SecurityCritical] // auto-generated public static unsafe void* Unbox(Object ptr) { if (!(ptr is Pointer)) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr"); return ((Pointer)ptr)._ptr; } internal RuntimeType GetPointerType() { return _ptrType; } [System.Security.SecurityCritical] // auto-generated internal unsafe Object GetPointerValue() { return (IntPtr)_ptr; } #if FEATURE_SERIALIZATION [System.Security.SecurityCritical] unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("_ptr", new IntPtr(_ptr)); info.AddValue("_ptrType", _ptrType); } #endif } } // 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; using System.Diagnostics.Contracts; [CLSCompliant(false)] [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class Pointer: ISerializable { unsafe private void* _ptr; private RuntimeType _ptrType; private Pointer() {} [System.Security.SecurityCritical] // auto-generated private unsafe Pointer(SerializationInfo info, StreamingContext context) { _ptr = ((IntPtr)(info.GetValue("_ptr", typeof(IntPtr)))).ToPointer(); _ptrType = (RuntimeType)info.GetValue("_ptrType", typeof(RuntimeType)); } // 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. [System.Security.SecurityCritical] // auto-generated 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"); Contract.EndContractBlock(); RuntimeType rt = type as RuntimeType; if (rt == null) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"), "ptr"); Pointer x = new Pointer(); x._ptr = ptr; x._ptrType = rt; return x; } // Returned the stored pointer. [System.Security.SecurityCritical] // auto-generated public static unsafe void* Unbox(Object ptr) { if (!(ptr is Pointer)) throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr"); return ((Pointer)ptr)._ptr; } internal RuntimeType GetPointerType() { return _ptrType; } [System.Security.SecurityCritical] // auto-generated internal unsafe Object GetPointerValue() { return (IntPtr)_ptr; } #if FEATURE_SERIALIZATION [System.Security.SecurityCritical] unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("_ptr", new IntPtr(_ptr)); info.AddValue("_ptrType", _ptrType); } #endif } } // 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
- FormsAuthenticationTicket.cs
- OperationDescriptionCollection.cs
- dataSvcMapFileLoader.cs
- XXXOnTypeBuilderInstantiation.cs
- PropertySegmentSerializer.cs
- WebControl.cs
- FormViewDeletedEventArgs.cs
- TextAdaptor.cs
- JsonStringDataContract.cs
- UntrustedRecipientException.cs
- ToggleButtonAutomationPeer.cs
- StatusBarItem.cs
- CardSpacePolicyElement.cs
- Span.cs
- ToolStripContextMenu.cs
- XmlComplianceUtil.cs
- CorrelationKey.cs
- DependencyPropertyChangedEventArgs.cs
- HtmlInputFile.cs
- ImageConverter.cs
- BackgroundFormatInfo.cs
- ViewStateModeByIdAttribute.cs
- safesecurityhelperavalon.cs
- AttributeProviderAttribute.cs
- DeviceSpecific.cs
- InvokeHandlers.cs
- PerformanceCounterLib.cs
- SafePEFileHandle.cs
- EpmSyndicationContentDeSerializer.cs
- FileEnumerator.cs
- basecomparevalidator.cs
- ResolveCriteria.cs
- InvariantComparer.cs
- ControlHelper.cs
- PerformanceCounter.cs
- DependencyObject.cs
- FilteredDataSetHelper.cs
- RenderOptions.cs
- KerberosRequestorSecurityToken.cs
- Win32.cs
- DynamicMethod.cs
- ExtenderProviderService.cs
- EntityCommandExecutionException.cs
- NonDualMessageSecurityOverHttpElement.cs
- RSAOAEPKeyExchangeFormatter.cs
- DtrList.cs
- HttpApplicationFactory.cs
- XmlWrappingReader.cs
- XmlText.cs
- TransportReplyChannelAcceptor.cs
- TextEditorThreadLocalStore.cs
- WebControlParameterProxy.cs
- ColumnResult.cs
- MulticastDelegate.cs
- DataServiceQueryOfT.cs
- UnsafeNativeMethodsCLR.cs
- ToolZone.cs
- PermissionSet.cs
- FontCacheLogic.cs
- ArrangedElement.cs
- PriorityBinding.cs
- BaseTreeIterator.cs
- TreeIterator.cs
- XmlUrlEditor.cs
- MulticastOption.cs
- ScrollableControl.cs
- HashHelpers.cs
- SSmlParser.cs
- ProfileManager.cs
- RelationshipConverter.cs
- HttpResponseBase.cs
- CacheChildrenQuery.cs
- HWStack.cs
- OrCondition.cs
- NumericExpr.cs
- EntityUtil.cs
- PrinterSettings.cs
- StreamGeometry.cs
- LicenseProviderAttribute.cs
- TextTreeNode.cs
- ReflectionPermission.cs
- DataBinder.cs
- EdgeProfileValidation.cs
- OdbcPermission.cs
- AsyncOperationManager.cs
- BuildManagerHost.cs
- base64Transforms.cs
- HtmlWindow.cs
- SchemaAttDef.cs
- StyleCollection.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- UpdatePanel.cs
- WebReferencesBuildProvider.cs
- AVElementHelper.cs
- MenuItemCollection.cs
- XmlDomTextWriter.cs
- ScriptResourceMapping.cs
- RelationshipConverter.cs
- ResXDataNode.cs
- SettingsPropertyCollection.cs