次の方法で共有


CcSetFileSizesEx 関数 (ntifs.h)

CcSetFileSizesEx ルーチンは、サイズが変更されたキャッシュ ファイルのキャッシュ マップとセクション オブジェクトを更新します。

構文

NTSTATUS CcSetFileSizesEx(
  PFILE_OBJECT   FileObject,
  PCC_FILE_SIZES FileSizes
);

パラメーター

FileObject

[入力]キャッシュされたファイルのファイル オブジェクトへのポインター。

FileSizes

[入力]新しいファイル サイズ情報を含む CC_FILE_SIZES 構造体へのポインター。

戻り値

CcSetFileSizesEx は、ファイル サイズが正常に変更された場合はSTATUS_SUCCESSを返し、消去が必要な場合は消去が成功したことを返します。 それ以外の場合は、STATUS_INSUFFICIENT_RESOURCESなどの成功しない NSTATUS コードが返され、状態例外が発生する可能性があります。

エラー時の状態例外の発生について:

  • 操作によって CcSetFileSizesEx がファイルをフラッシュまたは消去した場合、 CcSetFileSizesEx はエラー時に発生しません。フラッシュまたは消去操作の適切な成功しない NTSTATUS コードを返すだけです。

  • 操作によって CcSetFileSizesEx がセクションを拡張した場合、 CcSetFileSizesEx は、この拡張機能中にヒットしたエラーに対して発生します。

注釈

ファイル・システムは、キャッシュ・ファイルに対して次のいずれかの変更が行われるたびに、 CcSetFileSizesEx を呼び出してキャッシュ・マネージャーのデータ構造を更新する必要があります。

  • 割り当てサイズが大きくなります。

  • 有効なデータ長が減少します。

  • 有効なデータ長は、キャッシュされていない I/O 操作によって増加します。

  • ファイル サイズが増減します。

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

ファイル システムは、キャッシュ マップが有効であり、この呼び出しの間は有効なままであることを確認する必要があります。

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

キャッシュされたファイルのサイズを取得するには、 FileObject をCcGetFileSizePointer に渡します。

要件

要件
Header ntifs.h

こちらもご覧ください

CcInitializeCacheMap

CcSetCacheFileSizes