susa se non sono abbastanza chiaro ma sono in confusione completa...
gli eventi per cui dovrebbe ritornare sono 2:
il primo è quello nel caso in cui viene modificato un file nella directory (come nell'esempio del link da te postato)
il secondo dovrebbe essere quello dovuto alla chiamata da parte di un altro thread della funzione setevent() che "segnala" l'evento.

nella struttura OVERLAPPED passata alla readdirectorychangesw() c'è un campo hEvent...avevo pensato che inizializzando tale campo usando la openevent() con lo stesso nome utilizzato per l'evento dal'altro thread, potesse essere utile per il secondo caso, ma non sembra funzionare,anche specificando una completionroutine. In particolare se specifico questi due argomenti la readdirectorychangesw() esce subito anche se non è avvenuto niente e fa l'istruzione successiva senza fare la completion routine.