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
- ConstructorBuilder.cs
- EmptyEnumerable.cs
- XPathNodeIterator.cs
- SystemWebExtensionsSectionGroup.cs
- DragAssistanceManager.cs
- OleDbDataAdapter.cs
- EntityViewGenerationAttribute.cs
- Tokenizer.cs
- NTAccount.cs
- IndicCharClassifier.cs
- GrammarBuilderPhrase.cs
- CollectionBuilder.cs
- QfeChecker.cs
- NamespaceInfo.cs
- Odbc32.cs
- WindowAutomationPeer.cs
- SmiEventSink_Default.cs
- _CacheStreams.cs
- DataStreamFromComStream.cs
- RectAnimationBase.cs
- WebMessageFormatHelper.cs
- BlockExpression.cs
- WrapPanel.cs
- XmlDataImplementation.cs
- SafeHandles.cs
- SystemSounds.cs
- LayoutEvent.cs
- NamespaceInfo.cs
- DesignerEventService.cs
- XmlSchemaComplexType.cs
- Simplifier.cs
- WebConfigurationManager.cs
- TraceListeners.cs
- PinnedBufferMemoryStream.cs
- SplitContainerDesigner.cs
- Aggregates.cs
- DesignSurfaceServiceContainer.cs
- SQLMoney.cs
- InstancePersistenceContext.cs
- UserControl.cs
- CodeChecksumPragma.cs
- DataViewSetting.cs
- DATA_BLOB.cs
- Literal.cs
- WebBrowserHelper.cs
- GeneratedContractType.cs
- ConnectionStringSettings.cs
- UnaryNode.cs
- FileDialog.cs
- SerializeAbsoluteContext.cs
- Int64AnimationUsingKeyFrames.cs
- ApplicationFileParser.cs
- serverconfig.cs
- WinInetCache.cs
- DataGridViewTopLeftHeaderCell.cs
- XmlReflectionImporter.cs
- Calendar.cs
- CSharpCodeProvider.cs
- ControlOperationBehavior.cs
- CombinedTcpChannel.cs
- ElementUtil.cs
- SafeLibraryHandle.cs
- PlacementWorkspace.cs
- ExecutionPropertyManager.cs
- SqlClientMetaDataCollectionNames.cs
- TextRunProperties.cs
- InvariantComparer.cs
- BypassElementCollection.cs
- WindowsSecurityTokenAuthenticator.cs
- Stackframe.cs
- ProxyElement.cs
- BinaryCommonClasses.cs
- FixedSOMTextRun.cs
- DrawingContextDrawingContextWalker.cs
- HtmlInputImage.cs
- SettingsPropertyWrongTypeException.cs
- WebHttpBinding.cs
- RangeValueProviderWrapper.cs
- XmlTypeAttribute.cs
- SamlAuthenticationStatement.cs
- ScriptReference.cs
- CommonProperties.cs
- SimpleBitVector32.cs
- BoolExpression.cs
- WebResourceUtil.cs
- BasicExpandProvider.cs
- SqlFlattener.cs
- CreateUserWizardAutoFormat.cs
- Solver.cs
- XmlResolver.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- FrugalList.cs
- SrgsElementList.cs
- LinkConverter.cs
- LoadedOrUnloadedOperation.cs
- Transaction.cs
- ArgumentNullException.cs
- ValidatorAttribute.cs
- Rights.cs
- DataGridViewCellValueEventArgs.cs