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
- UseLicense.cs
- Preprocessor.cs
- VisualBrush.cs
- XPathDescendantIterator.cs
- VisualBasicExpressionConverter.cs
- WmpBitmapEncoder.cs
- PagerSettings.cs
- ManagementBaseObject.cs
- Path.cs
- TimerElapsedEvenArgs.cs
- CatalogPartCollection.cs
- ListBoxChrome.cs
- RegexStringValidatorAttribute.cs
- SnapshotChangeTrackingStrategy.cs
- X509Certificate.cs
- DataGridViewHeaderCell.cs
- WebPartDisplayMode.cs
- XmlDocumentSurrogate.cs
- OrderedDictionaryStateHelper.cs
- GroupLabel.cs
- GACMembershipCondition.cs
- TablePattern.cs
- ValidationSummary.cs
- MailWebEventProvider.cs
- IntPtr.cs
- TableRow.cs
- NonVisualControlAttribute.cs
- TextDecorationCollectionConverter.cs
- TypeExtensionSerializer.cs
- WinEventHandler.cs
- ETagAttribute.cs
- MouseButtonEventArgs.cs
- TextRangeAdaptor.cs
- CodeTypeReferenceExpression.cs
- SqlDataReader.cs
- NativeMethods.cs
- SecurityState.cs
- XsltArgumentList.cs
- StylusSystemGestureEventArgs.cs
- ThrowHelper.cs
- VirtualDirectoryMappingCollection.cs
- DataGridViewComboBoxColumn.cs
- SchemaElementLookUpTableEnumerator.cs
- PathHelper.cs
- PermissionToken.cs
- XmlSchemaObjectTable.cs
- BatchServiceHost.cs
- SafeRsaProviderHandle.cs
- FontNamesConverter.cs
- RijndaelManagedTransform.cs
- WebContext.cs
- DecimalAnimationBase.cs
- DependencyObjectPropertyDescriptor.cs
- SqlUdtInfo.cs
- ZipIOExtraFieldElement.cs
- BitmapEffect.cs
- CheckableControlBaseAdapter.cs
- UrlMappingsSection.cs
- XPathDocumentIterator.cs
- ActivityExecutionContext.cs
- PerformanceCounter.cs
- CustomAttributeFormatException.cs
- LambdaCompiler.Generated.cs
- TrustSection.cs
- RemotingAttributes.cs
- FocusWithinProperty.cs
- SequenceNumber.cs
- ToolStripSplitStackLayout.cs
- Rules.cs
- BitVec.cs
- XmlElementCollection.cs
- WebBaseEventKeyComparer.cs
- MergablePropertyAttribute.cs
- CellConstant.cs
- StringAttributeCollection.cs
- SqlSelectStatement.cs
- FontDriver.cs
- ToolStripPanelRow.cs
- DataSvcMapFileSerializer.cs
- DoWorkEventArgs.cs
- KoreanLunisolarCalendar.cs
- CompilerTypeWithParams.cs
- GridViewColumnHeaderAutomationPeer.cs
- filewebrequest.cs
- TextBoxLine.cs
- XmlSerializerFactory.cs
- GPStream.cs
- CheckBox.cs
- XsdSchemaFileEditor.cs
- XmlAttribute.cs
- _HTTPDateParse.cs
- SystemUdpStatistics.cs
- SimpleWebHandlerParser.cs
- XPathMultyIterator.cs
- EtwTrace.cs
- SchemaMerger.cs
- Converter.cs
- ActivityExecutionContextCollection.cs
- PointHitTestResult.cs
- TimelineClockCollection.cs