/// <summary>
        /// 编辑Dos设备的Stoken;
        /// </summary>
        /// <param name="deviceStoken"></param>
        /// <param name="xElem">案件文件相关Xml元素</param>
        private static void EditStokenOnDos(
            DeviceStoken deviceStoken,
            IUnmanagedBasicDeviceManager entity)
        {
            if (deviceStoken == null)
            {
                throw new ArgumentNullException(nameof(deviceStoken));
            }

            var dosDeviceInfo = new DOSDeviceInfo();

            try {
                deviceStoken.TypeGuid  = Constants.DeviceType_DOS;
                deviceStoken.PartsType = Constants.PartsType_DOS;

                //获取Dos链表;
                var partPtr       = Partition_Get_DosPTable(entity.BasicDevicePtr);
                var partNode      = partPtr;
                var infoDiskIndex = 0;

                while (partNode != IntPtr.Zero)
                {
                    var dosPTable   = partNode.GetStructure <StDosPTable>();
                    var dosPartInfo = new DOSPartInfo {
                        DosPTable = new DosPTable(dosPTable)
                    };

                    if (dosPTable.Info != IntPtr.Zero)
                    {
                        var stInfoDisk = dosPTable.Info.GetStructure <StInFoDisk>();
                        dosPartInfo.InfoDisk = new InfoDisk(stInfoDisk)
                        {
                            InternalDisplayName = $"{LanguageService.FindResourceString(Constants.DisplayName_InfoDisk)}{++infoDiskIndex}"
                        };
                    }

                    dosDeviceInfo.DosPartInfos.Add(dosPartInfo);
                    partNode = dosPTable.next;
                }

                EditDosPartEntries(dosDeviceInfo, deviceStoken);

                //编辑拓展;
                deviceStoken.SetInstance(dosDeviceInfo, Constants.DeviceStokenTag_DOSDeviceInfo);
            }
            catch (Exception ex) {
                LoggerService.WriteCallerLine(ex.Message);
            }
        }
        /// <summary>
        /// 获取分区表类型;
        /// </summary>
        /// <param name="stream">流</param>
        /// <returns></returns>
        private static InnerPartsType?GetPartsType(Stream stream)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            InnerPartsType?pType = null;
            IUnmanagedBasicDeviceManager unManagedManager = null;

            try {
                unManagedManager = UnMgdBasicDeviceManagerFactory.Create(stream);
            }
            catch (Exception ex) {
                LoggerService.WriteCallerLine(ex.Message);
            }

            if (unManagedManager == null)
            {
                LoggerService.WriteCallerLine($"{nameof(unManagedManager)} can't be null.");
                pType = null;
            }

            //判断是否是符合"签名";
            try {
                if (unManagedManager.BasicDevicePtr == IntPtr.Zero)
                {
                    LoggerService.WriteCallerLine($"{nameof(unManagedManager.BasicDevicePtr)} can't be nullptr.");
                }
                else if (Partition_B_Dos(unManagedManager.BasicDevicePtr))
                {
                    pType = InnerPartsType.DOS;
                }
                else if (Partition_B_Gpt(unManagedManager.BasicDevicePtr))
                {
                    pType = InnerPartsType.GPT;
                }
            }
            catch (Exception ex) {
                LoggerService.WriteCallerLine(ex.Message);
            }

            unManagedManager?.Dispose();

            return(pType);
        }
        /// <summary>
        /// 编辑GPT设备的Stoken;
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="name"></param>
        /// <param name="xElem"></param>
        /// <param name="reporter"></param>
        /// <returns></returns>
        private static void EditStokenOnGpt(DeviceStoken deviceStoken, IUnmanagedBasicDeviceManager entity)
        {
            if (deviceStoken == null)
            {
                throw new ArgumentNullException(nameof(deviceStoken));
            }

            var gptDeviceInfo = new GPTDeviceInfo();

            try {
                deviceStoken.TypeGuid  = Constants.DeviceType_GPT;
                deviceStoken.PartsType = Constants.PartsType_GPT;

                //获取GPT链表;
                var partPtr        = Partition_Get_GptPTable(entity.BasicDevicePtr);
                var partNode       = partPtr;
                var infoDiskIndex  = 0;
                var efiInfoIndex   = 0;
                var efiPTableIndex = 0;

                while (partNode != IntPtr.Zero)
                {
                    var gptPTable   = partNode.GetStructure <StGptPTable>();
                    var gptPartInfo = new GPTPartInfo {
                        StGptPTable = gptPTable
                    };

                    if (gptPTable.InfoDisk != IntPtr.Zero)
                    {
                        var stInfoDisk = gptPTable.InfoDisk.GetStructure <StInFoDisk>();
                        gptPartInfo.InfoDisk = new InfoDisk(stInfoDisk)
                        {
                            InternalDisplayName = $"{LanguageService.FindResourceString(Constants.DisplayName_InfoDisk)}{++infoDiskIndex}"
                        };
                    }

                    if (gptPTable.EFIInfo != IntPtr.Zero)
                    {
                        var stEFIInfo = gptPTable.EFIInfo.GetStructure <StEFIInfo>();
                        gptPartInfo.EFIInfo = new EFIInfo(stEFIInfo)
                        {
                            InternalDisplayName = $"{LanguageService.FindResourceString(Constants.DisplayName_EFIInfo)}{++efiInfoIndex}"
                        };
                    }

                    if (gptPTable.EFIPTable != IntPtr.Zero)
                    {
                        var stEFITable = gptPTable.EFIPTable.GetStructure <StEFIPTable>();
                        gptPartInfo.EFIPTable = new EFIPTable(stEFITable)
                        {
                            InternalDisplayName = $"{LanguageService.FindResourceString(Constants.DisplayName_EFIPTable)}{++efiPTableIndex}"
                        };
                    }

                    gptDeviceInfo.GptPartInfos.Add(gptPartInfo);
                    partNode = gptPTable.next;
                }

                EditGptPartEntries(gptDeviceInfo, deviceStoken);

                //编辑拓展;
                deviceStoken.SetInstance(gptDeviceInfo, Constants.DeviceStokenTag_GPTDeviceInfo);
            }
            catch (Exception ex) {
                LoggerService.WriteCallerLine(ex.Message);
            }
        }