共用方式為


mmioAdvance 函式 (mmiscapi.h)

mmioAdvance函式會使用mmioGetInfo函式將檔案的 I/O 緩衝區設定為直接 I/O 緩衝區存取前移。

語法

MMRESULT mmioAdvance(
  HMMIO      hmmio,
  LPMMIOINFO pmmioinfo,
  UINT       fuAdvance
);

參數

hmmio

使用 mmioOpen 函式開啟之檔案的檔案控制碼。

pmmioinfo

使用mmioGetInfo函式取得之MMIOINFO結構的指標。 此結構用來設定目前的檔案資訊,然後在緩衝區進階之後更新。 這是選擇性參數。

fuAdvance

作業的旗標。 它可以是下列其中一項。

意義
MMIO_READ 緩衝區會從檔案填入。
MMIO_WRITE 緩衝區會寫入檔案。

傳回值

如果成功或發生錯誤,則傳回MMSYSERR_NOERROR。 可能的錯誤值包括下列專案。

傳回碼 描述
MMIOERR_CANNOTEXPAND
指定的記憶體檔案無法展開,可能是因為MMIOINFO 結構的初始呼叫中,MMIOINFO結構的adwInfo成員設定為零。
MMIOERR_CANNOTREAD
重新填入緩衝區時發生錯誤。
MMIOERR_CANNOTWRITE
緩衝區的內容無法寫入磁片。
MMIOERR_OUTOFMEMORY
記憶體不足,無法延伸記憶體檔案以供進一步寫入。
MMIOERR_UNBUFFERED
未針對緩衝 I/O 開啟指定的檔案。

備註

如果檔案已開啟以供讀取,則會從磁片填入 I/O 緩衝區。 如果開啟檔案以供寫入,而且MMIO_DIRTY旗標是在MMIOINFO結構的dwFlags成員中設定,則會將緩衝區寫入磁片。 MMIOINFO結構的pchNext、pchEndReadpchEndWrite成員會更新,以反映 I/O 緩衝區的新狀態。

如果開啟指定的檔案進行寫入,或同時寫入,I/O 緩衝區會在讀取下一個緩衝區之前排清到磁片。 如果因為磁片已滿而無法將 I/O 緩衝區寫入磁片, mmioAdvance 會傳回MMIOERR_CANNOTWRITE。

如果指定的檔案僅供寫入使用,則必須指定MMIO_WRITE旗標。

如果您已寫入 I/O 緩衝區,您必須先在MMIOINFO結構的dwFlags成員中設定MMIO_DIRTY旗標,再呼叫mmioAdvance。 否則,緩衝區將不會寫入磁片。

如果到達檔案結尾,即使無法再讀取任何資料, mmioAdvance 仍會成功傳回。 若要檢查檔案的結尾,請檢查呼叫mmioAdvance之後,MMIOINFO結構的pchNextpchEndRead成員是否相等。

需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 mmiscapi.h (包含 mmiscapi.h、Windows.h)
程式庫 Winmm.lib
Dll Winmm.dll