次の方法で共有


FindFirstChangeNotificationA 関数 (fileapi.h)

変更通知ハンドルを作成し、最初の変更通知フィルター条件を設定します。 指定したディレクトリまたはサブツリーでフィルター条件に一致する変更が発生すると、通知ハンドルの待機は成功します。 この関数は、指定したディレクトリ自体への変更を報告しません。

この関数は、待機条件を満たす変更を示しません。 通知の一部として特定の変更に関する情報を取得するには、
ReadDirectoryChangesW 関数を します。

構文

HANDLE FindFirstChangeNotificationA(
  [in] LPCSTR lpPathName,
  [in] BOOL   bWatchSubtree,
  [in] DWORD  dwNotifyFilter
);

パラメーター

[in] lpPathName

監視するディレクトリの完全なパス。

相対パスまたは空の文字列を指定することはできません。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

[in] bWatchSubtree

このパラメーターが TRUE場合、関数は指定されたディレクトリにルート化されたディレクトリ ツリーを監視します。FALSE場合は、指定したディレクトリのみを監視します。

[in] dwNotifyFilter

変更通知待機を満たすフィルター条件。 このパラメーターには、次の値のうち 1 つ以上を指定できます。

価値 意味
FILE_NOTIFY_CHANGE_FILE_NAME
0x00000001
監視対象のディレクトリまたはサブツリーでファイル名を変更すると、変更通知待機操作が返されます。 変更には、ファイル名の名前変更、作成、または削除が含まれます。
FILE_NOTIFY_CHANGE_DIR_NAME
0x00000002
監視対象のディレクトリまたはサブツリーでディレクトリ名を変更すると、変更通知待機操作が返されます。 変更には、ディレクトリの作成または削除が含まれます。
FILE_NOTIFY_CHANGE_ATTRIBUTES
0x00000004
監視対象のディレクトリまたはサブツリーの属性を変更すると、変更通知の待機操作が返されます。
FILE_NOTIFY_CHANGE_SIZE
0x00000008
監視対象のディレクトリまたはサブツリーでファイル サイズを変更すると、変更通知の待機操作が返されます。 オペレーティング システムは、ファイルがディスクに書き込まれる場合にのみ、ファイル サイズの変更を検出します。 広範なキャッシュを使用するオペレーティング システムでは、キャッシュが十分にフラッシュされている場合にのみ検出が行われます。
FILE_NOTIFY_CHANGE_LAST_WRITE
0x00000010
監視ディレクトリまたはサブツリー内のファイルの最後の書き込み時刻を変更すると、変更通知の待機操作が返されます。 オペレーティング システムは、ファイルがディスクに書き込まれたときにのみ、最後の書き込み時刻への変更を検出します。 広範なキャッシュを使用するオペレーティング システムでは、キャッシュが十分にフラッシュされている場合にのみ検出が行われます。
FILE_NOTIFY_CHANGE_SECURITY
0x00000100
監視対象のディレクトリまたはサブツリーでセキュリティ記述子を変更すると、変更通知待機操作が返されます。

戻り値

関数が成功した場合、戻り値は検索変更通知オブジェクトへのハンドルです。

関数が失敗した場合、戻り値は INVALID_HANDLE_VALUE。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

待機関数 は、FindFirstChangeNotification 関数によって返されるハンドルを使用して、指定したディレクトリまたはサブツリーを監視できます。 監視対象のディレクトリまたはサブツリーでフィルター条件のいずれかが発生すると、待機が満たされます。

待機が満たされた後、アプリケーションはこの条件に応答し、FindNextChangeNotification 関数と適切な待機関数を呼び出してディレクトリの監視を続行できます。 ハンドルが不要になったら、FindCloseChangeNotification 関数を使用してハンドルを閉じることができます。

リモート ファイル システム FindFirstChangeNotification を呼び出すときに、通知が返されない場合があります。

シンボリック リンクの動作 - パスがシンボリック リンクを指している場合、ターゲットの通知ハンドルが作成されます。

シンボリック・リンクを含むディレクトリーの変更通知を受け取るためにアプリケーションが登録されている場合、アプリケーションは、シンボリック・リンクが変更されたときにのみ通知され、ターゲット・ファイルは通知されません。

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 透過的フェールオーバー (TFO) はい
SMB 3.0 とスケールアウト ファイル共有 (SO) はい
クラスター共有ボリューム ファイル システム (CsvFS) 解説を参照
回復性のあるファイル システム (ReFS) はい
 

CsvFs の一時停止/再開時に、アプリケーションで誤検知が発生する可能性があります。

例については、「ディレクトリChange_Notificationsの取得」を参照してください。

手記

fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして FindFirstChangeNotification を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー fileapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

ディレクトリ管理機能の

FindCloseChangeNotification

FindNextChangeNotification の

ReadDirectoryChangesW