CcMapData 関数 (ntifs.h)
CcMapData ルーチンは、キャッシュされたファイルの指定されたバイト範囲をメモリ内のバッファーにマップします。
構文
BOOLEAN CcMapData(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG Flags,
[out] PVOID *Bcb,
[out] PVOID *Buffer
);
パラメーター
[in] FileObject
読み取りアクセス用にマップされるデータを持つファイルのファイル オブジェクトへのポインター。
[in] FileOffset
目的のデータが存在するキャッシュ されたファイル内の開始バイト オフセットを指定する変数へのポインター。
[in] Length
必要なデータの長さ (バイト単位)。
[in] Flags
マッピング操作の実行方法を指定するフラグのビットマスク。 これは、次の 1 つ以上の値のビットごとの OR の組み合わせです。
価値 | 意味 |
---|---|
MAP_WAIT | 呼び出し元は、データがマップされるまで待機状態にすることができます。 |
MAP_NO_READ | 既にメモリに常駐しているページのみがマップされます。 |
待つ
データ マップされるまで呼び出し元を待機状態にできる場合は TRUE に設定 、それ以外の場合は FALSE。
[out] Bcb
最初の呼び出しでは、バッファー制御ブロック (BCB) 構造体へのポインターが返されます。 このポインターは、このバッファーの後続のすべての呼び出しで入力として指定する必要があります。
[out] Buffer
マップされたデータを含むバッファーへのポインター。
戻り値
ccMapData
備考
CcMapData は、読み取りアクセスのためにキャッシュされたファイル内のデータをマップします。 ccMapData
ccMapData
CcMapData は、キャッシュ マネージャーのビュー境界を越えてデータをマップできません。 キャッシュ・マネージャーは、256 KB アライン・ビューでシステム内のファイルを管理します。 (キャッシュ マネージャーのビュー サイズは、システム定義の定数 VACB_MAPPING_GRANULARITYで指定されます。この定数は、ntifs.hで 256 KB に設定されます)。マップされた領域は、複数の 256 KB ビューにまたがることはできません。 そのため、マップできる最大の領域は 256 KB で、ファイル内の 256 KB で整列されたオフセットから始められます。
キャッシュされたファイル内のバイト範囲をマッピングしても、ページがメモリに常駐し続けるわけではありません。 ページがマップされている限り、バイト範囲はシステム キャッシュの仮想アドレス空間にマップされたままであることが保証されますが、メモリ マネージャーは、システムのメモリ要求に応じて物理ページをページングできます。
エラーが発生した場合、ccMapData
ファイルをキャッシュするには、ccInitializeCacheMap
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |
関連項目
ccInitializeCacheMap の
ccPreparePinWrite を
ccUnpinData を