次の方法で共有


CcFastCopyWrite 関数 (ntifs.h)

CcFastCopyWrite ルーチンは、メモリ内のバッファーからキャッシュされたファイルへの高速コピー書き込みを実行します。

構文

void CcFastCopyWrite(
  [in] PFILE_OBJECT FileObject,
  [in] ULONG        FileOffset,
  [in] ULONG        Length,
  [in] PVOID        Buffer
);

パラメーター

[in] FileObject

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

[in] FileOffset

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

[in] Length

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

[in] Buffer

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

戻り値

なし

解説

CcFastCopyWrite は、 CcCopyWrite のより高速なバージョンです。 CcCopyWrite とは次の点で異なります。

  • FileOffset は ULONG であり、PLARGE_INTEGERではありません。

  • Wait パラメーターはありません。 呼び出し元は、すべてのデータがコピーされるまで待機状態に入ることができる必要があります。

  • CcFastCopyWrite は、書き込み操作が成功したかどうかを示すブール値を返しません。

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

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

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

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe

こちらもご覧ください

CcCopyWrite

CcInitializeCacheMap