Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- AnnotationObservableCollection.cs
- QueryableDataSourceEditData.cs
- MethodCallExpression.cs
- EdgeProfileValidation.cs
- ResolveMatchesMessage11.cs
- SoapMessage.cs
- Keyboard.cs
- TextPatternIdentifiers.cs
- FormsAuthenticationEventArgs.cs
- StyleCollectionEditor.cs
- BitVector32.cs
- SynchronousChannel.cs
- WebConfigurationHostFileChange.cs
- Base64Stream.cs
- IncrementalHitTester.cs
- OperationPickerDialog.designer.cs
- MetadataWorkspace.cs
- SystemResourceHost.cs
- DrawingVisual.cs
- XmlSchemaSimpleContentRestriction.cs
- AppDomainManager.cs
- _SSPIWrapper.cs
- TreeViewEvent.cs
- SqlBooleanizer.cs
- CustomValidator.cs
- EncoderReplacementFallback.cs
- OrderedDictionary.cs
- UrlRoutingModule.cs
- RequestQueryProcessor.cs
- XpsSerializationException.cs
- InputManager.cs
- MemoryRecordBuffer.cs
- DesignTimeVisibleAttribute.cs
- SingleTagSectionHandler.cs
- DataFormats.cs
- DropSourceBehavior.cs
- AutomationAttributeInfo.cs
- DropShadowEffect.cs
- LogEntrySerializer.cs
- InputScope.cs
- PeerInvitationResponse.cs
- XhtmlTextWriter.cs
- XmlSchemaExternal.cs
- TimelineClockCollection.cs
- ReaderContextStackData.cs
- ByteConverter.cs
- TdsParserSafeHandles.cs
- MenuItemStyleCollection.cs
- Debug.cs
- Region.cs
- XmlCollation.cs
- _ListenerAsyncResult.cs
- MetaChildrenColumn.cs
- NameGenerator.cs
- SelectionProcessor.cs
- StrongNamePublicKeyBlob.cs
- DateTimePicker.cs
- TextChange.cs
- FacetValueContainer.cs
- ScriptControl.cs
- CharacterMetricsDictionary.cs
- WebPartZone.cs
- CreateParams.cs
- OutputScopeManager.cs
- XmlTextReaderImpl.cs
- HttpClientProtocol.cs
- CqlLexerHelpers.cs
- DrawingGroup.cs
- ModulesEntry.cs
- UITypeEditors.cs
- PackUriHelper.cs
- TimeSpanMinutesConverter.cs
- Crc32.cs
- X509SecurityToken.cs
- _SingleItemRequestCache.cs
- RegisteredArrayDeclaration.cs
- _AutoWebProxyScriptWrapper.cs
- ToolStripContentPanel.cs
- CheckBox.cs
- WinEventHandler.cs
- ConnectionStringsExpressionBuilder.cs
- CodeIdentifier.cs
- NavigationProperty.cs
- MutexSecurity.cs
- ResponseBodyWriter.cs
- PresentationAppDomainManager.cs
- ISAPIWorkerRequest.cs
- Int32CollectionConverter.cs
- Base64Decoder.cs
- Pair.cs
- VerificationException.cs
- VisualStyleTypesAndProperties.cs
- IconHelper.cs
- MemberAccessException.cs
- HijriCalendar.cs
- GB18030Encoding.cs
- BitmapEffectCollection.cs
- OrderByBuilder.cs
- ReferenceEqualityComparer.cs
- BackgroundWorker.cs