code: def read_string(self, lpBaseAddress, nChars, fUnicode = False):
          
          if fUnicode:
              nChars = nChars * 2
          szString = self.read(lpBaseAddress, nChars)
          if fUnicode:
              szString = compat.unicode(szString, 'U16', 'ignore')
          return szString
docs: Reads an ASCII or Unicode string
          from the address space of the process.
  
          @see: L{peek_string}
  
          @type  lpBaseAddress: int
          @param lpBaseAddress: Memory address to begin reading.
  
          @type  nChars: int
          @param nChars: String length to read, in characters.
              Remember that Unicode strings have two byte characters.
  
          @type  fUnicode: bool
          @param fUnicode: C{True} is the string is expected to be Unicode,
              C{False} if it's expected to be ANSI.
  
          @rtype:  str, compat.unicode
          @return: String read from the process memory space.
  
          @raise WindowsError: On error an exception is raised.