次の方法で共有


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
mmioOpen 関数の最初の呼び出しで MMIOINFO 構造体の adwInfo メンバーが 0 に設定された可能性があるため、指定されたメモリ ファイルを拡張できません。
MMIOERR_CANNOTREAD
バッファーの補充中にエラーが発生しました。
MMIOERR_CANNOTWRITE
バッファーの内容をディスクに書き込めませんでした。
MMIOERR_OUTOFMEMORY
さらに書き込むためのメモリ ファイルを拡張するのに十分なメモリが不足していました。
MMIOERR_UNBUFFERED
指定されたファイルは、バッファー I/O 用に開かれていません。

解説

ファイルを読み取り用に開くと、I/O バッファーがディスクから入力されます。 ファイルが書き込み用に開かれ、MMIO_DIRTY フラグが MMIOINFO 構造体の dwFlags メンバーに設定されている場合、バッファーはディスクに書き込まれます。 MMIOINFO 構造体の pchNextpchEndReadおよび pchEndWrite メンバーは、I/O バッファーの新しい状態を反映するように更新されます。

指定したファイルが書き込み用または読み取りと書き込みの両方で開かれている場合、I/O バッファーは、次のバッファーが読み取る前にディスクにフラッシュされます。 ディスクがいっぱいであるために I/O バッファーをディスクに書き込めない場合、 mmioAdvance はMMIOERR_CANNOTWRITEを返します。

指定したファイルが書き込み専用に開いている場合は、MMIO_WRITE フラグを指定する必要があります。

I/O バッファーに書き込んだ場合は、mmioAdvance を呼び出す前に、MMIOINFO 構造体の dwFlags メンバーに MMIO_DIRTY フラグを設定する必要があります。 それ以外の場合、バッファーはディスクに書き込まれません。

ファイルの末尾に達した場合でも、それ以上データを読み取れなくても 、mmioAdvance は正常に返されます。 ファイルの末尾をチェックするには、mmioAdvance を呼び出した後、MMIOINFO 構造体の pchNext メンバーと pchEndRead メンバーが等しいかどうかをチェックします。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mmiscapi.h (Mmiscapi.h、Windows.h を含む)
Library Winmm.lib
[DLL] Winmm.dll