/// <summary>
        /// 获取激活文件信息
        /// </summary>
        /// <param name="activeFileInfo">激活文件信息</param>
        /// <returns>返回0表示正常;返回负数请根据ErrorCodeUtil类注释查看;其他值请在官网-帮助中心查询</returns>
        public int ASFGetActiveFileInfo(out ActiveFileInfo activeFileInfo)
        {
            activeFileInfo = new ActiveFileInfo();
            IntPtr pASFActiveFileInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf <ASF_ActiveFileInfo>());
            //调用SDK接口
            int retCode = ASFFunctions.ASFGetActiveFileInfo(pASFActiveFileInfo);

            if (retCode != 0)
            {
                MemoryUtil.Free(pASFActiveFileInfo);
                return(retCode);
            }
            //转化结果
            ASF_ActiveFileInfo asfActiveFileInfo = MemoryUtil.PtrToStructure <ASF_ActiveFileInfo>(pASFActiveFileInfo);

            activeFileInfo.startTime   = Marshal.PtrToStringAnsi(asfActiveFileInfo.startTime);
            activeFileInfo.endTime     = Marshal.PtrToStringAnsi(asfActiveFileInfo.endTime);
            activeFileInfo.platform    = Marshal.PtrToStringAnsi(asfActiveFileInfo.platform);
            activeFileInfo.sdkType     = Marshal.PtrToStringAnsi(asfActiveFileInfo.sdkType);
            activeFileInfo.appId       = Marshal.PtrToStringAnsi(asfActiveFileInfo.appId);
            activeFileInfo.sdkKey      = Marshal.PtrToStringAnsi(asfActiveFileInfo.sdkKey);
            activeFileInfo.sdkVersion  = Marshal.PtrToStringAnsi(asfActiveFileInfo.sdkVersion);
            activeFileInfo.fileVersion = Marshal.PtrToStringAnsi(asfActiveFileInfo.fileVersion);
            MemoryUtil.Free(pASFActiveFileInfo);
            return(retCode);
        }
示例#2
0
        /// <returns></returns>
        /// <summary>
        /// 激活SDK
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="x86SdkKey"></param>
        /// <param name="x64SdkKey"></param>
        /// <param name="sox64Key"></param>
        /// <param name="x86ProActiveKey">永久授权版 秘钥 </param>
        /// <param name="x64ProActiveKey">永久授权版 秘钥 </param>
        /// <param name="sox64ProActiveKey">永久授权版 秘钥 </param>
        /// <returns></returns>
        public static int Activation(string appId, string x86SdkKey, string x64SdkKey, string sox64Key
                                     , string x86ProActiveKey = null, string x64ProActiveKey = null, string sox64ProActiveKey = null)
        {
            int result = -1;

#if NET5_0
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
#endif
            if (
#if NET5_0
                RuntimeInformation.ProcessArchitecture == Architecture.X64
#else
                Environment.Is64BitProcess
#endif
                )
            {
                ASF_ActiveFileInfo aSF_ActiveFileInfo  = default;
                IntPtr             pASF_ActiveFileInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf <ASF_ActiveFileInfo>());

                if (!string.IsNullOrEmpty(x64ProActiveKey))
                {
                    result = ASFFunctions_Pro_x64.ASFGetActiveFileInfo(pASF_ActiveFileInfo);
                }

                if (result == 0)
                {
                    aSF_ActiveFileInfo = MemoryUtil.PtrToStructure <ASF_ActiveFileInfo>(pASF_ActiveFileInfo);
                }
                if (result == 0 &&
                    long.TryParse(aSF_ActiveFileInfo.EndTime, out long endTime) &&
                    long.TryParse(aSF_ActiveFileInfo.StartTime, out long startTime) &&
                    (DateTime.Now.ToTimestamp() / 1000) < endTime &&
                    (DateTime.Now.ToTimestamp() / 1000) >= startTime &&
                    (aSF_ActiveFileInfo.Platform == "windows_x64" || aSF_ActiveFileInfo.SdkType == "windows_x64"))
                {
                    return(result);
                }

                if (!string.IsNullOrEmpty(x64ProActiveKey))
                {
                    result = ASFFunctions_Pro_x64.ASFOnlineActivation(appId, x64SdkKey, x64ProActiveKey);
                    if (result != 0 &&
                        System.IO.File.Exists("ArcFacePro64.dat"))
                    {
                        System.IO.File.Delete("ArcFacePro64.dat");
                        result = ASFFunctions_Pro_x64.ASFOnlineActivation(appId, x64SdkKey, x64ProActiveKey);
                    }
                }
            }
            else
#if NET5_0
            if (RuntimeInformation.ProcessArchitecture == Architecture.X86)
#endif
            {
                ASF_ActiveFileInfo aSF_ActiveFileInfo  = default;
                IntPtr             pASF_ActiveFileInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf <ASF_ActiveFileInfo>());

                if (!string.IsNullOrEmpty(x86ProActiveKey))
                {
                    result = ASFFunctions_Pro_x86.ASFGetActiveFileInfo(pASF_ActiveFileInfo);
                }

                if (result == 0)
                {
                    aSF_ActiveFileInfo = MemoryUtil.PtrToStructure <ASF_ActiveFileInfo>(pASF_ActiveFileInfo);
                }
                if (result == 0 &&
                    long.TryParse(aSF_ActiveFileInfo.EndTime, out long endTime) &&
                    long.TryParse(aSF_ActiveFileInfo.StartTime, out long startTime) &&
                    (DateTime.Now.ToTimestamp() / 1000) < endTime &&
                    (DateTime.Now.ToTimestamp() / 1000) >= startTime &&
                    (aSF_ActiveFileInfo.Platform == "windows_x86" || aSF_ActiveFileInfo.SdkType == "windows_x86"))
                {
                    return(result);
                }
                if (!string.IsNullOrEmpty(x86ProActiveKey))
                {
                    result = ASFFunctions_Pro_x86.ASFOnlineActivation(appId, x86SdkKey, x86ProActiveKey);
                    if (result != 0 &&
                        System.IO.File.Exists("ArcFacePro32.dat"))
                    {
                        System.IO.File.Delete("ArcFacePro32.dat");
                        result = ASFFunctions_Pro_x86.ASFOnlineActivation(appId, x86SdkKey, x86ProActiveKey);
                    }
                }
            }
#if NET5_0
            else
            {
                throw new NotSupportedException("Only supported Windows x86 x64 and Linux x64");
            }
        }
示例#3
0
 public static extern MResult ASFGetActiveFileInfo(out ASF_ActiveFileInfo activeFileInfo);