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
- DocumentPageView.cs
- FlowPanelDesigner.cs
- ObjectHelper.cs
- CacheMode.cs
- KerberosTicketHashIdentifierClause.cs
- IssuanceTokenProviderBase.cs
- DllNotFoundException.cs
- CompositeActivityValidator.cs
- BindingSourceDesigner.cs
- OpenCollectionAsyncResult.cs
- updateconfighost.cs
- DefaultProxySection.cs
- SqlConnectionFactory.cs
- MruCache.cs
- RegisteredExpandoAttribute.cs
- SafeCryptHandles.cs
- ForeignKeyConstraint.cs
- SchemaTypeEmitter.cs
- GeneralTransform3DTo2D.cs
- CompilerErrorCollection.cs
- PropertyFilterAttribute.cs
- ZoneLinkButton.cs
- FormatConvertedBitmap.cs
- StorageFunctionMapping.cs
- DefaultValueTypeConverter.cs
- MarshalByRefObject.cs
- SortableBindingList.cs
- LocalizationParserHooks.cs
- DataServiceProviderWrapper.cs
- ExpressionCopier.cs
- PeerApplication.cs
- ContainerParaClient.cs
- WebPartManagerInternals.cs
- ControlEvent.cs
- DocumentApplicationJournalEntry.cs
- SafeHandles.cs
- IdleTimeoutMonitor.cs
- CodeAssignStatement.cs
- NegotiateStream.cs
- StubHelpers.cs
- ToolStripSplitButton.cs
- Row.cs
- NavigationWindow.cs
- DictionaryManager.cs
- HttpContext.cs
- PasswordValidationException.cs
- DataProtection.cs
- MatrixCamera.cs
- Pen.cs
- TimeSpanValidator.cs
- BlockExpression.cs
- SecurityResources.cs
- Vars.cs
- MexHttpsBindingCollectionElement.cs
- MarshalByValueComponent.cs
- ToolTipService.cs
- DataGrid.cs
- CodeThrowExceptionStatement.cs
- DecimalConverter.cs
- AttributeData.cs
- ListView.cs
- XhtmlBasicLiteralTextAdapter.cs
- ThreadInterruptedException.cs
- GraphicsState.cs
- WeakEventTable.cs
- UnsafeNativeMethods.cs
- DoubleStorage.cs
- XmlSchemas.cs
- Int16Animation.cs
- XmlAggregates.cs
- MulticastOption.cs
- DecimalStorage.cs
- EntityProviderFactory.cs
- COM2FontConverter.cs
- DataShape.cs
- FixedFindEngine.cs
- CommentAction.cs
- OuterGlowBitmapEffect.cs
- Win32.cs
- CodeMethodInvokeExpression.cs
- IPipelineRuntime.cs
- CompoundFileDeflateTransform.cs
- Pen.cs
- HttpChannelBindingToken.cs
- CallbackBehaviorAttribute.cs
- SafeFileHandle.cs
- XmlAtomicValue.cs
- PopOutPanel.cs
- CorePropertiesFilter.cs
- HierarchicalDataBoundControl.cs
- ConfigurationElement.cs
- ConstructorBuilder.cs
- WebPartCollection.cs
- HtmlElementCollection.cs
- ButtonChrome.cs
- OperationInvokerTrace.cs
- ByteFacetDescriptionElement.cs
- QilXmlReader.cs
- WebConfigManager.cs
- BevelBitmapEffect.cs