<Return[F]><Top>

FindFirstChangeNotification

Declare Function Api_FindFirstChangeNotification& Lib "kernel32" Alias "FindFirstChangeNotificationA" (ByVal lpPathName$, ByVal bWatchSubtree&, ByVal dwNotifyFilter&)

Declare Function FindFirstChangeNotification Lib "kernel32" Alias "FindFirstChangeNotificationA" (ByVal lpPathName As String, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long) As Long

変更通知ハンドルを作成し、変更通知の初期フィルタ条件を設定する。指定されたディレクトリやサブツリーで変更内容がフィルタ条件と一致すると、変更通知ハンドルの待機状態が完了する。

パラメータ
lpPathName
    監視するディレクトリへのパスを表す、NULL で終わる文字列へのポインタを指定する。
bWatchSubtree
    この関数でディレクトリやディレクトリツリーを監視するかどうかを指定する。

    TRUE を指定すると、指定したディレクトリの下にあるディレクトリツリーを監視する。

    FALSE を指定すると、指定したディレクトリだけを監視する。
dwNotifyFilter
    変更通知の待機操作を満たすフィルタ条件として、次のうち 1 つ以上の値を指定する。
    値                                                            意味                                                                                                            
    FILE_NOTIFY_CHANGE_FILE_NAME 監視中のディレクトリ、またはサブツリーでファイル名が変更されると、変更通知の待機操作
  から制御が戻る。ファイル名の変更とは、ファイル名の再作成( 変更)、作成、削除を
  指す。
    FILE_NOTIFY_CHANGE_DIR_NAME 監視中のディレクトリ、またはサブツリーでディレクトリ名が変更されると、変更通知の待機操
  作から制御が戻る。ディレクトリ名の変更とは、ディレクトリの作成と削除を指す。
    FILE_NOTIFY_CHANGE_ATTRIBUTES 監視中のディレクトリ、またはサブツリーで属性が変更されると、変更通知の待機操作から
  制御が戻る。
    FILE_NOTIFY_CHANGE_SIZE 監視中のディレクトリまたはサブツリーでファイルサイズが変更されると、変更通知の待機操
  作から制御が戻る。オペレーティングシステムがファイルサイズの変更を検出できるのは、フ
  ァイルがディスクに書き込まれたときだけである。拡張キャッシュを使うオペレーティングシステ
  ムでファイルサイズの変更が検出されるのは、キャッシュが十分にフラッシュされたときだけで
  ある。
    FILE_NOTIFY_CHANGE_LAST_WRITE 監視中のディレクトリまたはサブツリーでファイルに対する前回の書き込み日時が変更される
  と、変更通知の待機操作から制御が戻る。オペレーティングシステムでファイルに対する前
  回の書き込み日時の変更が検出されるのは、ファイルがディスクに書き込まれたときだけで
  ある。拡張キャッシュを使うオペレーティングシステムでファイルに対する前回の書き込み日時
  の変更が検出されるのは、キャッシュが十分にフラッシュされたときだけである。
    FILE_NOTIFY_CHANGE_SECURITY 監視中のディレクトリまたはサブツリーでセキュリティ記述子が変更されると、変更通知の待
  機操作から制御が戻る。


戻り値
    関数が成功すると、変更通知検索オブジェクトのハンドルが返る。
    関数が失敗すると、INVALID_HANDLE_VALUE が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    待機関数は、FindFirstChangeNotification 関数から返されるハンドルを使い、指定されたディレクトリ、またはサブツリーを監視する。

    監視中のディレクトリやサブツリーでフィルタ条件が 1 つでも満たされると待機操作が終了する。
    待機操作が終了すると、アプリケーションはこの条件に応答し、FindNextChangeNotification 関数とその他適切な関数を呼び出してディ

    レクトリの監視を続行することができる。

    ハンドルが不要になった場合は、FindCloseChangeNotification 関数を使って終了することができる。