共用方式為


CcFastCopyRead 函式 (ntifs.h)

CcFastCopyRead 例程會執行從快取檔案到記憶體中緩衝區的快速複製讀取。

語法

void CcFastCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  ULONG            FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            PageCount,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

參數

[in] FileObject

要從中讀取數據的快取檔案之檔案物件的指標。

[in] FileOffset

在快取的檔案中啟動位元組位移。

[in] Length

要讀取之數據的位元組長度。

[in] PageCount

讀取所跨越的頁數。

[out] Buffer

要複製數據之緩衝區的指標。

[out] IoStatus

結構的指標,該結構會接收最終完成狀態和作業的相關信息。 如果並非所有的數據都成功複製,IoStatus.Information 包含實際複製的位元組數目。

傳回值

沒有

言論

CcFastCopyRead 是較快速版本的 CcCopyRead。 在下列方面,它與 CcCopyRead 不同:

  • FileOffset 是 ULONG,而不是PLARGE_INTEGER。

  • 沒有 Wait 參數。 呼叫端必須能夠進入等候狀態,直到複製所有數據為止。

  • CcFastCopyRead 不會傳回 BOOLEAN 來指出讀取作業是否成功。

FileOffset 加上 Length 必須小於或等於快取檔案的大小,否則會發生判斷提示失敗。

如果發生任何失敗,CcFastCopyRead 會引發該特定失敗的狀態例外狀況。 例如,如果發生集區配置失敗,CcFastCopyRead 引發STATUS_INSUFFICIENT_RESOURCES例外狀況;如果發生 I/O 錯誤,CcFastCopyRead 會引發 I/O 錯誤的狀態例外狀況。 因此,若要控制是否發生失敗,驅動程式應該將呼叫包裝在 try-excepttry-finally 語句中 CcFastCopyRead

若要快取檔案,請使用 CcInitializeCacheMap

要求

要求 價值
目標平臺 普遍
標頭 ntifs.h (include Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另請參閱

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity