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
- NoResizeHandleGlyph.cs
- NativeMethods.cs
- SubMenuStyle.cs
- AdjustableArrowCap.cs
- DbProviderSpecificTypePropertyAttribute.cs
- TextBlock.cs
- DataTableMappingCollection.cs
- XmlSchemaObject.cs
- HybridDictionary.cs
- HtmlImage.cs
- SettingsPropertyCollection.cs
- TemplateBindingExtension.cs
- RegistryKey.cs
- FactoryGenerator.cs
- ListBox.cs
- SqlTopReducer.cs
- CustomValidator.cs
- DbConnectionPoolCounters.cs
- SqlDataSourceCache.cs
- OptionUsage.cs
- XmlValueConverter.cs
- IListConverters.cs
- PropertyChangedEventManager.cs
- SoundPlayerAction.cs
- Dictionary.cs
- EventLogException.cs
- UniqueIdentifierService.cs
- UpnEndpointIdentityExtension.cs
- SuppressMessageAttribute.cs
- OleDbFactory.cs
- shaper.cs
- PropertyEmitterBase.cs
- XmlNotation.cs
- FrameworkTextComposition.cs
- ArraySortHelper.cs
- MultiByteCodec.cs
- CollectionViewGroupRoot.cs
- TemplateKey.cs
- SharedRuntimeState.cs
- SqlMethodCallConverter.cs
- PrintPreviewDialog.cs
- ValidationEventArgs.cs
- DataGridViewDataConnection.cs
- ManagedWndProcTracker.cs
- BeginEvent.cs
- XmlReflectionImporter.cs
- AttributeTableBuilder.cs
- ThreadAttributes.cs
- DictionarySectionHandler.cs
- SamlSubjectStatement.cs
- HideDisabledControlAdapter.cs
- XmlDeclaration.cs
- ToolStripPanel.cs
- LocatorGroup.cs
- CaseStatement.cs
- SynchronousChannelMergeEnumerator.cs
- InheritanceAttribute.cs
- EdmConstants.cs
- XmlWellformedWriterHelpers.cs
- StrongName.cs
- Command.cs
- GenericAuthenticationEventArgs.cs
- UIElement3DAutomationPeer.cs
- wgx_render.cs
- DataControlField.cs
- webbrowsersite.cs
- Margins.cs
- ConfigurationLocationCollection.cs
- MatrixKeyFrameCollection.cs
- EntitySet.cs
- DataServiceQuery.cs
- MultiBindingExpression.cs
- IsolatedStoragePermission.cs
- XPathBuilder.cs
- SrgsDocument.cs
- ConnectionPointCookie.cs
- NameGenerator.cs
- BufferedStream.cs
- MouseButton.cs
- MenuItem.cs
- httpserverutility.cs
- Debug.cs
- DataGridPagingPage.cs
- StrokeNode.cs
- sqlstateclientmanager.cs
- PlacementWorkspace.cs
- RealizationContext.cs
- FontInfo.cs
- DataTableNewRowEvent.cs
- TemplateComponentConnector.cs
- TreeNodeStyleCollection.cs
- ReferenceCountedObject.cs
- RowCache.cs
- TransferRequestHandler.cs
- SecurityContext.cs
- XmlIgnoreAttribute.cs
- SpecularMaterial.cs
- WebPartAddingEventArgs.cs
- TextElement.cs
- ImageField.cs