Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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);
}
}
}
// 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;
[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);
}
}
}
// 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
- Tokenizer.cs
- MenuItemBinding.cs
- XmlArrayItemAttribute.cs
- ExtendedTransformFactory.cs
- CodeDelegateInvokeExpression.cs
- BitmapData.cs
- TemplateInstanceAttribute.cs
- RefExpr.cs
- OrderByLifter.cs
- EncryptedPackage.cs
- ProviderSettings.cs
- SafeNativeMethodsCLR.cs
- AssemblyCollection.cs
- SolidColorBrush.cs
- ValueOfAction.cs
- WebPartDescriptionCollection.cs
- DrawListViewItemEventArgs.cs
- CompositeFontParser.cs
- TypeGeneratedEventArgs.cs
- CodeAttributeArgument.cs
- DataBindingCollection.cs
- TypeElement.cs
- Root.cs
- CodeBlockBuilder.cs
- QueryOptionExpression.cs
- SqlInfoMessageEvent.cs
- QueryRelOp.cs
- GeneralTransform3DTo2DTo3D.cs
- MimeReturn.cs
- TileModeValidation.cs
- RuntimeCompatibilityAttribute.cs
- MouseGestureConverter.cs
- ErrorFormatter.cs
- ControlIdConverter.cs
- CodeConditionStatement.cs
- DocumentApplicationJournalEntry.cs
- WindowsSpinner.cs
- WeakReferenceEnumerator.cs
- WebRequest.cs
- StylusButtonEventArgs.cs
- BaseDataList.cs
- StylusEventArgs.cs
- DataGridCell.cs
- WizardStepBase.cs
- SvcMapFileSerializer.cs
- DataControlFieldCollection.cs
- CodeFieldReferenceExpression.cs
- SelectedDatesCollection.cs
- ScriptServiceAttribute.cs
- SecurityTokenAuthenticator.cs
- ThreadExceptionDialog.cs
- UnitySerializationHolder.cs
- CurrentChangingEventArgs.cs
- WebServicesInteroperability.cs
- GreenMethods.cs
- MimeObjectFactory.cs
- RotateTransform3D.cs
- Signature.cs
- RemoteDebugger.cs
- LiteralTextContainerControlBuilder.cs
- TextBlock.cs
- GeneratedView.cs
- Int16Converter.cs
- GorillaCodec.cs
- FixedTextBuilder.cs
- CodeDomSerializer.cs
- Receive.cs
- Odbc32.cs
- Matrix.cs
- Icon.cs
- SerialReceived.cs
- PrimitiveCodeDomSerializer.cs
- SingleKeyFrameCollection.cs
- AvtEvent.cs
- SmtpCommands.cs
- UdpTransportSettings.cs
- InitializationEventAttribute.cs
- IdentitySection.cs
- AtomMaterializer.cs
- CopyAttributesAction.cs
- CreateUserErrorEventArgs.cs
- SecurityCredentialsManager.cs
- WebServiceClientProxyGenerator.cs
- WhiteSpaceTrimStringConverter.cs
- PermissionToken.cs
- ActiveXMessageFormatter.cs
- StringUtil.cs
- EventBuilder.cs
- XmlSignatureProperties.cs
- TextCompositionManager.cs
- ItemsPresenter.cs
- EntityParameter.cs
- NullableDoubleAverageAggregationOperator.cs
- baseaxisquery.cs
- InboundActivityHelper.cs
- MembershipValidatePasswordEventArgs.cs
- ExeContext.cs
- CodeVariableReferenceExpression.cs
- BrushValueSerializer.cs
- UITypeEditors.cs