次の方法で共有


FsRtlChangeBackingFileObject 関数 (ntifs.h)

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

構文

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

パラメーター

CurrentFileObject

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

NewFileObject

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

ChangeBackingType

[in] 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 以降で使用できます。
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 を する PowerIrpDDis(wdm)

関連項目

FSRTL_CHANGE_BACKING_TYPE