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を返し、それ以外の場合はエラーを返します。 考えられるエラー値は次のとおりです。
リターン コード | 説明 |
---|---|
|
mmioOpen 関数の最初の呼び出しで MMIOINFO 構造体の adwInfo メンバーが 0 に設定された可能性があるため、指定されたメモリ ファイルを拡張できません。 |
|
バッファーの補充中にエラーが発生しました。 |
|
バッファーの内容をディスクに書き込めませんでした。 |
|
さらに書き込むためのメモリ ファイルを拡張するのに十分なメモリが不足していました。 |
|
指定されたファイルは、バッファー 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 バッファーに書き込んだ場合は、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 |