Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- FunctionParameter.cs
- NegotiationTokenAuthenticatorStateCache.cs
- CapabilitiesState.cs
- DataGridViewLayoutData.cs
- DateTimeSerializationSection.cs
- AdapterDictionary.cs
- CompareInfo.cs
- SecurityDocument.cs
- ScrollViewer.cs
- SerialErrors.cs
- ToolStripControlHost.cs
- Ray3DHitTestResult.cs
- QilSortKey.cs
- DataGridViewMethods.cs
- SpeakCompletedEventArgs.cs
- PolyLineSegment.cs
- ToolStripPanelRenderEventArgs.cs
- ColumnWidthChangingEvent.cs
- OutputScopeManager.cs
- Single.cs
- ScanQueryOperator.cs
- TitleStyle.cs
- TraceListener.cs
- FileEnumerator.cs
- StringOutput.cs
- TextChangedEventArgs.cs
- TracePayload.cs
- TimeEnumHelper.cs
- Pointer.cs
- DataBoundLiteralControl.cs
- StylusPoint.cs
- EnlistmentTraceIdentifier.cs
- WasAdminWrapper.cs
- FormsAuthentication.cs
- ListBoxChrome.cs
- ColorMatrix.cs
- BigInt.cs
- CodeCommentStatement.cs
- WindowPatternIdentifiers.cs
- X509AsymmetricSecurityKey.cs
- PackagePartCollection.cs
- Drawing.cs
- XComponentModel.cs
- SchemaElementLookUpTable.cs
- IdnElement.cs
- SchemaAttDef.cs
- IgnoreDeviceFilterElement.cs
- QueueTransferProtocol.cs
- XmlAtomicValue.cs
- WebPartConnectionsConnectVerb.cs
- FileLevelControlBuilderAttribute.cs
- BitmapEffectrendercontext.cs
- BrowserInteropHelper.cs
- PropertyGridEditorPart.cs
- ColorInterpolationModeValidation.cs
- Validator.cs
- ConfigurationSectionGroupCollection.cs
- HealthMonitoringSection.cs
- InstanceDescriptor.cs
- MSAANativeProvider.cs
- ListControlStringCollectionEditor.cs
- XmlSchemaFacet.cs
- EntityModelBuildProvider.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- DateTimeSerializationSection.cs
- NamespaceList.cs
- FilterFactory.cs
- MSG.cs
- MatrixTransform.cs
- ThemeDictionaryExtension.cs
- NegotiationTokenAuthenticatorStateCache.cs
- WorkflowItemPresenter.cs
- TokenBasedSet.cs
- HttpCacheVaryByContentEncodings.cs
- XmlImplementation.cs
- FileLoadException.cs
- DecoderFallback.cs
- SchemaTableColumn.cs
- CompilerWrapper.cs
- HandlerBase.cs
- InputChannel.cs
- SystemResourceHost.cs
- PackWebResponse.cs
- XmlCollation.cs
- WsdlBuildProvider.cs
- Calendar.cs
- DesigntimeLicenseContext.cs
- QilReplaceVisitor.cs
- KnownIds.cs
- WebContext.cs
- InputManager.cs
- ClockGroup.cs
- TypedReference.cs
- CodeSnippetStatement.cs
- HttpListenerResponse.cs
- DispatchRuntime.cs
- InlineObject.cs
- WindowHideOrCloseTracker.cs
- PersonalizationAdministration.cs