Example #1
0
        private static Dictionary <int, ReplPropertyMetaDataItem> ConvertByteToMetaDataInfo(byte[] data)
        {
            var output = new Dictionary <int, ReplPropertyMetaDataItem>();
            //Trace.WriteLine("Beginning to analyze a replpropertymetadata data " + Convert.ToBase64String(data));
            int version = BitConverter.ToInt32(data, 0);

            if (version != 1)
            {
                Trace.WriteLine("trust info version incompatible : " + version);
                return(output);
            }
            int recordcount = BitConverter.ToInt32(data, 8);
            //Trace.WriteLine("Number of records to analyze: " + recordcount);
            int pointer = 16;

            for (int i = 0; i < recordcount; i++)
            {
                var item = new ReplPropertyMetaDataItem();
                item.AttrType = BitConverter.ToInt32(data, pointer);
                item.Version  = BitConverter.ToInt32(data, pointer + 4);
                long filetime = BitConverter.ToInt64(data, pointer + 8) * 10000000;
                item.LastOriginatingChange = DateTime.FromFileTime(filetime);
                byte[] guid = new byte[16];
                Array.Copy(data, pointer + 16, guid, 0, 16);
                item.LastOriginatingDsaInvocationID = new Guid(guid);
                item.UsnOriginatingChange           = BitConverter.ToInt64(data, pointer + 32);
                item.UsnLocalChange   = BitConverter.ToInt64(data, pointer + 40);
                pointer              += 48;
                output[item.AttrType] = item;
            }
            return(output);
        }
Example #2
0
        private static Dictionary <string, ReplPropertyMetaDataItem> ConvertStringArrayToMetaDataInfo(IEnumerable <string> data)
        {
            var output = new Dictionary <string, ReplPropertyMetaDataItem>();

            foreach (var xml in data)
            {
                var         metaData = new ReplPropertyMetaDataItem();
                XmlDocument doc      = new XmlDocument();
                doc.LoadXml(xml.Replace('\0', ' '));
                foreach (XmlNode child in doc.DocumentElement.ChildNodes)
                {
                    switch (child.Name)
                    {
                    case "pszAttributeName":
                        metaData.AttrName = child.InnerText;
                        break;

                    case "dwVersion":
                        metaData.Version = int.Parse(child.InnerText);
                        break;

                    case "ftimeLastOriginatingChange":
                        metaData.LastOriginatingChange = DateTime.Parse(child.InnerText);
                        break;

                    case "uuidLastOriginatingDsaInvocationID":
                        metaData.LastOriginatingDsaInvocationID = new Guid(child.InnerText);
                        break;

                    case "usnOriginatingChange":
                        metaData.UsnOriginatingChange = long.Parse(child.InnerText);
                        break;

                    case "usnLocalChange":
                        metaData.UsnLocalChange = long.Parse(child.InnerText);
                        break;

                    case "pszLastOriginatingDsaDN":
                        //metaData.LastOriginatingDsaInvocationID = child.InnerText;
                        break;
                    }
                }
                if (!String.IsNullOrEmpty(metaData.AttrName))
                {
                    output[metaData.AttrName] = metaData;
                }
            }
            return(output);
        }