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。 可能的錯誤值包括下列專案。
傳回碼 | 描述 |
---|---|
|
指定的記憶體檔案無法展開,可能是因為MMIOINFO 結構的初始呼叫中,MMIOINFO結構的adwInfo成員設定為零。 |
|
重新填入緩衝區時發生錯誤。 |
|
緩衝區的內容無法寫入磁片。 |
|
記憶體不足,無法延伸記憶體檔案以供進一步寫入。 |
|
未針對緩衝 I/O 開啟指定的檔案。 |
備註
如果檔案已開啟以供讀取,則會從磁片填入 I/O 緩衝區。 如果開啟檔案以供寫入,而且MMIO_DIRTY旗標是在MMIOINFO結構的dwFlags成員中設定,則會將緩衝區寫入磁片。 MMIOINFO結構的pchNext、pchEndRead和pchEndWrite成員會更新,以反映 I/O 緩衝區的新狀態。
如果開啟指定的檔案進行寫入,或同時寫入,I/O 緩衝區會在讀取下一個緩衝區之前排清到磁片。 如果因為磁片已滿而無法將 I/O 緩衝區寫入磁片, mmioAdvance 會傳回MMIOERR_CANNOTWRITE。
如果指定的檔案僅供寫入使用,則必須指定MMIO_WRITE旗標。
如果您已寫入 I/O 緩衝區,您必須先在MMIOINFO結構的dwFlags成員中設定MMIO_DIRTY旗標,再呼叫mmioAdvance。 否則,緩衝區將不會寫入磁片。
如果到達檔案結尾,即使無法再讀取任何資料, mmioAdvance 仍會成功傳回。 若要檢查檔案的結尾,請檢查呼叫mmioAdvance之後,MMIOINFO結構的pchNext和pchEndRead成員是否相等。
需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | mmiscapi.h (包含 mmiscapi.h、Windows.h) |
程式庫 | Winmm.lib |
Dll | Winmm.dll |