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