次の方法で共有


MmDoesFileHaveUserWritableReferences 関数 (ntifs.h)

mmDoesFileHaveUserWritableReferences 関数は、トランザクションに関連付けられているファイルにユーザー マップセクションが存在するかどうかを決定します。

構文

ULONG MmDoesFileHaveUserWritableReferences(
  [in] PSECTION_OBJECT_POINTERS SectionPointer
);

パラメーター

[in] SectionPointer

ファイル オブジェクトのセクション オブジェクト ポインターを含む SECTION_OBJECT_POINTERS 構造体へのポインター。 このパラメーターは必須であり、NULL することはできません。

戻り値

mmDoesFileHaveUserWritableReferences は、次のいずれかの値を返します。

戻り値 意味
0 ファイル オブジェクトには、ユーザー マップセクションがありません。 トランザクションを続行しても安全です。
1 ファイル オブジェクトには、ユーザー マップセクションがあります。 トランザクションはロールバックする必要があります。

備考

トランザクション ファイル システムの場合、この関数を使用して、特定のトランザクションが変更可能なファイル オブジェクトを参照しているかどうかを判断できます。 その場合、アトミック を保証できないため、トランザクションをロールバックする必要があります。

mmDoesFileHaveUserWritableReferences 呼び出す前に、トランザクション ファイル システムは、書き込みアクセスを指定するファイル オブジェクトの作成を確認してインターセプトする必要があります。 具体的には、トランザクション ファイル システムは、トランザクションを開始する前に、トランザクション内の特定のファイルに対して現在存在する書き込み可能なファイル オブジェクトがないことを確認する必要があります。 トランザクションが進行中の場合、トランザクション ファイル システムは、トランザクション ファイルに対する書き込みアクセス権を持つファイル オブジェクトを作成する要求を失敗させる必要があります。

この関数を使用すると、ファイル オブジェクトのすべてのファイル ハンドルとセクション ハンドルが閉じられている場合でも、ファイル オブジェクトの書き込み可能なビューがあるかどうかを検出できます。

トランザクションの詳細については、「カーネル トランザクション マネージャーの を参照してください。

ファイル オブジェクトの詳細については、FILE_OBJECTを参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
ターゲット プラットフォーム 万国
ヘッダー ntifs.h (Fltkernel.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 する hwStorPortProhibitedDDDIs(storport) する

関連項目

FILE_OBJECT

SECTION_OBJECT_POINTERS