code: def ReadBytes(self, address, num_bytes):
      
      address = int(address)
      buf = ctypes.create_string_buffer(num_bytes)
      bytesread = ctypes.c_size_t(0)
      res = ReadProcessMemory(self.h_process, address, buf, num_bytes,
                              ctypes.byref(bytesread))
      if res == 0:
        err = wintypes.GetLastError()
        if err == 299:
          # Only part of ReadProcessMemory has been done, let's return it.
          return buf.raw[:bytesread.value]
        raise process_error.ProcessError("Error in ReadProcessMemory: %d" % err)
  
      return buf.raw[:bytesread.value]
docs: Reads at most num_bytes starting from offset <address>.