/// <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); }
/// <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"); } }
public static extern MResult ASFGetActiveFileInfo(out ASF_ActiveFileInfo activeFileInfo);