Code:
/ 4.0 / 4.0 / 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.
// ==++==
//
// 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
- Rfc2898DeriveBytes.cs
- MappingSource.cs
- ConnectorDragDropGlyph.cs
- InvalidProgramException.cs
- ValueTable.cs
- RotateTransform.cs
- MobileControlsSectionHelper.cs
- autovalidator.cs
- ClrProviderManifest.cs
- ControlEvent.cs
- DataTableClearEvent.cs
- IndependentAnimationStorage.cs
- TransactionScope.cs
- XamlFxTrace.cs
- GeneratedCodeAttribute.cs
- ServiceObjectContainer.cs
- UnsafeNativeMethods.cs
- SuppressMessageAttribute.cs
- DesignTimeParseData.cs
- SamlAuthenticationStatement.cs
- OleDbException.cs
- EmptyEnumerator.cs
- SkipQueryOptionExpression.cs
- PriorityBindingExpression.cs
- FontFamily.cs
- HttpEncoderUtility.cs
- ColumnMapCopier.cs
- PeerObject.cs
- DetailsViewUpdateEventArgs.cs
- TreeNodeStyle.cs
- UpDownBaseDesigner.cs
- LayoutManager.cs
- VirtualDirectoryMappingCollection.cs
- StorageMappingFragment.cs
- DataConnectionHelper.cs
- RefType.cs
- Vector3DKeyFrameCollection.cs
- StreamUpgradeAcceptor.cs
- Exception.cs
- ColumnBinding.cs
- OdbcCommand.cs
- DataConnectionHelper.cs
- PanelContainerDesigner.cs
- Matrix.cs
- DataGridViewAdvancedBorderStyle.cs
- FocusManager.cs
- TimerEventSubscription.cs
- SqlGatherProducedAliases.cs
- CustomCredentialPolicy.cs
- LinearKeyFrames.cs
- TextControlDesigner.cs
- ObjectReferenceStack.cs
- FormatSettings.cs
- HtmlWindow.cs
- SmtpReplyReader.cs
- ToolStripLocationCancelEventArgs.cs
- InfoCardBaseException.cs
- AutomationPatternInfo.cs
- PerformanceCounterLib.cs
- PersistenceProviderFactory.cs
- DecimalConstantAttribute.cs
- PointConverter.cs
- CompilerCollection.cs
- CodeExporter.cs
- GeneralTransform3DGroup.cs
- WebServiceHandler.cs
- _DomainName.cs
- ConsoleCancelEventArgs.cs
- CodeThrowExceptionStatement.cs
- Compilation.cs
- CommandBinding.cs
- TypeDelegator.cs
- SmtpMail.cs
- NavigationHelper.cs
- CachedPathData.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- EllipticalNodeOperations.cs
- IsolatedStorageException.cs
- ApplicationDirectoryMembershipCondition.cs
- InstanceDescriptor.cs
- XamlStyleSerializer.cs
- ServerValidateEventArgs.cs
- BoundColumn.cs
- CompositeCollection.cs
- SQLSingle.cs
- DataGrid.cs
- SamlConditions.cs
- Char.cs
- RtfNavigator.cs
- XmlDataLoader.cs
- IdentifierService.cs
- FixedHyperLink.cs
- TextFormatterImp.cs
- initElementDictionary.cs
- MethodToken.cs
- SkinBuilder.cs
- UriTemplateQueryValue.cs
- EntryPointNotFoundException.cs
- UseLicense.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs