protected static uint ReleaseImpl(IntPtr thisObject)
            {
                ComObjectShadow shadow = ToShadow <ComObjectShadow>(thisObject);
                IUnknown        obj    = (IUnknown)shadow.Callback;

                return(obj.Release());
            }
            protected static unsafe int QueryInterfaceImpl(IntPtr thisObject, IntPtr guid, out IntPtr output)
            {
                ComObjectShadow shadow = ToShadow <ComObjectShadow>(thisObject);

                return(shadow.QueryInterface(*(Guid *)guid, out output).Code);
            }