Пример #1
0
        public void AddCustomEntry()
        {
            var b = new DebugDirectoryBuilder();

            b.AddEntry((DebugDirectoryEntryType)0xA1, version: 0x12345678, stamp: 0xB1C1D1E1);

            b.AddEntry((DebugDirectoryEntryType)0xA2, version: 0xFFFFFFFF, stamp: 0xFFFFFFFF, (a: 1, b: 2), (builder, data) =>
            {
                builder.WriteInt32(data.a);
                builder.WriteInt32(data.b);
            });

            var blob = new BlobBuilder();

            b.Serialize(blob, new SectionLocation(0x1000, 0x2000), 0x50);
            AssertEx.Equal(new byte[]
            {
                0x00, 0x00, 0x00, 0x00, // Characteristics
                0xE1, 0xD1, 0xC1, 0xB1, // Stamp
                0x78, 0x56, 0x34, 0x12, // Version
                0xA1, 0x00, 0x00, 0x00, // Type
                0x00, 0x00, 0x00, 0x00, // SizeOfData
                0x00, 0x00, 0x00, 0x00, // AddressOfRawData
                0x00, 0x00, 0x00, 0x00, // PointerToRawData

                0x00, 0x00, 0x00, 0x00, // Characteristics
                0xFF, 0xFF, 0xFF, 0xFF, // Stamp
                0xFF, 0xFF, 0xFF, 0xFF, // Version
                0xA2, 0x00, 0x00, 0x00, // Type
                0x08, 0x00, 0x00, 0x00, // SizeOfData
                0x88, 0x10, 0x00, 0x00, // AddressOfRawData
                0x88, 0x20, 0x00, 0x00, // PointerToRawData

                // data
                0x01, 0x00, 0x00, 0x00,
                0x02, 0x00, 0x00, 0x00
            }, blob.ToArray());
        }