Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QilIterator.cs
- XXXOnTypeBuilderInstantiation.cs
- HttpGetClientProtocol.cs
- AdRotator.cs
- RealizationDrawingContextWalker.cs
- SingleAnimationUsingKeyFrames.cs
- SafeProcessHandle.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- FilterQueryOptionExpression.cs
- BulletedListEventArgs.cs
- SafeLocalMemHandle.cs
- CompositeFontInfo.cs
- KeyedPriorityQueue.cs
- Filter.cs
- LinqDataSourceStatusEventArgs.cs
- AssertUtility.cs
- SectionVisual.cs
- LinqDataSourceValidationException.cs
- RequestQueue.cs
- CategoryGridEntry.cs
- TextContainerChangedEventArgs.cs
- StringDictionaryWithComparer.cs
- HttpException.cs
- ResourceIDHelper.cs
- StreamBodyWriter.cs
- NavigationPropertySingletonExpression.cs
- SQLConvert.cs
- WebPartChrome.cs
- DbConnectionPoolGroup.cs
- Solver.cs
- WebPartCancelEventArgs.cs
- RootBuilder.cs
- XmlUtf8RawTextWriter.cs
- StatusBarDrawItemEvent.cs
- MachineKeyConverter.cs
- GridView.cs
- PopupEventArgs.cs
- SHA512.cs
- HttpApplicationFactory.cs
- CheckBoxFlatAdapter.cs
- PersonalizationAdministration.cs
- ListDesigner.cs
- DockPanel.cs
- FixedSOMImage.cs
- BitmapEffectCollection.cs
- DataSetMappper.cs
- AsymmetricKeyExchangeDeformatter.cs
- ValidationRule.cs
- HotCommands.cs
- ListBoxChrome.cs
- StandardTransformFactory.cs
- PageContentAsyncResult.cs
- CodeMethodReturnStatement.cs
- HyperLinkColumn.cs
- RuleSetDialog.Designer.cs
- Parsers.cs
- AnimatedTypeHelpers.cs
- HtmlElementEventArgs.cs
- Rotation3D.cs
- TdsParserSessionPool.cs
- HtmlElement.cs
- TypeSystem.cs
- WindowsNonControl.cs
- Control.cs
- ExpressionTable.cs
- KeyboardDevice.cs
- Int32CollectionConverter.cs
- DataGridViewCellParsingEventArgs.cs
- Vector3DAnimationBase.cs
- XNodeNavigator.cs
- XsltQilFactory.cs
- WebBrowserUriTypeConverter.cs
- Pen.cs
- DecimalAnimationBase.cs
- DWriteFactory.cs
- IBuiltInEvidence.cs
- PreloadedPackages.cs
- TagPrefixAttribute.cs
- X509Utils.cs
- _LoggingObject.cs
- FixedLineResult.cs
- TransactionContext.cs
- SoapObjectWriter.cs
- SqlInfoMessageEvent.cs
- EpmHelper.cs
- ImageEditor.cs
- ItemContainerGenerator.cs
- CheckedPointers.cs
- CaseInsensitiveComparer.cs
- M3DUtil.cs
- InstanceCollisionException.cs
- FrameworkTemplate.cs
- CacheForPrimitiveTypes.cs
- GroupBox.cs
- InputElement.cs
- DetailsViewDeletedEventArgs.cs
- documentsequencetextview.cs
- ConsoleTraceListener.cs
- PreProcessor.cs
- RewritingValidator.cs