CcCopyReadEx 函式 (ntifs.h)
CcCopyReadEx 例程會將數據從快取的檔案複製到用戶緩衝區。 作業的 I/O 位元組計數會向發出線程收費。
語法
BOOLEAN CcCopyReadEx(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] BOOLEAN Wait,
[out] PVOID Buffer,
[out] PIO_STATUS_BLOCK IoStatus,
[in] PETHREAD IoIssuerThread
);
參數
[in] FileObject
要從中讀取數據的快取檔案之檔案物件的指標。
[in] FileOffset
變數的指標,指定快取檔案內的起始位元組位移。
[in] Length
要讀取之數據的位元組長度。
[in] Wait
如果呼叫端可以放入等候狀態,請設定為 TRUE,直到複製所有數據為止,否則為 FALSE。
[out] Buffer
要複製數據之緩衝區的指標。
[out] IoStatus
呼叫端配置的結構的指標,可接收最終完成狀態和作業的相關信息。 如果並非所有的數據都成功複製,IoStatus.Information 包含實際複製的位元組數目。
[in] IoIssuerThread
發出讀取要求的線程。 針對已啟用磁碟 I/O 會計的文件系統,這是 I/O 所收取的線程。 如果 IoIssuerThread 為 NULL,則會向目前的線程收取 I/O 費用。
傳回值
如果成功複製數據,則 CcCopyReadEx 例程會傳回 TRUE,否則傳回 FALSE。
言論
如果 Wait 為 TRUE,CcCopyReadEx 保證可以完成複製要求並傳回 TRUE。 如果快取檔案的必要頁面已存在於記憶體中,則會立即複製數據,而且不會發生封鎖。 如果任何需要的頁面都不是常駐頁面,則呼叫端會進入等候狀態,直到所有必要頁面都已進入居民狀態,而且可以複製數據。
如果 Wait 為 FALSE,CcCopyReadEx 會拒絕封鎖,如果快取檔案的必要頁面尚未存在於記憶體中,則會傳回 FALSE。
FileOffset 加上 Length 必須小於或等於快取檔案的大小,否則會發生判斷提示失敗。
如果發生任何失敗,CcCopyReadEx 會引發該特定失敗的狀態例外狀況。 例如,如果發生集區配置失敗,CcCopyReadEx 引發具有 STATUS_INSUFFICIENT_RESOURCES 狀態的例外狀況;如果發生 I/O 錯誤,CcCopyReadEx 會引發 I/O 錯誤的狀態例外狀況。 因此,若要控制是否發生失敗,驅動程式應該在 try-finally 語句的
若要快取檔案,請使用 CcInitializeCacheMap。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h, FltKernel.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |