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
- ContentPosition.cs
- StrokeNodeOperations.cs
- DesignerActionKeyboardBehavior.cs
- EqualityComparer.cs
- TextUtf8RawTextWriter.cs
- ModelUtilities.cs
- DragStartedEventArgs.cs
- ApplyImportsAction.cs
- ToolStripGrip.cs
- ClientCredentialsElement.cs
- ResolveDuplexCD1AsyncResult.cs
- SspiNegotiationTokenAuthenticatorState.cs
- Button.cs
- DynamicEntity.cs
- XmlSchemaSimpleTypeRestriction.cs
- ActivityInstanceMap.cs
- StateMachineWorkflowInstance.cs
- ValueOfAction.cs
- GPPOINT.cs
- Crc32.cs
- PageCodeDomTreeGenerator.cs
- sqlstateclientmanager.cs
- NullEntityWrapper.cs
- DefaultHttpHandler.cs
- SpotLight.cs
- AutoScrollExpandMessageFilter.cs
- WithStatement.cs
- WebPartMinimizeVerb.cs
- QueryIntervalOp.cs
- HasCopySemanticsAttribute.cs
- FormViewPageEventArgs.cs
- TransformProviderWrapper.cs
- CallbackCorrelationInitializer.cs
- DataServiceResponse.cs
- ProtectedConfigurationProviderCollection.cs
- FactoryId.cs
- BitVec.cs
- ValueSerializerAttribute.cs
- Stack.cs
- TypefaceMap.cs
- BasicKeyConstraint.cs
- SelectionUIService.cs
- BinaryFormatterWriter.cs
- DbExpressionRules.cs
- HashAlgorithm.cs
- DragDeltaEventArgs.cs
- EncoderBestFitFallback.cs
- WebScriptMetadataMessage.cs
- ExistsInCollection.cs
- ExtentKey.cs
- ExtendedProperty.cs
- FunctionImportElement.cs
- LabelInfo.cs
- SurrogateSelector.cs
- XmlCharCheckingWriter.cs
- LoginNameDesigner.cs
- DataGridLengthConverter.cs
- DataGridViewBand.cs
- CharacterString.cs
- CodeActivityContext.cs
- SharedStatics.cs
- DataGridViewCellLinkedList.cs
- SQLDateTime.cs
- StringArrayConverter.cs
- ExpressionCopier.cs
- TableRow.cs
- FileLevelControlBuilderAttribute.cs
- XmlSchemaComplexContentExtension.cs
- SHA384.cs
- ObjectContextServiceProvider.cs
- Signature.cs
- ThreadAbortException.cs
- HttpRuntimeSection.cs
- DesignerAutoFormat.cs
- StaticExtension.cs
- InstanceCompleteException.cs
- AngleUtil.cs
- CacheMemory.cs
- DiagnosticTrace.cs
- WebCodeGenerator.cs
- FormatConvertedBitmap.cs
- FragmentQueryProcessor.cs
- StringResourceManager.cs
- PeerToPeerException.cs
- InkCanvasInnerCanvas.cs
- FamilyTypefaceCollection.cs
- Win32Native.cs
- ExtenderControl.cs
- XmlnsDictionary.cs
- HttpListenerRequest.cs
- DetailsViewInsertedEventArgs.cs
- RepeaterItem.cs
- SqlBooleanMismatchVisitor.cs
- CustomAttributeSerializer.cs
- FontResourceCache.cs
- ToolBarPanel.cs
- ProviderSettings.cs
- UseLicense.cs
- MsmqBindingElementBase.cs