private RegRtElem17 ParseRtStream(Stream rtxStream, RegMemElem17 mem) { if (mem.rtxOffset == 0) { return new RegRtElem17 { value = null, no = 0, unknown = 2, } } ; using (BinaryReader binStream = new BinaryReader(rtxStream, Encoding.Default, true)) { rtxStream.Seek(mem.rtxOffset - 1, SeekOrigin.Begin); return(new RegRtElem17 { value = binStream.ReadBytes(mem.rtxLength - sizeof(int) - sizeof(byte)), no = binStream.ReadInt32(), unknown = binStream.ReadByte() }); } } #endregion }
public virtual void UpdateMember(RegistryMemberBase member, RegMemElem17 mem, RegRtElem17 rt) { #if DEBUG && !DEBUG_IN_PROD LogTo.Debug("[{0} {1}] Updating \"{member.Name}\"", member.GetType().Name, member.Id); #endif if (mem.rtxOffset == 0) { member.Empty = true; return; } member.UseCount = mem.useCount; member.LinkType = (RegistryLinkType)mem.linkType; member.RtxOffset = mem.rtxOffset; member.RtxLength = mem.rtxLength; if (rt != null) { member.RtxId = rt.no; member.RtxValue = Encoding.UTF8.GetString(rt.value); } member.SlotIdOrOffset = mem.slotIdOrOffset; member.SlotLengthOrConceptGroupId = mem.slotLengthOrConceptGroup; }
protected void Commit(int id, RegMemElem17 mem, RegRtElem17 rtxOrRtf) { var member = _registry.Get(id); try { if (member == null) { member = _registry.CreateInternal(id); SetupMember(member, mem, rtxOrRtf); } else { UpdateMember(member, mem, rtxOrRtf); } } finally { _onMemberCreatedOrUpdated(member); } }
public virtual void SetupMember(RegistryMemberBase member, RegMemElem17 mem, RegRtElem17 rt) { member.UseCount = mem.useCount; member.LinkType = (RegistryLinkType)mem.linkType; member.RtxId = rt.no; member.RtxOffset = mem.rtxOffset; member.RtxLength = mem.rtxLength; if (rt.value != null) { member.RtxValue = Encoding.UTF8.GetString(rt.value); } member.SlotIdOrOffset = mem.slotIdOrOffset; member.SlotLengthOrConceptGroupId = mem.slotLengthOrConceptGroup; member.Empty = member.RtxValue == null; }