mmioOpenA 関数 (mmiscapi.h)
mmioOpen 関数は、バッファーなしまたはバッファー内の I/O 用のファイルを開きます。はファイルを作成します。ファイルを削除します。または、ファイルが存在するかどうかを確認します。 ファイルには、標準ファイル、メモリ ファイル、またはカスタム ストレージ システムの要素を指定できます。 mmioOpen によって返されるハンドルは、標準のファイル ハンドルではありません。は、マルチメディア ファイル I/O 関数以外のファイル I/O 関数では使用しないでください。
構文
HMMIO mmioOpenA(
LPSTR pszFileName,
LPMMIOINFO pmmioinfo,
DWORD fdwOpen
);
パラメーター
pszFileName
ファイルの名前を含むバッファーへのポインター。 ファイルを開く I/O プロシージャが指定されていない場合、ファイル名によってファイルの開き方が次のように決まります。
- ファイル名にプラス記号 (+) が含まれていない場合は、標準ファイルの名前 (つまり、型が HMMIO ではないファイル) であると見なされます。
- ファイル名が EXAMPLE という形式の場合。EXT+ ABC では、拡張子 EXT は、ファイルに対して I/O を実行するために呼び出される、インストールされている I/O プロシージャを識別するものと見なされます。 詳細については、「 mmioInstallIOProc」を参照してください。
- ファイル名が NULL で、I/O プロシージャが指定されていない場合、MMIOINFO 構造体の adwInfo メンバーは、現在開いているファイルの標準 (HMMIO 以外) ファイル ハンドルであると見なされます。
メモリ ファイルを開くときは、 szFilename を NULL に設定します。
pmmioinfo
mmioOpen によって使用される追加のパラメーターを含む MMIOINFO 構造体へのポインター。 メモリ ファイルを開く場合、バッファー内の I/O のバッファーのサイズを指定する場合、またはアンインストールした I/O プロシージャを指定してファイルを開く場合を除き、このパラメーターは NULL である必要があります。 このパラメーターが NULL でない場合は、参照する MMIOINFO 構造体のすべての未使用メンバーを、予約済みメンバーを含めてゼロに設定する必要があります。
fdwOpen
開いている操作のフラグ。 MMIO_READ、MMIO_WRITE、およびMMIO_READWRITEフラグは相互に排他的です。指定する必要があるのは 1 つだけです。 MMIO_COMPAT、MMIO_EXCLUSIVE、MMIO_DENYWRITE、MMIO_DENYREAD、およびMMIO_DENYNONEフラグは、ファイル共有フラグです。 次の値が定義されています。
値 | 意味 |
---|---|
MMIO_ALLOCBUF | バッファー内の I/O 用のファイルを開きます。 既定のバッファー サイズ (MMIO_DEFAULTBUFFERとして定義されている 8K) より大きいか小さいバッファーを割り当てるには、MMIOINFO 構造体の cchBuffer メンバーを目的のバッファー サイズに設定します。 cchBuffer が 0 の場合、既定のバッファー サイズが使用されます。 独自の I/O バッファーを指定する場合は、このフラグを使用しないでください。 |
MMIO_COMPAT | 互換モードでファイルを開き、特定のコンピューター上の任意のプロセスでファイルを何度でも開くことを許可します。 ファイルが他の共有モードで開かれている場合、 mmioOpen は失敗します。 |
MMIO_CREATE | 新しいファイルを 1 つ作成します。 ファイルが既に存在する場合は、長さが 0 に切り捨てられます。 メモリ ファイルの場合、このフラグは、ファイルの末尾が最初にバッファーの先頭であることを示します。 |
MMIO_DELETE | ファイルを削除します。 このフラグを指定した場合、 szFilename を NULL にすることはできません。 ファイルが正常に削除された場合は TRUE ( HMMIO にキャスト)、それ以外の場合は FALSE です。 削除されたファイルに対して mmioClose 関数を呼び出さないでください。 このフラグを指定すると、ファイルを開く他のすべてのフラグは無視されます。 |
MMIO_DENYNONE | ファイルに対する他のプロセスの読み取りまたは書き込みアクセスを拒否せずにファイルを開きます。 ファイルが他のプロセスによって互換モードで開かれている場合、 mmioOpen は失敗します。 |
MMIO_DENYREAD | ファイルを開き、ファイルへの他のプロセスの読み取りアクセスを拒否します。 ファイルが互換モードで開かれているか、他のプロセスによる読み取りアクセスのために開かれている場合、 mmioOpen は失敗します。 |
MMIO_DENYWRITE | ファイルを開き、ファイルへの他のプロセスの書き込みアクセスを拒否します。 ファイルが互換モードで開かれているか、他のプロセスによる書き込みアクセスのために開かれている場合、 mmioOpen は失敗します。 |
MMIO_EXCLUSIVE | ファイルを開き、ファイルに対する他のプロセスの読み取りと書き込みのアクセスを拒否します。 ファイルが読み取りまたは書き込みアクセス用に他のモードで開かれている場合は、現在のプロセスによっても 、mmioOpen は失敗します。 |
MMIO_EXIST | 指定したファイルが存在するかどうかを判断し、 szFilename で指定されたパスから完全修飾ファイル名を作成します。 修飾が成功し、ファイルが存在する場合は TRUE ( HMMIO にキャスト) 、それ以外の場合は FALSE です。 ファイルが開かないため、関数は有効なマルチメディア ファイル I/O ファイル ハンドルを返さないので、ファイルを閉じないでください。
メモ アプリケーションでは、代わりに GetFileAttributes または GetFileAttributesEx を呼び出す必要があります。
|
MMIO_GETTEMP |
必要に応じて 、szFilename で渡されたパラメーターを使用して、一時ファイル名を作成します。たとえば、"C:F" を指定して、ドライブ C に存在する一時ファイルを作成し、文字 "F" から始めることができます。 結果のファイル名は、 szFilename が指すバッファーにコピーされます。 バッファーは、128 文字以上を保持するのに十分な大きさである必要があります。
一時ファイル名が正常に作成された場合、戻り値は MMSYSERR_NOERROR されます ( HMMIO にキャストされます)。 それ以外の場合、戻り値は それ以外の場合はMMIOERR_FILENOTFOUND 。 ファイルが開かないため、関数は有効なマルチメディア ファイル I/O ファイル ハンドルを返さないので、ファイルを閉じないでください。 このフラグは、他のすべてのフラグをオーバーライドします。 メモ アプリケーションでは、代わりに GetTempFileName を 呼び出す必要があります。
|
MMIO_PARSE |
szFilename で指定されたパスから完全修飾ファイル名を作成します。 完全修飾名は、 szFilename が指すバッファーにコピーされます。 バッファーは、128 文字以上を保持するのに十分な大きさである必要があります。
関数が成功した場合、戻り値は TRUE ( HMMIO にキャスト) です。 それ以外の場合、戻り値は FALSE です。 ファイルが開かないため、関数は有効なマルチメディア ファイル I/O ファイル ハンドルを返さないので、ファイルを閉じないでください。 このフラグを指定すると、ファイルを開くすべてのフラグは無視されます。 メモ アプリケーションでは、代わりに GetFullPathName を 呼び出す必要があります。
|
MMIO_READ | 読み取り専用でファイルを開きます。 これは、MMIO_WRITEとMMIO_READWRITEが指定されていない場合の既定値です。 |
MMIO_READWRITE | 読み取りと書き込みのためにファイルを開きます。 |
MMIO_WRITE | 書き込み専用でファイルを開きます。 |
戻り値
なし
解説
lpmmioinfo がMMIOINFO 構造体を指している場合は、構造体のメンバーを次のように初期化します。 未使用のメンバーはすべて、予約済みメンバーを含め、0 に設定する必要があります。
- インストールされている I/O プロシージャを使用してファイルを開くように要求するには、 fccIOProc を I/O プロシージャの 4 文字コードに設定し、 pIOProc を NULL に設定 します。
- アンインストールされた I/O プロシージャでファイルを開くように要求するには、I/O プロシージャを指す IOProc を設定し、 fccIOProc を NULL に設定 します。
- szFilename に含まれるファイル名に基づいてファイルを開くために使用する I/O プロシージャを mmioOpen に要求するには、fccIOProc と pIOProc を NULL に設定します。 これは、 MMIOINFO 構造体が指定されていない場合の既定の動作です。
- 内部的に割り当てられたマネージド バッファーを使用してメモリ ファイルを開くには、 pchBuffer を NULL に、 fccIOProc をFOURCC_MEMに、 cchBuffer をバッファーの初期サイズに設定し、 adwInfo を バッファーの増分拡張サイズに設定します。 このメモリ ファイルは、必要に応じて adwInfo で指定されたバイト数だけ自動的に拡張されます。 dwOpenFlags パラメーターのMMIO_CREATE フラグを指定して、最初にファイルの末尾をバッファーの先頭に設定します。
- アプリケーション提供のバッファーを使用してメモリ ファイルを開くには、 pchBuffer をメモリ バッファーを指し、 fccIOProc をFOURCC_MEMに、 cchBuffer をバッファーのサイズに設定し、 adwInfo をバッファーの増分拡張サイズに設定します。 pchBuffer が GlobalAlloc 関数と GlobalLock 関数を呼び出して取得したポインターである場合にのみ、adwInfo の拡張サイズは 0 以外にする必要があります。この場合、GlobalReAlloc 関数が呼び出されてバッファーが拡張されます。 つまり、 pchBuffer がローカル配列またはグローバル配列、またはローカル ヒープ内のメモリ ブロックを指している場合、 adwInfo は 0 である必要があります。 dwOpenFlags パラメーターのMMIO_CREATE フラグを指定して、最初にファイルの末尾をバッファーの先頭に設定します。 それ以外の場合、メモリのブロック全体が読み取り可能と見なされます。
- マルチメディア ファイル I/O サービスで現在開いている標準ファイル ハンドル (つまり 、HMMIO の種類を持たないファイル ハンドル) を使用するには、 fccIOProc を FOURCC_DOS に設定し、 pchBuffer を NULL に、 adwInfo を標準ファイル ハンドルに設定します。 ファイル内のオフセットは、ファイルの先頭を基準としており、 mmioOpen が呼び出された時点での標準ファイル内の位置には関係しません。初期マルチメディア ファイル I/O オフセットは、 mmioOpen が呼び出されたときの標準ファイルのオフセットと同じになります。 標準ファイル ハンドルを閉じずにマルチメディア ファイル I/O ファイル ハンドルを閉じるには、MMIO_FHOPEN フラグを mmioClose に渡します。
注意
mmiscapi.h ヘッダーは、MMioOpen をエイリアスとして定義します。これは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmiscapi.h (Mmiscapi.h、Windows.h を含む) |
Library | Winmm.lib |
[DLL] | Winmm.dll |