/// <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> /// 编辑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); } }