Vestris.ResourceLib.VersionResource.Read C# (CSharp) Method

Read() private method

Read a version resource from a previously loaded module.
private Read ( IntPtr hModule, IntPtr lpRes ) : IntPtr
hModule System.IntPtr Module handle.
lpRes System.IntPtr Pointer to the beginning of the resource.
return System.IntPtr
        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);
        }