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
- DBCommandBuilder.cs
- VBCodeProvider.cs
- QilStrConcat.cs
- EncodingInfo.cs
- DecoderReplacementFallback.cs
- DeleteIndexBinder.cs
- XmlIlGenerator.cs
- SiteIdentityPermission.cs
- ConnectionPool.cs
- GestureRecognizer.cs
- AttributeQuery.cs
- CreateUserWizard.cs
- ProtectedConfiguration.cs
- EntityViewContainer.cs
- EventsTab.cs
- FaultDescriptionCollection.cs
- Constants.cs
- VersionedStream.cs
- HttpProfileBase.cs
- ComplexPropertyEntry.cs
- WindowsRebar.cs
- Condition.cs
- PersonalizationProviderHelper.cs
- ProviderBase.cs
- XsltInput.cs
- FormViewUpdateEventArgs.cs
- UnicodeEncoding.cs
- _UncName.cs
- DynamicDataRoute.cs
- DataBoundControlAdapter.cs
- WindowCollection.cs
- CompositeDataBoundControl.cs
- TemplateContent.cs
- XmlSchemaSet.cs
- SubtreeProcessor.cs
- SoapDocumentMethodAttribute.cs
- Operand.cs
- TransportationConfigurationTypeInstallComponent.cs
- HttpProfileBase.cs
- FragmentNavigationEventArgs.cs
- XComponentModel.cs
- Paragraph.cs
- SafeViewOfFileHandle.cs
- ToolBar.cs
- DataGridViewCellStyle.cs
- updatecommandorderer.cs
- x509utils.cs
- ServerValidateEventArgs.cs
- LocalValueEnumerator.cs
- DropSource.cs
- UserPreferenceChangingEventArgs.cs
- XhtmlBasicTextBoxAdapter.cs
- ItemDragEvent.cs
- XmlReflectionImporter.cs
- PerspectiveCamera.cs
- Choices.cs
- PerformanceCounterLib.cs
- ParentUndoUnit.cs
- BitmapEffectGroup.cs
- CodeVariableDeclarationStatement.cs
- SqlCacheDependencyDatabase.cs
- QuaternionAnimation.cs
- HorizontalAlignConverter.cs
- OdbcEnvironmentHandle.cs
- RegexMatch.cs
- TimeSpanConverter.cs
- AggregateNode.cs
- LazyTextWriterCreator.cs
- CompositeDataBoundControl.cs
- MailMessage.cs
- ControlOperationInvoker.cs
- SwitchElementsCollection.cs
- MsmqVerifier.cs
- httpstaticobjectscollection.cs
- XmlElementElementCollection.cs
- RelationshipConverter.cs
- QueryConverter.cs
- X509PeerCertificateElement.cs
- VectorConverter.cs
- ComplusTypeValidator.cs
- OrderablePartitioner.cs
- StringStorage.cs
- SrgsText.cs
- BamlCollectionHolder.cs
- FixedFlowMap.cs
- OdbcEnvironment.cs
- TlsSspiNegotiation.cs
- InvalidOperationException.cs
- DataRowChangeEvent.cs
- ConfigurationManagerInternalFactory.cs
- ConversionContext.cs
- SecurityPolicySection.cs
- FrugalMap.cs
- UnauthorizedWebPart.cs
- LockCookie.cs
- DLinqTableProvider.cs
- ObjectDataSourceEventArgs.cs
- MailAddress.cs
- Accessors.cs
- ToolStripArrowRenderEventArgs.cs