public static void RunAPICallback(SteamAPICallCompleted_t apicall)
        {
            IAPICallback apiCallback;

            if (!registeredAPICallbacks.TryGetValue(apicall.m_hAsyncCall, out apiCallback))
            {
                return;
            }

            IntPtr pData = IntPtr.Zero;

            try
            {
                bool bFailed = false;
                pData = Marshal.AllocHGlobal(apiCallback.GetExpectedSize());

                if (!Steamworks.GetAPICallResult(LastActivePipe, apicall.m_hAsyncCall, pData, apiCallback.GetExpectedSize(), apiCallback.GetExpectedCallback(), ref bFailed))
                {
                    return;
                }

                if (bFailed)
                {
                    return;
                }

                apiCallback.Run(pData);
            }
            finally
            {
                apiCallback.ClearAPICallHandle();

                Marshal.FreeHGlobal(pData);
            }
        }
        private static void RunAPICallbacks(int pipe, SteamAPICallCompleted_t apicall)
        {
            IAPICallback apicallback;

            if (registeredAPICallbacks.TryGetValue(apicall.m_hAsyncCall, out apicallback))
            {
                IntPtr pData = IntPtr.Zero;

                try
                {
                    int  size    = Marshal.SizeOf(apicallback.GetType());
                    bool bFailed = false;
                    pData = Marshal.AllocHGlobal(size);

                    if (!Steamworks.GetAPICallResult(pipe, apicall.m_hAsyncCall, pData, size, apicallback.GetCallback(), ref bFailed))
                    {
                        return;
                    }

                    if (bFailed)
                    {
                        return;
                    }

                    apicallback.Run(pData);
                }
                finally
                {
                    registeredAPICallbacks.Remove(apicall.m_hAsyncCall);

                    Marshal.FreeHGlobal(pData);
                }
            }
        }