Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- Trace.cs
- MethodCallExpression.cs
- HeaderedItemsControl.cs
- DrawingBrush.cs
- TemplatedWizardStep.cs
- DataGridViewRowConverter.cs
- DocumentOrderQuery.cs
- DomNameTable.cs
- AppModelKnownContentFactory.cs
- Transform.cs
- XmlSchemaSimpleContentExtension.cs
- SingleConverter.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ListViewTableCell.cs
- EmptyQuery.cs
- SystemEvents.cs
- DataSysAttribute.cs
- TextEditorTyping.cs
- SqlIdentifier.cs
- BitmapData.cs
- DataTableNameHandler.cs
- SoapEnumAttribute.cs
- WindowHideOrCloseTracker.cs
- NativeRecognizer.cs
- PackWebRequestFactory.cs
- RecordBuilder.cs
- ByteAnimation.cs
- MouseOverProperty.cs
- SparseMemoryStream.cs
- ComboBoxRenderer.cs
- SerializerDescriptor.cs
- ServiceContractDetailViewControl.cs
- ImageIndexConverter.cs
- ActivityXRefConverter.cs
- ValidationErrorCollection.cs
- UserControl.cs
- Journal.cs
- DataGridViewControlCollection.cs
- FixUp.cs
- GacUtil.cs
- XmlHierarchicalEnumerable.cs
- Vector3DKeyFrameCollection.cs
- RectIndependentAnimationStorage.cs
- InputScopeConverter.cs
- TypeForwardedToAttribute.cs
- Certificate.cs
- TemplateKeyConverter.cs
- BindingsCollection.cs
- ArgumentsParser.cs
- CodePageEncoding.cs
- TextClipboardData.cs
- ManagementObject.cs
- CoTaskMemSafeHandle.cs
- DataGridViewColumn.cs
- GPStream.cs
- Literal.cs
- StandardCommands.cs
- EmissiveMaterial.cs
- RangeContentEnumerator.cs
- followingquery.cs
- ProcessHostServerConfig.cs
- FixedSOMTable.cs
- SmtpNegotiateAuthenticationModule.cs
- UnknownWrapper.cs
- SqlOuterApplyReducer.cs
- FtpRequestCacheValidator.cs
- ContainerFilterService.cs
- DataObjectMethodAttribute.cs
- MenuRenderer.cs
- PartitionerStatic.cs
- SimpleBitVector32.cs
- CapabilitiesSection.cs
- HttpRawResponse.cs
- SqlProcedureAttribute.cs
- DocobjHost.cs
- RefType.cs
- CompensatableTransactionScopeActivityDesigner.cs
- Delegate.cs
- UnaryOperationBinder.cs
- WebPartVerb.cs
- CodeAccessSecurityEngine.cs
- ConstructorExpr.cs
- FacetValueContainer.cs
- WebPartUtil.cs
- ObjectDataSourceMethodEventArgs.cs
- GAC.cs
- HelpInfo.cs
- DbConnectionClosed.cs
- GroupPartitionExpr.cs
- CqlIdentifiers.cs
- DataContractSet.cs
- EncodingTable.cs
- FreeFormDragDropManager.cs
- WpfSharedXamlSchemaContext.cs
- counter.cs
- CacheRequest.cs
- SafeCancelMibChangeNotify.cs
- StringInfo.cs
- UpdateException.cs
- QueryOperationResponseOfT.cs