次の方法で共有


FsRtlNotifyFullChangeDirectory マクロ (rxprocs.h)

FsRtlNotifyFullChangeDirectory ルーチンは、通知要求の通知構造を作成し、指定された通知リストに追加します。

構文

void FsRtlNotifyFullChangeDirectory(
  A1,
  A2,
  A3,
  A4,
  A5,
  A6,
  A7,
  A8,
  A9,
  A10
);

パラメーター

A1

現在のボリュームの通知リストの不透明な同期オブジェクトへのポインター。

A2

通知リストの先頭へのポインター。 リスト内の各要素は不透明な通知構造です。

A3

特定のファイル オブジェクトに属するように作成される通知構造を識別するためにファイル システムによって割り当てられた一意の値へのポインター。 TraverseCallback ルーチンが指定されている場合、FsContext はそのルーチンに NotifyContext パラメーターとして渡されます。

A4

この通知構造体に関連付けられているディレクトリの完全な名前を含む ANSI または Unicode 文字列へのポインター。 NotifyIrp が NULL 場合は無視されます。

A5

このディレクトリのすべてのサブディレクトリも監視する必要がある場合は、TRUE に設定します。 ディレクトリ自体のみを監視する場合は、FALSE に設定します。 NotifyIrp が NULL 場合は無視されます。

A6

TRUE 設定すると、ユーザー バッファーが無視され、ディレクトリが強制的に再び書き込まれます。 このアクションにより、操作が高速化されます。 NotifyIrp が NULL 場合は無視されます。

A7

保留中の通知 IRP のキューが完了する原因となるファイルまたはサブディレクトリへの変更の種類を指定するフラグのビットマスク。 使用可能なフラグ値を次に示します。

意味

FILE_NOTIFY_CHANGE_FILE_NAME

このディレクトリにファイルが追加、削除、または名前変更されました。

FILE_NOTIFY_CHANGE_DIR_NAME

サブディレクトリが作成、削除、または名前変更されました。

FILE_NOTIFY_CHANGE_NAME

このディレクトリの名前が変更されました。

FILE_NOTIFY_CHANGE_ATTRIBUTES

このファイルの属性の値 (最終アクセス時刻など) が変更されました。

FILE_NOTIFY_CHANGE_SIZE

このファイルのサイズが変更されました。

FILE_NOTIFY_CHANGE_LAST_WRITE

このファイルの最終変更時刻が変更されました。

FILE_NOTIFY_CHANGE_LAST_ACCESS

このファイルの最終アクセス時刻が変更されました。

FILE_NOTIFY_CHANGE_CREATION

このファイルの作成時間が変更されました。

FILE_NOTIFY_CHANGE_EA

このファイルの拡張属性が変更されました。

FILE_NOTIFY_CHANGE_SECURITY

このファイルのセキュリティ情報が変更されました。

FILE_NOTIFY_CHANGE_STREAM_NAME

このディレクトリにファイル ストリームが追加、削除、または名前変更されました。

FILE_NOTIFY_CHANGE_STREAM_SIZE

このファイル ストリームのサイズが変更されました。

FILE_NOTIFY_CHANGE_STREAM_WRITE

このファイル ストリームのデータが変更されました。

 

NotifyIrp が NULL 場合、 CompletionFilter は無視されます。

A8

通知の変更時に完了する IRP へのポインター。 NotifyIrp が NULL 場合は、このファイル オブジェクトによって表されるファイル ストリームが削除されていることを意味します。

A9

ディレクトリ ツリーで監視されているサブディレクトリで変更が発生したときに呼び出されるコールバック ルーチンへの省略可能なポインター。 これにより、ファイル システムはウォッチャーがそのディレクトリへの走査アクセス権を持っているかどうかを確認できます。 このような呼び出し元から提供されるルーチンは、次のように宣言されます。

NTSTATUS
(*PCHECK_FOR_TRAVERSE_ACCESS) (
    IN PVOID NotifyContext,                     // FsContext
    IN PVOID TargetContext,                     // Context pointer
    IN PSECURITY_SUBJECT_CONTEXT SubjectContext // SubjectContext
    );

TargetContext パラメーターの詳細については、fsRtlNotifyFullReportChangeTargetContext パラメーター参照してください。 NotifyIrp が NULL 場合、TraverseCallback は無視されます。

A10

TraverseCallbackに渡されるコンテキスト構造体へのポインター。 FsRtlNotifyFullChangeDirectory コンテキストを解放し、使用後に構造体を解放します。 NotifyIrp が NULL 場合は無視されます。 TraverseCallback ルーチンが指定されている場合、SubjectContext はそのルーチンに SubjectContext パラメーターとして渡されます。

戻り値

何一つ

備考

FsRtlNotifyFullChangeDirectory は、通知変更要求を受信したファイル システムによって呼び出されます。 この要求は、主要な関数コード IRP_MJ_DIRECTORY_CONTROL、マイナー関数コード IRP_MN_NOTIFY_CHANGE_DIRECTORYを持つ IRP として受信されます。

NotifyIrp が NULL 場合、FsRtlNotifyFullChangeDirectory は、このファイル オブジェクトを参照する保留中の IRP が通知リストに含まれているかどうかを確認し、存在する場合はSTATUS_DELETE_PENDINGで完了します。

NotifyIrp が NULL されていない場合、FsRtlNotifyFullChangeDirectory は次の処理を行います。

  • ファイル オブジェクトがクリーンアップを行ったかどうかを確認します。 その場合は、FsRtlNotifyFullChangeDirectory 状態STATUS_NOTIFY_CLEANUPで通知 IRP を完了します。
  • ファイル オブジェクトがクリーンアップを行っていない場合は、fsRtlNotifyFullChangeDirectory 、このボリュームの通知リストに、この変更の通知構造が既に含まれているかどうかを確認します。 その場合は、FsRtlNotifyFullChangeDirectory 保留中の IRP が完了します。 そうでない場合は、fsRtlNotifyFullChangeDirectory 通知 IRP を保留中としてマークし、通知構造体を作成し、一覧に挿入します。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー rxprocs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

関連項目

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

SECURITY_SUBJECT_CONTEXT