Screen and Windowing screenshots are pixels read from a source and then copied into a buffer. You can then manipulate as required; it can be simply written to a file or used in other windows or displays.
The Screen and Windowing API reads pixels from the source and copies pixels into a provided buffer to capture the screenshot. The buffer can be either a pixmap or a window buffer, but must have the usage flag of type SCREEN_USAGE_NATIVE set. The choice of whether to use a pixmap buffer or a window buffer depends on the application of the screenshot after it is taken. For example, you may choose to use a pixmap buffer for your screenshot if you need to capture an image to be used in a different window or on a different display.
The screen_read_window() function captures a screenshot of the a window. There are no contraints on the context for this function call, but you must have used either screen_create_window() function or screen_create_window_type() function to create the window that's the target of this screenshot. When capturing screenshots of multiple unrelated windows, you will need to make a screen_read_window() function call per window.