Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- StrongNamePublicKeyBlob.cs
- SchemaNames.cs
- RectangleF.cs
- RootAction.cs
- VisualTreeHelper.cs
- GridErrorDlg.cs
- GreenMethods.cs
- CodeSubDirectoriesCollection.cs
- GridViewDesigner.cs
- DropDownList.cs
- PolyLineSegment.cs
- HyperLinkColumn.cs
- TextParagraphProperties.cs
- VBIdentifierDesigner.xaml.cs
- Padding.cs
- ComponentEditorForm.cs
- SecurityTimestamp.cs
- TextBoxDesigner.cs
- JoinElimination.cs
- Profiler.cs
- _IPv6Address.cs
- ping.cs
- _LoggingObject.cs
- wgx_render.cs
- ListViewUpdateEventArgs.cs
- ServiceOperationHelpers.cs
- HandleRef.cs
- DbUpdateCommandTree.cs
- DbException.cs
- DataControlFieldCell.cs
- WsdlWriter.cs
- SqlDataSourceView.cs
- ParameterBuilder.cs
- Label.cs
- WindowPatternIdentifiers.cs
- dbdatarecord.cs
- SynchronizationContext.cs
- CompilationSection.cs
- CollectionTypeElement.cs
- ObjectDataSourceStatusEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- EditorPartChrome.cs
- TableAdapterManagerNameHandler.cs
- TextBlock.cs
- GetKeyedHashRequest.cs
- LogAppendAsyncResult.cs
- TextCharacters.cs
- DataControlButton.cs
- ChannelServices.cs
- WebWorkflowRole.cs
- Rules.cs
- MethodToken.cs
- XmlDocumentType.cs
- DeviceContexts.cs
- XmlMembersMapping.cs
- StylusLogic.cs
- HandleRef.cs
- Int32EqualityComparer.cs
- ConfigurationSettings.cs
- ClientSideProviderDescription.cs
- AssemblyFilter.cs
- GridViewEditEventArgs.cs
- SingleKeyFrameCollection.cs
- _ContextAwareResult.cs
- ProxyElement.cs
- XamlSerializer.cs
- TypeBuilder.cs
- CommandHelpers.cs
- Opcode.cs
- DrawingImage.cs
- CodeDelegateInvokeExpression.cs
- WorkflowShape.cs
- CachingHintValidation.cs
- EmptyCollection.cs
- _IPv6Address.cs
- AlphabetConverter.cs
- StyleTypedPropertyAttribute.cs
- DocumentViewerAutomationPeer.cs
- FixedPosition.cs
- EmptyQuery.cs
- _SafeNetHandles.cs
- HtmlToClrEventProxy.cs
- ValueType.cs
- SafeNativeMethods.cs
- SignatureToken.cs
- SafeCoTaskMem.cs
- XPathScanner.cs
- DesignerAttribute.cs
- DataSourceSerializationException.cs
- SelectionItemPattern.cs
- SetStoryboardSpeedRatio.cs
- StringReader.cs
- CompilationPass2TaskInternal.cs
- SchemaConstraints.cs
- DataGridDesigner.cs
- LexicalChunk.cs
- InkCanvasInnerCanvas.cs
- FileLevelControlBuilderAttribute.cs
- ControlBuilderAttribute.cs
- AttributeQuery.cs