>>906
公式のドキュメントにあるようなことを一々説明するのは質問者をバカにしている
みたいなので嫌なんだけど・・・

OVERLAPPED ol;
ol.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL)

と OVERLAPPED 構造体を用意しておいて、FILE_FLAGS_OVERLAPPED 付きで
作成した hDirectory と供に ReadDirectoryChanges を呼ぶと、即座に帰ってきて、
帰り値はエラー、エラーコード(GetLastErrorで得られる)は、ERROR_IO_PENDING
になる(と思う)。

んでその後 WaitForMultipleObject で、任意の hEvent と先の ol.hEvent の2つを
待つと、ReadDirectoryChanges が完了したとき、あるいは任意の hEvent が他の
スレッドからsetされたとき、のいずれかの場合にwaitが完了する。

っていうか >>907 にサンプルコードがあるから、どの行がわからないのかを書いて
みると良いと思う。