Why glReadPixels() does not work in software mode

I guess this is because of that software realization renders an image into another place? Is it true?
Actually, I need to get that rendered image to save it into a file. The problem is that some graphics is drawn by another application, so I can’t force it, e.g., to draw on my memory DC, as I usually do in my own programms.

Thanks for any help or ideas!
Best regards!