XQueryTree() - query window tree information
Status XQueryTree (Display *display,
Window w, Window *root_return,
Window *parent_return,
Window **children_return,
unsigned int *nchildren_return)
The XQueryTree(3) function returns the root ID, the parent window ID, a pointer to the list of children windows, and the number of children in the list for the specified window. The children are listed in current stacking order, from bottommost (first) to topmost (last). XQueryTree(3) returns zero if it fails and nonzero if it succeeds. To free this list when it is no longer needed, use XFree(3).
This really should return a screen *, not a root window ID.
XFree()
Xlib