docs: def get_string_u_at_rva(self, rva, max_length = 2**16):
          """Get an Unicode string located at the given address."""
          
          try:
              # If the RVA is invalid all would blow up. Some EXEs seem to be
              # specially nasty and have an invalid RVA.
              data = self.get_data(rva, 2)
          except PEFormatError, e:
              return None
          
          #length = struct.unpack('<H', data)[0]
          
          s = u''
          for idx in xrange(max_length):
              try:
                  uchr = struct.unpack('<H', self.get_data(rva+2*idx, 2))[0]
              except struct.error:
                  break
              
              if unichr(uchr) == u'\0':
                  break
              s += unichr(uchr)
          
          return s