From b7eb39203aea8915f5f4ad0583a7773cc6e1b4f7 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 17 Nov 2013 20:24:55 +0100 Subject: [PATCH] Add Stream resource type --- de4dot.code/resources/BuiltInResourceData.cs | 2 ++ de4dot.code/resources/ResourceDataCreator.cs | 4 ++++ de4dot.code/resources/ResourceReader.cs | 1 + de4dot.code/resources/ResourceTypeCode.cs | 1 + 4 files changed, 8 insertions(+) diff --git a/de4dot.code/resources/BuiltInResourceData.cs b/de4dot.code/resources/BuiltInResourceData.cs index 9c2b1d05..66164eff 100644 --- a/de4dot.code/resources/BuiltInResourceData.cs +++ b/de4dot.code/resources/BuiltInResourceData.cs @@ -109,6 +109,7 @@ namespace de4dot.code.resources { break; case ResourceTypeCode.ByteArray: + case ResourceTypeCode.Stream: var ary = (byte[])data; writer.Write(ary.Length); writer.Write(ary); @@ -143,6 +144,7 @@ namespace de4dot.code.resources { return string.Format("{0}: '{1}'", code, data); case ResourceTypeCode.ByteArray: + case ResourceTypeCode.Stream: var ary = data as byte[]; if (ary != null) return string.Format("{0}: Length: {1}", code, ary.Length); diff --git a/de4dot.code/resources/ResourceDataCreator.cs b/de4dot.code/resources/ResourceDataCreator.cs index c1026a26..cad6723d 100644 --- a/de4dot.code/resources/ResourceDataCreator.cs +++ b/de4dot.code/resources/ResourceDataCreator.cs @@ -112,6 +112,10 @@ namespace de4dot.code.resources { return new BuiltInResourceData(ResourceTypeCode.ByteArray, value); } + public BuiltInResourceData CreateStream(byte[] value) { + return new BuiltInResourceData(ResourceTypeCode.Stream, value); + } + public CharArrayResourceData Create(char[] value) { return new CharArrayResourceData(CreateUserResourceType(CharArrayResourceData.typeName), value); } diff --git a/de4dot.code/resources/ResourceReader.cs b/de4dot.code/resources/ResourceReader.cs index 5e7fb105..6c515123 100644 --- a/de4dot.code/resources/ResourceReader.cs +++ b/de4dot.code/resources/ResourceReader.cs @@ -139,6 +139,7 @@ namespace de4dot.code.resources { case ResourceTypeCode.DateTime: return resourceDataCreator.Create(new DateTime(reader.ReadInt64())); case ResourceTypeCode.TimeSpan: return resourceDataCreator.Create(new TimeSpan(reader.ReadInt64())); case ResourceTypeCode.ByteArray: return resourceDataCreator.Create(reader.ReadBytes(reader.ReadInt32())); + case ResourceTypeCode.Stream: return resourceDataCreator.CreateStream(reader.ReadBytes(reader.ReadInt32())); default: int userTypeIndex = (int)(code - (uint)ResourceTypeCode.UserTypes); if (userTypeIndex < 0 || userTypeIndex >= userTypes.Count) diff --git a/de4dot.code/resources/ResourceTypeCode.cs b/de4dot.code/resources/ResourceTypeCode.cs index 7e34e199..cb20ab80 100644 --- a/de4dot.code/resources/ResourceTypeCode.cs +++ b/de4dot.code/resources/ResourceTypeCode.cs @@ -37,6 +37,7 @@ namespace de4dot.code.resources { DateTime, TimeSpan, ByteArray = 0x20, + Stream = 0x21, UserTypes = 0x40, } }