public override IntPtr Read(IntPtr hModule, IntPtr lpRes) { _resources = new Dictionary <string, ResourceTable>(); IntPtr pFixedFileInfo = _header.Read(lpRes); _fixedfileinfo = (Kernel32.VS_FIXEDFILEINFO)Marshal.PtrToStructure( pFixedFileInfo, typeof(Kernel32.VS_FIXEDFILEINFO)); IntPtr pChild = ResourceUtil.Align(pFixedFileInfo.ToInt32() + _header.Header.wValueLength); while (pChild.ToInt32() < (lpRes.ToInt32() + _header.Header.wLength)) { ResourceTable rc = new ResourceTable(pChild); switch (rc.Key) { case "StringFileInfo": rc = new StringFileInfo(pChild); break; default: rc = new VarFileInfo(pChild); break; } _resources.Add(rc.Key, rc); pChild = ResourceUtil.Align(pChild.ToInt32() + rc.Header.wLength); } return(new IntPtr(lpRes.ToInt32() + _header.Header.wLength)); }
public override IntPtr Read(IntPtr hModule, IntPtr lpRes) { _resources = new Dictionary<string, ResourceTable>(); IntPtr pFixedFileInfo = _header.Read(lpRes); _fixedfileinfo = (Kernel32.VS_FIXEDFILEINFO)Marshal.PtrToStructure( pFixedFileInfo, typeof(Kernel32.VS_FIXEDFILEINFO)); IntPtr pChild = ResourceUtil.Align(pFixedFileInfo.ToInt32() + _header.Header.wValueLength); while (pChild.ToInt32() < (lpRes.ToInt32() + _header.Header.wLength)) { ResourceTable rc = new ResourceTable(pChild); switch (rc.Key) { case "StringFileInfo": rc = new StringFileInfo(pChild); break; default: rc = new VarFileInfo(pChild); break; } _resources.Add(rc.Key, rc); pChild = ResourceUtil.Align(pChild.ToInt32() + rc.Header.wLength); } return new IntPtr(lpRes.ToInt32() + _header.Header.wLength); }