Share via


FsRtlChangeBackingFileObject 関数 (ntifs.h)

FsRtlChangeBackingFileObject ルーチンは、現在のファイル オブジェクトを新しいファイル オブジェクトに置き換えます。

構文

NTSTATUS FsRtlChangeBackingFileObject(
  PFILE_OBJECT              CurrentFileObject,
  PFILE_OBJECT              NewFileObject,
  FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
  ULONG                     Flags
);

パラメーター

CurrentFileObject

[入力、省略可能] 現在のファイル オブジェクト。 CurrentFileObjectNULL の場合、オペレーティング システムの現在のファイル オブジェクトは NewFileObject に設定されます。 NULL 以外の場合、OS の現在のバッキング ファイル オブジェクトがこの値と等しい場合にのみ、バッキング ファイル オブジェクトが NewFileObject に変更されます。 このファイル オブジェクトがストリームに属していない場合、操作は失敗します。

NewFileObject

[入力] OS が参照して内部的に格納する新しいファイル オブジェクト。

ChangeBackingType

[入力]NewFileObject を参照するように変更する必要がある内部構造体を示すFSRTL_CHANGE_BACKING_TYPE列挙値

Flags

[入力] 将来の使用のために予約されています。

戻り値

操作が成功した場合、 FsRtlChangeBackingFileObject ルーチンはSTATUS_SUCCESSを返します。 それ以外の場合、 FsRtlChangeBackingFileObject は適切なエラー コードを返します。次の表に、 FsRtlChangeBackingFileObject が返す可能性があるエラー コードを示します。

リターン コード 説明
STATUS_INVALID_PARAMETER_2 NewFileObject が指定するファイル オブジェクトが CurrentFileObject と同じストリームを表していないため、変更操作が失敗しました。
STATUS_INVALID_PARAMETER_3 呼び出し元が ChangeBackingType で無効なバッキング型を指定したため、変更操作が失敗しました。
STATUS_INVALID_PARAMETER_4 呼び出し元が Flags で無効な値を指定したため、変更操作が失敗しました。
STATUS_NOT_SUPPORTED 呼び出し元がファイル オブジェクトの後続のスワップを許可しない方法でファイル オブジェクトを取得したため、変更操作が失敗しました。 たとえば、呼び出し元が CcGetFileObjectFromSectionPtrs の呼び出しでファイル オブジェクトを取得した場合、ファイル オブジェクトをスワップしても安全ではありません。

注釈

FsRtlChangeBackingFileObject ルーチンは、次のいずれかのファイル オブジェクトを変更します。

  • ストリームのメモリ マネージャーのイメージ制御領域の 1 つ

  • ストリームのメモリ マネージャーのデータ制御領域

  • ストリームのキャッシュ マネージャーの共有キャッシュ マップ

FsRtlChangeBackingFileObject ルーチンは同期的ではありません。 ファイル オブジェクトの変更要求を処理し、直ちにを返します。 キャッシュ マネージャーとメモリ マネージャーはファイル オブジェクトの変更を同期し、古いファイル オブジェクトに関連付けられているすべての不完全な操作が完了するまで、古いファイル オブジェクトを解放しません。 FsRtlChangeBackingFileObject からのSTATUS_SUCCESSの戻り状態は、オペレーティング システムがファイル オブジェクトを既に変更したことを意味するものではありません。

ただし、 FsRtlChangeBackingFileObject が正常に実行されると、オペレーティング システムは今後のすべての操作を新しいファイル オブジェクトに関連付けます。

複数のバッキング型のファイル オブジェクトを変更するには、呼び出し元が FsRtlChangeBackingFileObject を複数回呼び出す必要があります。これは、バッキングの種類ごとに 1 回ずつ変更されます。

要件

要件
サポートされている最小のクライアント FsRtlChangeBackingFileObject ルーチンは、Windows Vista 以降で使用できます。
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 PowerIrpDDis(wdm)

こちらもご覧ください

FSRTL_CHANGE_BACKING_TYPE