次の方法で共有


CcInitializeCacheMap 関数 (ntifs.h)

ファイル システムは、CcInitializeCacheMap ルーチンを呼び出してファイルをキャッシュします。

構文

void CcInitializeCacheMap(
  [in] PFILE_OBJECT             FileObject,
  [in] PCC_FILE_SIZES           FileSizes,
  [in] BOOLEAN                  PinAccess,
  [in] PCACHE_MANAGER_CALLBACKS Callbacks,
  [in] PVOID                    LazyWriteContext
);

パラメーター

[in] FileObject

ファイルのファイル オブジェクトへのポインター。

[in] FileSizes

AllocationSizeFileSize、およびファイルの ValidDataLength を含むCC_FILE_SIZES構造体へのポインター。 この構造体は次のように定義されます。

typedef struct _CC_FILE_SIZES {
    LARGE_INTEGER AllocationSize;
    LARGE_INTEGER FileSize;
    LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
メンバー 意味
AllocationSize ファイルの新しいセクション オブジェクト サイズ。 現在のセクション サイズ以下の場合は無視されます。
FileSize ファイルの新しいファイル サイズ。
ValidDataLength ファイルの新しい有効なデータ長。

[in] PinAccess

CcPinXxx ルーチン ファイルで使用する場合は、TRUE を に設定します。

[in] Callbacks

非ページ プールから割り当てられた構造体へのポインター。呼び出し元が提供する先読みコールバック ルーチンと書き込み側コールバック ルーチンのエントリ ポイントを含みます。この構造体とそのメンバーは、次のように定義されます。

typedef struct _CACHE_MANAGER_CALLBACKS {
    PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
    PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
    PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
    PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
typedef
BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
             IN PVOID Context,
             IN BOOLEAN Wait
             );
typedef
VOID (*PRELEASE_FROM_LAZY_WRITE) (
             IN PVOID Context
             );
typedef
BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
             IN PVOID Context,
             IN BOOLEAN Wait
             );
typedef
VOID (*PRELEASE_FROM_READ_AHEAD) (
             IN PVOID Context
             );

[in] LazyWriteContext

Callbacksで指定されたコールバック ルーチンに渡されるコンテキスト情報へのポインター。

戻り値

何一つ

備考

ccInitializeCacheMap 、ファイル データ キャッシュに必要なデータ構造を作成します。

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

ファイル システムは、ファイルがデータ キャッシュを無効にして作成されていない限り、ファイルで他のキャッシュ マネージャー ルーチンを使用する前に、ファイルをキャッシュするために ccInitializeCacheMap を呼び出す必要があります。 ほとんどのファイル システムでは、ファイル キャッシュは既定で有効になっていますが、FILE_NO_INTERMEDIATE_BUFFERING フラグをファイル作成オプションで TRUE 設定することで無効にすることができます。

CcInitializeCacheMap呼び出した後、ファイル システムは ccSetAdditionalCacheAttributes を呼び出して、必要に応じて先読みまたは書き込みビハインドを無効にすることができます。

ファイルを閉じるときに、ファイル キャッシュをサポートするすべてのファイル システムは、ファイルがキャッシュされているかどうかに関係なく、そのファイル CcUninitializeCacheMap を呼び出す必要があります。 ファイルがキャッシュを無効にして作成された場合でも、ファイル システムは ccUninitializeCacheMap を呼び出す必要があります。

CcIsFileCached マクロは、ファイルをキャッシュするかどうかを決定します。

BOOLEAN CcIsFileCached(
  [in] PFILE_OBJECT FileObject
);

パラメーター

FileObject[in] [in]

ファイルのファイル オブジェクトへのポインター。

戻り値

ファイル キャッシュされている場合は TRUE を返し、それ以外の場合は FALSE 返します。

複数のファイル オブジェクトが同じファイル (つまり、データ ストリーム) を参照できるため、別のキャッシュされたファイル オブジェクトが同じデータ ストリームを参照している場合、CcIsFileCached マクロ TRUE キャッシュされていないファイル オブジェクトを返すことができます。 つまり、同じデータ ストリームを参照するファイル オブジェクトのセットがあり、セット内の少なくとも 1 つのファイル オブジェクトがキャッシュされている場合、CcIsFileCached は、セット内のすべてのファイル オブジェクト TRUE を返します。
 

必要条件

要件 価値
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe

関連項目

CcSetAdditionalCacheAttributes

ccUninitializeCacheMap の