fungsi mmioOpen (mmiscapi.h)
Fungsi mmioOpen membuka file untuk I/O yang tidak dibuffer atau di-buffer; membuat file; menghapus file; atau memeriksa apakah ada file. File dapat berupa file standar, file memori, atau elemen sistem penyimpanan kustom. Handel yang dikembalikan oleh mmioOpen bukan handel file standar; jangan gunakan dengan fungsi I/O file apa pun selain fungsi I/O file multimedia.
Sintaks
HMMIO mmioOpen(
LPSTR pszFileName,
LPMMIOINFO pmmioinfo,
DWORD fdwOpen
);
Parameter
pszFileName
Penunjuk ke buffer yang berisi nama file. Jika tidak ada prosedur I/O yang ditentukan untuk membuka file, nama file menentukan bagaimana file dibuka, sebagai berikut:
- Jika nama file tidak berisi tanda plus (+), diasumsikan sebagai nama file standar (yaitu, file yang jenisnya bukan HMMIO).
- Jika nama file adalah dari contoh formulir. EXT+ABC, ekstensi EXT diasumsikan untuk mengidentifikasi prosedur I/O yang diinstal yang dipanggil untuk melakukan I/O pada file. Untuk informasi selengkapnya, lihat mmioInstallIOProc.
- Jika nama file NULL dan tidak ada prosedur I/O yang diberikan, anggota adwInfo dari struktur MMIOINFO diasumsikan sebagai handel file standar (non-HMMIO) dari file yang saat ini terbuka.
Saat membuka file memori, atur szFilename ke NULL.
pmmioinfo
Penunjuk ke struktur MMIOINFO yang berisi parameter tambahan yang digunakan oleh mmioOpen. Kecuali Anda membuka file memori, menentukan ukuran buffer untuk I/O yang di-buffer, atau menentukan prosedur I/O yang dihapus untuk membuka file, parameter ini harus NULL. Jika parameter ini bukan NULL, semua anggota struktur MMIOINFO yang tidak digunakan, referensinya harus diatur ke nol, termasuk anggota yang dicadangkan.
fdwOpen
Bendera untuk operasi terbuka. Bendera MMIO_READ, MMIO_WRITE, dan MMIO_READWRITE saling eksklusif - hanya satu yang harus ditentukan. Bendera MMIO_COMPAT, MMIO_EXCLUSIVE, MMIO_DENYWRITE, MMIO_DENYREAD, dan MMIO_DENYNONE adalah bendera berbagi file. Nilai berikut didefinisikan.
Nilai | Makna |
---|---|
MMIO_ALLOCBUF | Membuka file untuk I/O yang di-buffer. Untuk mengalokasikan buffer yang lebih besar atau lebih kecil dari ukuran buffer default (8K, didefinisikan sebagai MMIO_DEFAULTBUFFER), atur anggota cchBuffer dari struktur MMIOINFO ke ukuran buffer yang diinginkan. Jika cchBuffer adalah nol, ukuran buffer default digunakan. Jika Anda menyediakan buffer I/O Anda sendiri, bendera ini tidak boleh digunakan. |
MMIO_COMPAT | Membuka file dengan mode kompatibilitas, memungkinkan proses apa pun pada komputer tertentu untuk membuka file beberapa kali. Jika file telah dibuka dengan salah satu mode berbagi lainnya, mmioOpen gagal. |
MMIO_CREATE | Membuat file baru. Jika file sudah ada, file tersebut dipotok menjadi panjang nol. Untuk file memori, bendera ini menunjukkan akhir file awalnya berada di awal buffer. |
MMIO_DELETE | Menghapus file. Jika bendera ini ditentukan, szFilename tidak boleh NULL. Nilai yang dikembalikan adalah TRUE (ditransmisikan ke HMMIO) jika file berhasil dihapus atau FALSE sebaliknya. Jangan panggil fungsi mmioClose untuk file yang telah dihapus. Jika bendera ini ditentukan, semua bendera lain yang membuka file diabaikan. |
MMIO_DENYNONE | Membuka file tanpa menolak proses lain membaca atau menulis akses ke file. Jika file telah dibuka dalam mode kompatibilitas oleh proses lain, mmioOpen gagal. |
MMIO_DENYREAD | Membuka file dan menolak proses lain membaca akses ke file. Jika file telah dibuka dalam mode kompatibilitas atau untuk akses baca oleh proses lain, mmioOpen gagal. |
MMIO_DENYWRITE | Membuka file dan menolak proses lain menulis akses ke file. Jika file telah dibuka dalam mode kompatibilitas atau untuk akses tulis oleh proses lain, mmioOpen gagal. |
MMIO_EXCLUSIVE | Membuka file dan menolak proses lain membaca dan menulis akses ke file. Jika file telah dibuka dalam mode lain untuk akses baca atau tulis, bahkan oleh proses saat ini, mmioOpen gagal. |
MMIO_EXIST | Menentukan apakah file yang ditentukan ada dan membuat nama file yang sepenuhnya memenuhi syarat dari jalur yang ditentukan dalam szFilename. Nilai yang dikembalikan adalah TRUE (ditransmisikan ke HMMIO) jika kualifikasi berhasil dan file ada atau FALSE sebaliknya. File tidak dibuka, dan fungsi tidak mengembalikan handel file I/O file multimedia yang valid, jadi jangan mencoba menutup file.
Catatan Aplikasi harus memanggil GetFileAttributes atau GetFileAttributesEx sebagai gantinya.
|
MMIO_GETTEMP |
Membuat nama file sementara, secara opsional menggunakan parameter yang diteruskan dalam szFilename. Misalnya, Anda dapat menentukan "C:F" untuk membuat file sementara yang berada di drive C, dimulai dengan huruf "F". Nama file yang dihasilkan disalin ke buffer yang diacu oleh szFilename. Buffer harus cukup besar untuk menampung setidaknya 128 karakter.
Jika nama file sementara berhasil dibuat, nilai yang dikembalikan MMSYSERR_NOERROR (ditransmisikan ke HMMIO). Jika tidak, nilai yang dikembalikan MMIOERR_FILENOTFOUND sebaliknya. File tidak dibuka, dan fungsi tidak mengembalikan handel file I/O file multimedia yang valid, jadi jangan mencoba menutup file. Bendera ini menggantikan semua bendera lainnya.
Catatan Aplikasi harus memanggil GetTempFileName sebagai gantinya.
|
MMIO_PARSE |
Membuat nama file yang sepenuhnya memenuhi syarat dari jalur yang ditentukan dalam szFilename. Nama yang sepenuhnya memenuhi syarat disalin ke buffer yang diacu oleh szFilename. Buffer harus cukup besar untuk menampung setidaknya 128 karakter.
Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE (ditransmisikan ke HMMIO). Jika tidak, nilai yang dikembalikan adalah FALSE. File tidak dibuka, dan fungsi tidak mengembalikan handel file I/O file multimedia yang valid, jadi jangan mencoba menutup file. Jika bendera ini ditentukan, semua bendera yang membuka file diabaikan.
Catatan Aplikasi harus memanggil GetFullPathName sebagai gantinya.
|
MMIO_READ | Membuka file untuk dibaca saja. Ini adalah default jika MMIO_WRITE dan MMIO_READWRITE tidak ditentukan. |
MMIO_READWRITE | Membuka file untuk membaca dan menulis. |
MMIO_WRITE | Membuka file hanya untuk menulis. |
Nilai kembali
Mengembalikan handel dari file yang dibuka. Jika file tidak dapat dibuka, nilai yang dikembalikan adalah NULL. Jika lpmmioinfo bukan NULL, anggota wErrorRet dari struktur MMIOINFO akan berisi salah satu nilai kesalahan berikut.
Menampilkan kode | Deskripsi |
---|---|
|
File dilindungi dan tidak dapat dibuka. |
|
Terjadi kondisi kegagalan lain. Ini adalah kesalahan default untuk kegagalan file terbuka. |
|
Jaringan tidak merespons permintaan untuk membuka file jarak jauh. |
|
Spesifikasi direktori salah. |
|
File sedang digunakan oleh aplikasi lain dan tidak tersedia. |
|
Jumlah file yang terbuka secara bersamaan berada pada tingkat maksimum. Sistem kehabisan handel file yang tersedia. |
Keterangan
Jika lpmmioinfo menunjuk ke struktur MMIOINFO , inisialisasi anggota struktur sebagai berikut. Semua anggota yang tidak digunakan harus diatur ke nol, termasuk anggota yang dipesan.
- Untuk meminta agar file dibuka dengan prosedur I/O yang diinstal, atur fccIOProc ke kode empat karakter prosedur I/O, dan atur pIOProc ke NULL.
- Untuk meminta agar file dibuka dengan prosedur I/O yang dihapus instalannya, atur IOProc untuk menunjuk ke prosedur I/O, dan atur fccIOProc ke NULL.
- Untuk meminta mmioOpen menentukan prosedur I/O mana yang akan digunakan untuk membuka file berdasarkan nama file yang terkandung dalam szFilename, atur fccIOProc dan pIOProc ke NULL. Ini adalah perilaku default jika tidak ada struktur MMIOINFO yang ditentukan.
- Untuk membuka file memori menggunakan buffer yang dialokasikan dan dikelola secara internal, atur pchBuffer ke NULL, fccIOProc ke FOURCC_MEM, cchBuffer ke ukuran awal buffer, dan adwInfo ke ukuran ekspansi bertahap buffer. File memori ini akan secara otomatis diperluas dengan kenaikan jumlah byte yang ditentukan dalam adwInfo bila perlu. Tentukan bendera MMIO_CREATE untuk parameter dwOpenFlags untuk awalnya mengatur akhir file menjadi awal buffer.
- Untuk membuka file memori menggunakan buffer yang disediakan aplikasi, atur pchBuffer untuk menunjuk ke buffer memori, fccIOProc ke FOURCC_MEM, cchBuffer ke ukuran buffer, dan adwInfo ke ukuran ekspansi buffer bertahap. Ukuran ekspansi dalam adwInfo harus bukan nol hanya jika pchBuffer adalah pointer yang diperoleh dengan memanggil fungsi GlobalAlloc dan GlobalLock ; dalam hal ini, fungsi GlobalReAlloc akan dipanggil untuk memperluas buffer. Dengan kata lain, jika pchBuffer menunjuk ke array lokal atau global atau blok memori di tumpukan lokal, adwInfo harus nol. Tentukan bendera MMIO_CREATE untuk parameter dwOpenFlags untuk awalnya mengatur akhir file menjadi awal buffer. Jika tidak, seluruh blok memori dianggap dapat dibaca.
- Untuk menggunakan handel file standar yang saat ini terbuka (yaitu, handel file yang tidak memiliki jenis HMMIO ) dengan layanan I/O file multimedia, atur fccIOProc ke FOURCC_DOS, pchBuffer ke NULL, dan adwInfo ke handel file standar. Offset dalam file akan relatif terhadap awal file dan tidak terkait dengan posisi dalam file standar pada saat mmioOpen dipanggil; offset I/O file multimedia awal akan sama dengan offset dalam file standar ketika mmioOpen dipanggil. Untuk menutup handel file I/O file multimedia tanpa menutup handel file standar, teruskan bendera MMIO_FHOPEN ke mmioClose.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | mmiscapi.h (termasuk Mmiscapi.h, Windows.h) |
Pustaka | Winmm.lib |
DLL | Winmm.dll |