InternalGet() private method

private InternalGet ( IntPtr handle ) : Object
handle System.IntPtr
return Object
Example #1
0
            /// <summary>
            /// Given a <see cref="System.IntPtr"/> from a generated Vtable, convert to the target type.
            /// </summary>
            /// <typeparam name="T">Desired type.</typeparam>
            /// <param name="dispatchPtr">Pointer supplied to Vtable function entry.</param>
            /// <returns>Instance of type associated with dispatched function call.</returns>
            public static unsafe T GetInstance <T>(ComInterfaceDispatch *dispatchPtr) where T : class
            {
                // See the dispatch section in the runtime for details on the masking below.
                const long DispatchThisPtrMask = ~0xfL;
                var        comInstance         = *(ComInterfaceInstance **)(((long)dispatchPtr) & DispatchThisPtrMask);

                return(Unsafe.As <T>(GCHandle.InternalGet(comInstance->GcHandle)));
            }