示例#1
0
 def _parseBytes(self, bytes):
     offset = 0
     mysize, valsize, vstype = struct.unpack('<HHH', bytes[:6])
     offset += 6
     offset, vinfosig = self._eatStringAndAlign(bytes, offset)
     if vinfosig != 'VS_VERSION_INFO':
         Exception('Invalid VS_VERSION_INFO signature!')
     if valsize:
         ffinfo = vs_pe.VS_FIXEDFILEINFO()
         ffinfo.vsParse(bytes[offset:offset+valsize])
     offset += valsize
     self._stringFileInfo(bytes, offset)
示例#2
0
    def _parseBytes(self, bytes):
        offset = 0
        mysize, valsize, vstype = struct.unpack('<HHH', bytes[:6])
        offset += 6
        offset, vinfosig = self._eatStringAndAlign(bytes, offset)
        if vinfosig != 'VS_VERSION_INFO':
            Exception('Invalid VS_VERSION_INFO signature!: %s' % repr(vinfosig))

        if valsize and valsize >= len(vs_pe.VS_FIXEDFILEINFO()):
            ffinfo = vs_pe.VS_FIXEDFILEINFO()
            ffinfo.vsParse(bytes[offset:offset+valsize])

        offset += valsize
        offmod = offset % 4
        if offmod:
            offset += (4 - offmod)

        xmax = min(mysize, len(bytes))
        i = 0
        while offset < xmax and i < 2:
            offset = self._stringFileInfo(bytes, offset)
            i += 1