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
ファイルの AllocationSize、 FileSize、 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
コールバックで指定されたコールバック ルーチンに渡されるコンテキスト情報へのポインター。
戻り値
なし
解説
CcInitializeCacheMap は、ファイル データ キャッシュに必要なデータ構造を作成します。
エラーが発生した場合、 CcInitializeCacheMap は特定のエラーの状態例外を発生させます。 たとえば、プール割り当てエラーが発生した場合、 CcInitializeCacheMap はSTATUS_INSUFFICIENT_RESOURCES例外を発生させます。 そのため、エラーが発生した場合に制御を得るために、ドライバーは CcInitializeCacheMap の呼び出しを try-except ステートメントまたは try-finally ステートメントでラップする必要があります。
ファイル がデータ キャッシュを無効にして作成された場合を除き、ファイル システムは CcInitializeCacheMap を呼び出してファイルをキャッシュしてから、ファイル上で他のキャッシュ マネージャー ルーチンを使用する必要があります。 ほとんどのファイル システムでは、ファイル キャッシュは既定で有効になっていますが、ファイル作成オプションで FILE_NO_INTERMEDIATE_BUFFERING フラグを TRUE に設定することで無効にすることができます。
CcInitializeCacheMap を呼び出した後、ファイル システムは CcSetAdditionalCacheAttributes を呼び出して、必要に応じて先読みまたは書き込み分離を無効にすることができます。
ファイルを閉じるときに、ファイル キャッシュをサポートするすべてのファイル システムは、ファイルがキャッシュされているかどうかに関係なく、そのファイルで CcUninitializeCacheMap を呼び出す必要があります。 キャッシュを無効にしてファイルが作成された場合でも、ファイル システムは CcUninitializeCacheMap を呼び出す必要があります。
CcIsFileCached マクロは、ファイルがキャッシュされているかどうかを判断します。
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
パラメーター
FileObject[in] [in]
ファイルのファイル オブジェクトへのポインター。
戻り値
ファイルがキャッシュされている場合は TRUE 、それ以外の場合は FALSE を 返します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |