mmioOpenW 関数 (mmiscapi.h)
mmioOpen 関数は、バッファーなしまたはバッファーに入れられた I/O 用のファイルを開きます。はファイルを作成します。ファイルを削除します。または は、ファイルが存在するかどうかを確認します。 ファイルには、標準ファイル、メモリ ファイル、またはカスタム ストレージ システムの要素を指定できます。 mmioOpen によって返されるハンドルは、標準のファイル ハンドルではありません。マルチメディア ファイル I/O 関数以外のファイル I/O 関数では使用しないでください。
構文
HMMIO mmioOpenW(
LPWSTR 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 構造体の未使用のメンバーはすべて、予約済みメンバーを含めて 0 に設定する必要があります。
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 ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして mmioOpen を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmiscapi.h (Mmiscapi.h、Windows.h を含む) |
Library | Winmm.lib |
[DLL] | Winmm.dll |