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
- NamedObject.cs
- SqlClientPermission.cs
- SessionEndingEventArgs.cs
- SrgsRule.cs
- SchemaContext.cs
- EventPropertyMap.cs
- TreeViewDesigner.cs
- ReadOnlyDataSource.cs
- XhtmlBasicPanelAdapter.cs
- WebPartZoneDesigner.cs
- MembershipUser.cs
- MetafileHeaderWmf.cs
- HScrollProperties.cs
- ConfigUtil.cs
- ValidationEventArgs.cs
- DesignerLabelAdapter.cs
- SchemaImporter.cs
- GroupBox.cs
- HttpBufferlessInputStream.cs
- XamlSerializerUtil.cs
- LayoutEvent.cs
- JsonSerializer.cs
- SHA256Cng.cs
- XsdDuration.cs
- ThemeableAttribute.cs
- SecurityContext.cs
- UIElementParagraph.cs
- MetadataPropertyvalue.cs
- MemoryMappedView.cs
- HtmlTableCellCollection.cs
- SmiXetterAccessMap.cs
- MouseActionConverter.cs
- NativeBuffer.cs
- DocumentStatusResources.cs
- HttpStreamXmlDictionaryReader.cs
- TextUtf8RawTextWriter.cs
- BevelBitmapEffect.cs
- OdbcParameterCollection.cs
- EncodingTable.cs
- RuntimeHelpers.cs
- ChtmlTextWriter.cs
- EndpointDiscoveryMetadata.cs
- SerializationInfoEnumerator.cs
- EventSourceCreationData.cs
- BrowserCapabilitiesCompiler.cs
- HttpCapabilitiesEvaluator.cs
- ColumnCollection.cs
- VideoDrawing.cs
- GridViewDeleteEventArgs.cs
- IdentifierService.cs
- ClientSettingsStore.cs
- TextEditorThreadLocalStore.cs
- ColumnMapCopier.cs
- TemplateBindingExtensionConverter.cs
- ListViewGroup.cs
- ChooseAction.cs
- CheckPair.cs
- CapabilitiesAssignment.cs
- MediaScriptCommandRoutedEventArgs.cs
- LocalizationCodeDomSerializer.cs
- ConnectionInterfaceCollection.cs
- GenerateScriptTypeAttribute.cs
- IFlowDocumentViewer.cs
- UIElementParagraph.cs
- DateTimeValueSerializerContext.cs
- IItemContainerGenerator.cs
- TextEmbeddedObject.cs
- WsiProfilesElement.cs
- StackBuilderSink.cs
- UshortList2.cs
- CaseInsensitiveHashCodeProvider.cs
- DispatcherOperation.cs
- CompensationHandlingFilter.cs
- ContractValidationHelper.cs
- MultiPageTextView.cs
- Mapping.cs
- ToolStripComboBox.cs
- AccessorTable.cs
- XslTransform.cs
- XmlSerializerOperationGenerator.cs
- PeerEndPoint.cs
- EventMappingSettings.cs
- DataTableNewRowEvent.cs
- ParseChildrenAsPropertiesAttribute.cs
- ParentQuery.cs
- ReadOnlyObservableCollection.cs
- RectangleHotSpot.cs
- ErrorWebPart.cs
- AncestorChangedEventArgs.cs
- PerformanceCounterManager.cs
- ServicePointManagerElement.cs
- XmlSchemaAttributeGroupRef.cs
- StrokeNodeOperations.cs
- PathSegmentCollection.cs
- MeasureItemEvent.cs
- SqlUtils.cs
- SeparatorAutomationPeer.cs
- DataGridViewCellValidatingEventArgs.cs
- LookupBindingPropertiesAttribute.cs
- PropertyPushdownHelper.cs