Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Reflection / Pointer.cs / 1 / 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;
[CLSCompliant(false)]
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Pointer: ISerializable {
unsafe private void* _ptr;
private Type _ptrType;
private Pointer() {}
private unsafe Pointer(SerializationInfo info, StreamingContext context)
{
_ptr = ((IntPtr)(info.GetValue("_ptr", typeof(IntPtr)))).ToPointer();
_ptrType = (Type)info.GetValue("_ptrType", typeof(Type));
}
// 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.
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");
Pointer x = new Pointer();
x._ptr = ptr;
x._ptrType = type;
return x;
}
// Returned the stored pointer.
public static unsafe void* Unbox(Object ptr) {
if (!(ptr is Pointer))
throw new ArgumentException(Environment.GetResourceString("Arg_MustBePointer"),"ptr");
return ((Pointer)ptr)._ptr;
}
internal Type GetPointerType() {
return _ptrType;
}
internal unsafe Object GetPointerValue() {
return (IntPtr)_ptr;
}
unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
info.AddValue("_ptr", new IntPtr(_ptr));
info.AddValue("_ptrType", _ptrType);
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListBox.cs
- assertwrapper.cs
- SkipQueryOptionExpression.cs
- ObjectView.cs
- DataObject.cs
- SQLGuidStorage.cs
- LinkLabel.cs
- ParallelTimeline.cs
- ListViewItem.cs
- GeometryConverter.cs
- AppDomainShutdownMonitor.cs
- PropertyGrid.cs
- TypeElementCollection.cs
- EntityDataSourceMemberPath.cs
- ImageConverter.cs
- DataBindingCollection.cs
- GeneralEndpointIdentity.cs
- IndexerNameAttribute.cs
- ScaleTransform.cs
- NumberFormatter.cs
- ClientTargetCollection.cs
- RectKeyFrameCollection.cs
- DebugView.cs
- LinqDataSourceSelectEventArgs.cs
- UTF7Encoding.cs
- SoapAttributeAttribute.cs
- SemanticResultKey.cs
- ComponentManagerBroker.cs
- TileBrush.cs
- XamlRtfConverter.cs
- CodeEntryPointMethod.cs
- InputProcessorProfilesLoader.cs
- TransformerTypeCollection.cs
- ListViewGroup.cs
- SqlUdtInfo.cs
- Transaction.cs
- SiteMapProvider.cs
- XmlDataContract.cs
- ScriptServiceAttribute.cs
- Opcode.cs
- SamlConditions.cs
- CipherData.cs
- LogicalExpr.cs
- DesignerMetadata.cs
- ComplexBindingPropertiesAttribute.cs
- XmlSchemaIdentityConstraint.cs
- NotifyIcon.cs
- FileDialogCustomPlacesCollection.cs
- DaylightTime.cs
- EventHandlersStore.cs
- PaintValueEventArgs.cs
- ToolboxComponentsCreatingEventArgs.cs
- Pens.cs
- SystemBrushes.cs
- RuntimeHandles.cs
- CaseExpr.cs
- RangeBase.cs
- __ConsoleStream.cs
- X509UI.cs
- PageParserFilter.cs
- RoleManagerSection.cs
- FieldDescriptor.cs
- DetailsViewRowCollection.cs
- SiteMapPath.cs
- UInt16Storage.cs
- NoPersistScope.cs
- ToolStripProgressBar.cs
- PtsPage.cs
- Pens.cs
- SelectionEditor.cs
- MimeParameter.cs
- XPathSelfQuery.cs
- BinaryParser.cs
- ProcessHost.cs
- XmlSchemaValidationException.cs
- SigningCredentials.cs
- ColumnResizeUndoUnit.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- InputReferenceExpression.cs
- Sequence.cs
- PriorityBindingExpression.cs
- SigningDialog.cs
- DelegateSerializationHolder.cs
- XPathNodeIterator.cs
- Wizard.cs
- UrlSyndicationContent.cs
- DesignerVerb.cs
- MaskInputRejectedEventArgs.cs
- SafeFileMappingHandle.cs
- OdbcUtils.cs
- StreamGeometryContext.cs
- SecurityDocument.cs
- Timeline.cs
- DeobfuscatingStream.cs
- ClientTargetSection.cs
- SliderAutomationPeer.cs
- EnumConverter.cs
- PngBitmapDecoder.cs
- XmlElementAttribute.cs
- SmuggledIUnknown.cs