예제 #1
0
        public INBTEntry Decode(BinaryData encodedData)
        {
            var parser = BinaryDataParser.OfValue(encodedData);

            return
                (INBTEntry.OfValue(
                     NID.OfValue(parser.TakeAndSkip(4)),
                     parser.TakeAtWithoutChangingStreamPosition(8, 16, brefDecoder)));
        }
예제 #2
0
파일: Folder.cs 프로젝트: phx255/PST
        private void TrackPreExistingChildren(int tableContextNodeType, ObjectTypes childObjectType)
        {
            var childrenTableContextNodePath = new[] { objectPath.LocalNodeId.ChangeType(tableContextNodeType) };

            foreach (var rowId in rowIndexReader.GetAllRowIds(childrenTableContextNodePath))
            {
                var childNodePath = objectPath.Add(NID.OfValue(rowId.RowId));

                objectTracker.TrackObject(childNodePath, childObjectType, ObjectStates.Loaded);
            }
        }
예제 #3
0
        public SIEntry Decode(BinaryData encodedData)
        {
            var parser = BinaryDataParser.OfValue(encodedData);

            var nodeId = parser.TakeAndSkip(8);

            return
                new SIEntry(
                    NID.OfValue(nodeId.Take(4)),
                    parser.TakeAndSkip(8, bidDecoder));
        }
예제 #4
0
        public static HNID OfValue(BinaryData encodedData)
        {
            var hid = HID.OfValue(encodedData);

            if (hid.Type == Constants.NID_TYPE_HID)
            {
                return(new HNID(hid));
            }

            return(new HNID(NID.OfValue(encodedData)));
        }
예제 #5
0
        public SLEntry Decode(BinaryData encodedData)
        {
            var parser = BinaryDataParser.OfValue(encodedData);

            var localNID = parser.TakeAndSkip(8);

            var subnodeBID = parser.TakeAndSkip(8);

            var subnodeNID = parser.TakeAndSkip(8);

            return
                (new SLEntry(
                     NID.OfValue(localNID.Take(4)),
                     bidDecoder.Decode(subnodeBID),
                     bidDecoder.Decode(subnodeNID)));
        }
예제 #6
0
        public LNBTEntry Decode(BinaryData encodedData)
        {
            var parser = BinaryDataParser.OfValue(encodedData);

            var nid = NID.OfValue(parser.TakeAndSkip(4));

            parser.TakeAndSkip(4);

            return
                (new LNBTEntry(
                     nid,
                     parser.TakeAndSkip(8, bidDecoder),
                     parser.TakeAndSkip(8, bidDecoder),
                     NID.OfValue(parser.TakeAndSkip(4)),
                     parser.TakeAndSkip(4)));
        }
예제 #7
0
파일: Message.cs 프로젝트: phx255/PST
        private void LoadPreExistingAttachments()
        {
            var entry = nodeEntryFinder.GetEntry(new[] { objectPath.LocalNodeId });

            if (entry.HasNoValue)
            {
                return;
            }

            var tableContextNodeId = entry.Value.GetChildOfType(Constants.NID_TYPE_ATTACHMENT_TABLE).LocalSubnodeId;

            foreach (var rowId in rowIndexReader.GetAllRowIds(new[] { objectPath.LocalNodeId, tableContextNodeId }))
            {
                objectTracker.TrackObject(objectPath.Add(NID.OfValue(rowId.RowId)), ObjectTypes.Attachment, ObjectStates.Loaded);
            }
        }
예제 #8
0
파일: Attachment.cs 프로젝트: phx255/PST
        private Maybe <NID> GetEmbeddedMessageNodeId()
        {
            var entry = nodeEntryFinder.GetEntry(new[] { objectPath.ParentObjectPath.LocalNodeId, objectPath.LocalNodeId });

            if (entry.HasNoValue)
            {
                return(Maybe <NID> .NoValue());
            }

            var attachMethodPropertyValue = GetProperty(MAPIProperties.PidTagAttachMethod);

            if (!attachMethodPropertyValue.HasValueAnd(v => v.Value.HasFlag(MAPIProperties.afEmbeddedMessage)))
            {
                return(Maybe <NID> .NoValue());
            }

            var attachDataObject = GetProperty(MAPIProperties.PidTagAttachDataObject);

            return(NID.OfValue(attachDataObject.Value.Value.Take(4)));
        }