Finding all paths between a set of vertices in a DAG
Any algorithm for your problem will have to take exponential time in the worst case.  However, if you're willing to live with this, there is a straightforward recursive algorithm to solve your problem.  Details below.

Generalizing a little bit, your problem is essentially the following:

Input: a dag $G=(V,E)$, three sets $S_0,S_1,S_2 \subseteq V$ of vertices

Output: the set of all paths that start some element of $S_0$, end at some element of $S_1$, and all of whose intermediate vertices are from $S_2$

To see the relationship to your problem statement, let $S_0$ be the set of vertices that are reachable from vRoot and also contained in vSet; let $S_1$ be vSet; and let $S_2$ be the complement of vSet.

There is no efficient algorithm for this problem, because in the worst case there could be exponentially many such paths.  Therefore, any algorithm to print all such paths will necessarily have to take exponential time, in the worst case.  Of course you could build algorithms that are efficient on some inputs, but no algorithm will be efficient on all possible inputs.

However if you are willing to live with this limitation, here is an approach you could use.  Basically, it's easy to come up with a recursive algorithm for this problem:


Compute the set $S_0$ of vertices that are reachable from vRoot and are contained in vSet.  This can be found in linear time using DFS or BFS.  You can also compute $S_1$ and $S_2$ in linear time.
Enumerate all paths of the desired form recursively.  We will build a procedure $F$ so that, for a vertex $v \in V$, $F(v)$ returns the set of all paths that start at vertex $v$ and end at some vertex in $S_1$ and where all other nodes (the intermediate nodes) are all within $S_2$.  You can compute $F$ via a simple recursive procedure:


For each $w \in S_2$ such that there is an edge $(v,w) \in E$, compute $F(w)$.
Now we can return $$F(v) = B(v) \cup B'(v) \cup \{v@p : w \in S_2, (v,w) \in E, p \in F(w)\},$$

where $v@p$ denotes the path that starts at $v$, goes to $w$, and then follows the path $p$; and where $B(v),B'(v)$ are defined as follows:


if $v \in S_1$, then $B(v)$ is a singleton set containing the path of length 0 that starts at $v$ and stops there; if $v \notin S_1$, then $B(v)$ is the empty set.
$B'(v) = \{v \to w : w \in S_1, (v,w) \in E\}$.


Finally, calculate $F(v)$ for each $v \in S_0$ and output the union of all of those paths.
For better performance, I recommend that you use memoization to avoid ever calculating $F(v)$ more than once for any particular vertex $v$.


This immediately gives you a recursive algorithm that solves your problem, and whose running time is linear in the size of the graph plus the size of the desired output.  In other words, this algorithm is about as efficient as you could possibly hope for, given the problem statement.