internal override IntPtr Read(IntPtr hModule, IntPtr lpRes)
{
_resources.Clear();
IntPtr pFixedFileInfo = _header.Read(lpRes);
if (_header.Header.wValueLength != 0)
{
_fixedfileinfo = new FixedFileInfo();
_fixedfileinfo.Read(pFixedFileInfo);
}
IntPtr pChild = ResourceUtil.Align(pFixedFileInfo.ToInt64() + _header.Header.wValueLength);
while (pChild.ToInt64() < (lpRes.ToInt64() + _header.Header.wLength))
{
ResourceTableHeader rc = new ResourceTableHeader(pChild);
switch (rc.Key)
{
case "StringFileInfo":
StringFileInfo sr = new StringFileInfo(pChild);
rc = sr;
break;
default:
rc = new VarFileInfo(pChild);
break;
}
_resources.Add(rc.Key, rc);
pChild = ResourceUtil.Align(pChild.ToInt64() + rc.Header.wLength);
}
return new IntPtr(lpRes.ToInt64() + _header.Header.wLength);
}