Share via


CcCopyWriteEx 関数 (ntifs.h)

CcCopyWriteEx ルーチンは、ユーザー バッファーからキャッシュされたファイルにデータをコピーします。 操作の I/O バイト数は、発行スレッドに対して課金されます。

構文

BOOLEAN CcCopyWriteEx(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] ULONG          Length,
  [in] BOOLEAN        Wait,
  [in] PVOID          Buffer,
  [in] PETHREAD       IoIssuerThread
);

パラメーター

[in] FileObject

データの書き込み先となるキャッシュされたファイルのファイル オブジェクトへのポインター。

[in] FileOffset

キャッシュされたファイル内の開始バイト オフセットを指定する変数へのポインター。

[in] Length

書き込むデータの長さ (バイト単位)。

[in] Wait

すべてのデータがコピーされるまで呼び出し元を待機状態にできる場合は TRUE、それ以外の場合は FALSE に設定します。

[in] Buffer

データのコピー元となるバッファーへのポインター。

[in] IoIssuerThread

書き込み要求を発行するスレッド。 ディスク I/O アカウンティングが有効になっているファイル システムの場合、これは I/O が課金されるスレッドです。 IoIssuerThread が NULL の場合、I/O は現在のスレッドに対して課金されます。

戻り値

CcCopyWriteEx ルーチンは、データが正常にコピーされた場合は TRUE、それ以外の場合は FALSE を返します。

注釈

Wait が TRUE の場合、CcCopyWriteEx はコピー要求を完了し、TRUE を返す保証があります。 キャッシュされたファイルの必要なページが既にメモリに存在する場合、データはすぐにコピーされ、ブロックは行われません。 必要なページが常駐していない場合、呼び出し元は、必要なすべてのページが常駐し、データをコピーできるようになるまで待機状態になります。

Wait が FALSE の場合、CcCopyWriteEx はブロックを拒否し、キャッシュされたファイルの必要なページがまだメモリに存在しない場合、またはファイル オブジェクトに FO_WRITE_THROUGH フラグが設定されている場合は FALSE を返します。

エラーが発生した場合、 CcCopyWriteEx は特定のエラーの状態例外を発生させます。 たとえば、プール割り当てエラーが発生した場合、CcCopyWriteEx はSTATUS_INSUFFICIENT_RESOURCES状態の例外を発生させます。I/O エラーが発生した場合、CcCopyWriteEx は I/O エラーの状態例外を発生させます。 そのため、エラーが発生したかどうかを制御するには、ドライバーは、CcCopyWriteEx の呼び出しを try-except ステートメントまたは try-finally ステートメントでラップする必要があります。

ファイルをキャッシュするには、 CcInitializeCacheMap を使用します。

要件

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

こちらもご覧ください

CcInitializeCacheMap