誘導されてきました

フォルダの中のファイルの監視をしたいのですが
下のコードを実行して c:\test フォルダ内のファイルの内容を変更すると
メッセージボックスが二回表示されてしまいます。
変更は一回しかしていないのに二回でてしまうのですが
ここまでコードを短くしても出るので行き詰まってしまいました
二回検知してしまう動作が正しいのでしょうか?
どこかおかしくて二回出てしまうのならばご指摘お願いします。

HANDLE hFind = FindFirstChangeNotification( "C:\\test\0", FALSE, FILE_NOTIFY_CHANGE_SIZE );
if( hFind == INVALID_HANDLE_VALUE )
  return;

while( 1 )
{
  DWORD ret = WaitForSingleObject( hFind , INFINITE );
  if( ret == WAIT_OBJECT_0 )
  {
    MessageBox( NULL, "TEST", "Changed!", MB_OK );
    if( FindNextChangeNotification( hFind ) == 0 )
      return;
  }
}
FindCloseChangeNotification( hFind );