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
- EventHandlersStore.cs
- UnsafeNetInfoNativeMethods.cs
- IChannel.cs
- DataGridAutoFormat.cs
- PolicyValidationException.cs
- SqlDataSourceRefreshSchemaForm.cs
- ObservableCollectionDefaultValueFactory.cs
- ExpressionBuilderCollection.cs
- RefreshPropertiesAttribute.cs
- XmlNamespaceMapping.cs
- SmuggledIUnknown.cs
- GeometryDrawing.cs
- SmiXetterAccessMap.cs
- EraserBehavior.cs
- TextBoxAutoCompleteSourceConverter.cs
- CustomExpression.cs
- PageCatalogPart.cs
- DataRecordInfo.cs
- CombinedGeometry.cs
- SqlInternalConnectionTds.cs
- GroupBoxDesigner.cs
- ConfigXmlAttribute.cs
- IIS7WorkerRequest.cs
- HandlerElement.cs
- DataRowView.cs
- HandlerFactoryCache.cs
- TimeSpanParse.cs
- PrimitiveXmlSerializers.cs
- SourceElementsCollection.cs
- Point.cs
- DesignBindingConverter.cs
- ConstraintEnumerator.cs
- RectIndependentAnimationStorage.cs
- AssemblyResourceLoader.cs
- Size.cs
- WindowAutomationPeer.cs
- mansign.cs
- UnmanagedMemoryStream.cs
- DateTimePicker.cs
- DataSetMappper.cs
- SqlWriter.cs
- ExtentKey.cs
- ListViewCommandEventArgs.cs
- ListDictionaryInternal.cs
- filewebrequest.cs
- Parser.cs
- SymmetricAlgorithm.cs
- PreProcessInputEventArgs.cs
- CommunicationObjectManager.cs
- BaseTransportHeaders.cs
- SurrogateChar.cs
- SystemUdpStatistics.cs
- TreeBuilder.cs
- RequestStatusBarUpdateEventArgs.cs
- FunctionImportElement.cs
- ArraySortHelper.cs
- RawStylusInputCustomData.cs
- HScrollProperties.cs
- ProxyFragment.cs
- FileLoadException.cs
- ScaleTransform3D.cs
- CapabilitiesUse.cs
- BitmapMetadata.cs
- ManifestResourceInfo.cs
- CodeArgumentReferenceExpression.cs
- SessionStateModule.cs
- InvalidAsynchronousStateException.cs
- WindowsScroll.cs
- _DisconnectOverlappedAsyncResult.cs
- TcpSocketManager.cs
- ForwardPositionQuery.cs
- SqlRetyper.cs
- JumpList.cs
- Reference.cs
- Mappings.cs
- WebReferencesBuildProvider.cs
- dataSvcMapFileLoader.cs
- EdmScalarPropertyAttribute.cs
- CompilerParameters.cs
- OdbcDataReader.cs
- DefaultParameterValueAttribute.cs
- ConfigXmlComment.cs
- PerformanceCounterPermission.cs
- DataServiceKeyAttribute.cs
- CheckBox.cs
- UserPersonalizationStateInfo.cs
- NestedContainer.cs
- XmlValidatingReaderImpl.cs
- ConvertersCollection.cs
- Attachment.cs
- IndicShape.cs
- OrderingExpression.cs
- QilSortKey.cs
- DataSourceSelectArguments.cs
- Connector.cs
- IndexedEnumerable.cs
- MarkerProperties.cs
- OracleDataAdapter.cs
- HttpModuleCollection.cs
- CallbackException.cs