共用方式為


CcCopyRead 函式 (ntifs.h)

CcCopyRead 例程會將數據從快取的檔案複製到用戶緩衝區。

語法

BOOLEAN CcCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  BOOLEAN          Wait,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

參數

[in] FileObject

要從中讀取數據之快取檔案對象的檔案對象指標。

[in] FileOffset

指定快取檔案內起始位元組位移之變數的指標。

[in] Length

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

[in] Wait

如果呼叫端可以進入等候狀態,直到複製所有數據,則設定為 TRUE ,否則為 FALSE

[out] Buffer

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

[out] IoStatus

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

傳回值

如果成功複製數據, 則 CcCopyRead 例程會傳回 TRUE ,否則傳回 FALSE

備註

如果 WaitTRUE則 CcCopyRead 保證會完成複製要求並傳回 TRUE。 如果快取檔案的必要頁面已經存在於記憶體中,則會立即複製數據,而且不會發生封鎖。 如果有任何需要的頁面未存在,則呼叫端將會處於等候狀態,直到所有必要頁面都已成為常駐且可複製數據為止。

如果 WaitFALSE則 CcCopyRead 會拒絕封鎖,如果快取檔案的必要頁面尚未位於記憶體中,則會傳回 FALSE

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

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

若要快取檔案,請使用 CcInitializeCacheMap

規格需求

需求
最低支援的用戶端 Windows 2000
目標平台 Universal
標頭 ntifs.h (包括 Ntifs.h、FltKernel.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

CcFastCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity