次の方法で共有


CcCopyReadEx 関数 (ntifs.h)

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

構文

BOOLEAN CcCopyReadEx(
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  BOOLEAN          Wait,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus,
  [in]  PETHREAD         IoIssuerThread
);

パラメーター

[in] FileObject

データの読み取り元となるキャッシュされたファイルのファイル オブジェクトへのポインター。

[in] FileOffset

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

[in] Length

読み取るデータの長さ (バイト単位)。

[in] Wait

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

[out] Buffer

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

[out] IoStatus

最終的な完了状態と操作に関する情報を受け取る呼び出し元によって割り当てられた構造体へのポインター。 すべてのデータが正常にコピーされない場合は、IoStatus.Information コピーされた実際のバイト数が含まれます。

[in] IoIssuerThread

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

戻り値

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

備考

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

待機 が FALSE の場合、CcCopyReadEx はブロックを拒否し、キャッシュされたファイルの必要なページがまだメモリに存在していない場合は FALSE を返します。

FileOffset に Length を加えた は、キャッシュされたファイルのサイズ以下である必要があります。そうしないと、アサーションエラーが発生します。

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 8
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h、FltKernel.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

ccFastCopyRead を する

ccInitializeCacheMap の

ccReadAhead を する

ccScheduleReadAhead の

ccSetAdditionalCacheAttributes の

CcSetReadAheadGranularity