次の方法で共有


MmDoesFileHaveUserWritableReferences 関数 (ntifs.h)

MmDoesFileHaveUserWritableReferences 関数は、ファイル オブジェクトの書き込み可能な参照の数を返します。

構文

ULONG MmDoesFileHaveUserWritableReferences(
  [in] PSECTION_OBJECT_POINTERS SectionPointer
);

パラメーター

[in] SectionPointer

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

戻り値

MmDoesFileHaveUserWritableReferences、SectionPointer パラメーターに関連付けられているファイル オブジェクトの書き込み可能な参照の数を返します。

注釈

MmDoesFileHaveUserWritableReferences、SectionPointer パラメーターに関連付けられているファイル オブジェクトの書き込み可能な参照の数を返します。 この戻り値は、次の数値の合計です。

  • 関連付けられたファイル オブジェクトの書き込み可能なファイル ハンドルの数。

  • 関連付けられているファイル オブジェクトの書き込み可能なセクションの数。

  • 関連付けられたファイル オブジェクトの書き込み可能なビューの数。

  • 関連付けられたファイル オブジェクトのマッピング領域である未処理 の MDLの数。

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

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

注意

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

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

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

要件

要件
サポートされている最小のクライアント Windows Vista
対象プラットフォーム ユニバーサル
Header ntifs.h (Fltkernel.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport)