Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QueueProcessor.cs
- Cursor.cs
- ValidationErrorCollection.cs
- CustomPopupPlacement.cs
- EntityDataSourceEntitySetNameItem.cs
- UtilityExtension.cs
- DllNotFoundException.cs
- SchemaTypeEmitter.cs
- ConnectionInterfaceCollection.cs
- MarkupExtensionParser.cs
- WindowsFont.cs
- MetaTableHelper.cs
- OleDbConnectionInternal.cs
- XmlSchemaImporter.cs
- PropertyDescriptorGridEntry.cs
- TypeSystem.cs
- DeleteIndexBinder.cs
- ColorBlend.cs
- TemplateEditingService.cs
- ConfigurationConverterBase.cs
- ToolStripContainerActionList.cs
- TargetException.cs
- SimpleExpression.cs
- NoClickablePointException.cs
- ReadOnlyDataSource.cs
- HostProtectionException.cs
- InputLanguageManager.cs
- ApplyHostConfigurationBehavior.cs
- UpdateCommand.cs
- CallSiteOps.cs
- HttpGetProtocolImporter.cs
- QuestionEventArgs.cs
- Subtree.cs
- Overlapped.cs
- TextRunCacheImp.cs
- PersistenceException.cs
- RegisteredHiddenField.cs
- DefaultHttpHandler.cs
- SmtpLoginAuthenticationModule.cs
- IndependentAnimationStorage.cs
- ToolbarAUtomationPeer.cs
- InertiaRotationBehavior.cs
- ViewSimplifier.cs
- MulticastNotSupportedException.cs
- ImageAutomationPeer.cs
- AvTraceDetails.cs
- FileClassifier.cs
- WindowsGraphicsCacheManager.cs
- PathData.cs
- ContextBase.cs
- BaseCollection.cs
- Figure.cs
- TypeDependencyAttribute.cs
- TextPenaltyModule.cs
- CodeTypeParameter.cs
- EntityModelSchemaGenerator.cs
- TypeUtils.cs
- TextRangeEditTables.cs
- Pair.cs
- StorageInfo.cs
- Attributes.cs
- Utilities.cs
- CodeParameterDeclarationExpressionCollection.cs
- WindowAutomationPeer.cs
- WpfKnownMemberInvoker.cs
- HtmlInputSubmit.cs
- MenuDesigner.cs
- MsmqInputMessage.cs
- RelationshipConstraintValidator.cs
- AppSettingsSection.cs
- DbConnectionClosed.cs
- KeyConverter.cs
- ExpressionParser.cs
- ToolStripScrollButton.cs
- AsyncCallback.cs
- EmbeddedMailObjectsCollection.cs
- DesignBindingPropertyDescriptor.cs
- DPAPIProtectedConfigurationProvider.cs
- IndexedString.cs
- Floater.cs
- HttpHostedTransportConfiguration.cs
- RuntimeArgument.cs
- GiveFeedbackEventArgs.cs
- CodeExpressionStatement.cs
- RequestCacheEntry.cs
- Style.cs
- DataGridRowsPresenter.cs
- ResourcesBuildProvider.cs
- loginstatus.cs
- HyperLinkColumn.cs
- pingexception.cs
- LocalizableAttribute.cs
- Timeline.cs
- ComponentRenameEvent.cs
- SecUtil.cs
- EntityCollection.cs
- TableParaClient.cs
- ListViewItem.cs
- EtwTrace.cs
- KeyFrames.cs