コード例 #1
0
ファイル: ArcFace.cs プロジェクト: colin-chang/ArcFace.Net
 public async Task <VersionInfo> GetSdkVersionAsync() =>
 await Task.Run(() =>
 {
     var pointer = IntPtr.Zero;
     try
     {
         pointer = Marshal.AllocHGlobal(Marshal.SizeOf <AsfVersionInfo>());
         AsfHelper.ASFGetVersion(pointer);
         var version = Marshal.PtrToStructure <AsfVersionInfo>(pointer);
         return(version.Cast());
     }
     finally
     {
         Marshal.FreeHGlobal(pointer);
     }
 });
コード例 #2
0
ファイル: ArcFace.cs プロジェクト: colin-chang/ArcFace.Net
        public async Task <OperationResult <ActiveFileInfo> > GetActiveFileInfoAsync() =>
        await Task.Run(() =>
        {
            var pointer = IntPtr.Zero;
            try
            {
                pointer  = Marshal.AllocHGlobal(Marshal.SizeOf <AsfActiveFileInfo>());
                var code = AsfHelper.ASFGetActiveFileInfo(pointer);
                if (code != 0)
                {
                    return(new OperationResult <ActiveFileInfo>(code));
                }

                var info = Marshal.PtrToStructure <AsfActiveFileInfo>(pointer);
                return(new OperationResult <ActiveFileInfo>(info.Cast()));
            }
            finally
            {
                if (pointer != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(pointer);
                }
            }
        });