public void GetCDKeyList()
        {
            UPLAY_Overlapped uplay_Overlapped = default(UPLAY_Overlapped);
            IntPtr           intPtr           = Marshal.AllocHGlobal(Marshal.SizeOf(uplay_Overlapped));

            Marshal.StructureToPtr(uplay_Overlapped, intPtr, true);
            overlappedMap.Add(intPtr, uplay_Overlapped);
            IntPtr ptr;
            Int32  num = UplayInvokes.UPLAY_USER_GetCdKeys(out ptr, intPtr);

            if (num != 0)
            {
                UplayInvokes.UPLAY_Update();
                while (!UplayInvokes.UPLAY_HasOverlappedOperationCompleted(intPtr))
                {
                    Thread.Sleep(5);
                    UplayInvokes.UPLAY_Update();
                }
                m_keys.Clear();
                UPLAY_USER_CdKeyList uplay_USER_CdKeyList = (UPLAY_USER_CdKeyList)Marshal.PtrToStructure(ptr, typeof(UPLAY_USER_CdKeyList));
                IntPtr list = uplay_USER_CdKeyList.list;
                for (Int32 i = 0; i < uplay_USER_CdKeyList.count; i++)
                {
                    UPLAY_USER_CdKey uplay_USER_CdKey = (UPLAY_USER_CdKey)Marshal.PtrToStructure(list, typeof(UPLAY_USER_CdKey));
                    m_keys.Add(uplay_USER_CdKey.keyUtf8);
                    list = new IntPtr(list.ToInt32() + IntPtr.Size);
                }
            }
        }
        private IntPtr CreateOverlapped()
        {
            UPLAY_Overlapped uplay_Overlapped = default(UPLAY_Overlapped);
            IntPtr           intPtr           = Marshal.AllocHGlobal(Marshal.SizeOf(uplay_Overlapped));

            Marshal.StructureToPtr(uplay_Overlapped, intPtr, true);
            return(intPtr);
        }
        public void ShowOverlay()
        {
            UPLAY_Overlapped uplay_Overlapped = default(UPLAY_Overlapped);
            IntPtr           intPtr           = Marshal.AllocHGlobal(Marshal.SizeOf(uplay_Overlapped));

            Marshal.StructureToPtr(uplay_Overlapped, intPtr, true);
            overlappedMap.Add(intPtr, uplay_Overlapped);
            UplayInvokes.UPLAY_OVERLAY_Show(UPLAY_OVERLAY_Section.UPLAY_OverlaySection_Show, intPtr);
        }
 public void EarnAchievment(Int32 achievementId)
 {
     if (m_isUplayConnected)
     {
         UPLAY_Overlapped uplay_Overlapped = default(UPLAY_Overlapped);
         IntPtr           intPtr           = Marshal.AllocHGlobal(Marshal.SizeOf(uplay_Overlapped));
         Marshal.StructureToPtr(uplay_Overlapped, intPtr, true);
         overlappedMap.Add(intPtr, uplay_Overlapped);
         Int32 num = UplayInvokes.UPLAY_ACH_EarnAchievement((UInt32)achievementId, intPtr);
         if (num != 0)
         {
         }
     }
 }