Share via


使用目前檔案位置

當您建立或開啟檔案時,可能會導致 I/O 管理員建立與檔案控制碼相關聯的目前檔案位置指標。 完成後,您可以讀取和寫入目前檔案位置的資料,而 I/O 管理員會依讀取或寫入的位元組數目自動更新位置。

根據預設,I/O 管理員不會維護目前的檔案位置指標。 此預設提供效率,因為正確維護目前的檔案位置需要 I/O 管理員同步處理檔案物件上的每個讀取和寫入作業。

若要建立具有相關聯目前檔案位置指標的控制碼,請將 DesiredAccess 參數中的 SYNCHRONIZE 存取權指定為 ZwCreateFileIoCreateFileZwOpenFile,並在 CreateOptionsOpenOptions 參數中指定FILE_SYNCHRONOUS_IO_ALERT或FILE_SYNCHRONOUS_IO_NONALERT。 請確定您未同時指定FILE_APPEND_DATA存取權限。

ZwReadFileZwWriteFile 會自動更新目前的檔案位置指標,使其指向作業所影響的資料之外。 例如,如果您從位元組位移 101 開始讀取 20 個位元組, ZwReadFile 會將目前的檔案位置更新為 121。

您可以分別呼叫 ZwQueryInformationFileZwSetInformationFile來檢查或變更目前的檔案位置。 在這兩種情況下,將 FileInformationClass 參數設定為 FilePositionInformation