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
- SecurityToken.cs
- TypeDescriptor.cs
- RenderOptions.cs
- AddInAdapter.cs
- NetworkCredential.cs
- ReadOnlyMetadataCollection.cs
- FormViewDeletedEventArgs.cs
- VisualStyleRenderer.cs
- SerializationBinder.cs
- ManifestResourceInfo.cs
- ControlCollection.cs
- ContentPresenter.cs
- TemplatePropertyEntry.cs
- DeclarativeCatalogPartDesigner.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- EntityContainerEmitter.cs
- PageScaling.cs
- DataObject.cs
- SqlDataAdapter.cs
- FolderBrowserDialog.cs
- Int32RectConverter.cs
- Point3DIndependentAnimationStorage.cs
- DetailsView.cs
- BasePropertyDescriptor.cs
- UnwrappedTypesXmlSerializerManager.cs
- HostedTransportConfigurationManager.cs
- KeyedHashAlgorithm.cs
- DbTransaction.cs
- RSAPKCS1SignatureFormatter.cs
- TableItemProviderWrapper.cs
- ValidatorCompatibilityHelper.cs
- TypeDelegator.cs
- ServerIdentity.cs
- TabItem.cs
- CodeAttributeArgument.cs
- XmlCharCheckingWriter.cs
- FileSecurity.cs
- EntityDesignerUtils.cs
- FixedDocumentSequencePaginator.cs
- CharacterBuffer.cs
- UniqueSet.cs
- ToolStripGrip.cs
- AbsoluteQuery.cs
- VariantWrapper.cs
- DecoratedNameAttribute.cs
- PackageStore.cs
- CollectionsUtil.cs
- MDIControlStrip.cs
- HttpRequest.cs
- ColorMatrix.cs
- XmlReflectionMember.cs
- Byte.cs
- GroupBox.cs
- SerializationInfo.cs
- TypeLibConverter.cs
- IndependentAnimationStorage.cs
- ByteStack.cs
- InlineUIContainer.cs
- MsmqIntegrationProcessProtocolHandler.cs
- AddInEnvironment.cs
- FileUpload.cs
- DependencyProperty.cs
- SiteMapNodeCollection.cs
- Matrix.cs
- QilList.cs
- EventBuilder.cs
- PatternMatcher.cs
- SafeProcessHandle.cs
- OleDbInfoMessageEvent.cs
- WebHeaderCollection.cs
- OrderedDictionary.cs
- AuthorizationRuleCollection.cs
- UnsafeNativeMethods.cs
- UnsafeNativeMethods.cs
- RequiredAttributeAttribute.cs
- VisualStyleInformation.cs
- SafeReversePInvokeHandle.cs
- ColumnMapCopier.cs
- SqlSupersetValidator.cs
- PropertyRecord.cs
- InputManager.cs
- VariableAction.cs
- ConfigurationValues.cs
- FixedSOMTextRun.cs
- TdsParserStaticMethods.cs
- URLString.cs
- ModelItemImpl.cs
- ParseHttpDate.cs
- MouseActionConverter.cs
- FontStretchConverter.cs
- DocumentSequenceHighlightLayer.cs
- ConnectionStringSettingsCollection.cs
- _HTTPDateParse.cs
- ReceiveCompletedEventArgs.cs
- KeyValueSerializer.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- AssemblyBuilder.cs
- ValueSerializerAttribute.cs
- PowerStatus.cs
- DesigntimeLicenseContextSerializer.cs