Bagikan melalui


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.

Catatan Fungsi ini tidak digunakan lagi. Aplikasi harus memanggil CreateFile untuk membuat atau membuka file.
 

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.
Nama file tidak boleh lebih panjang dari 128 karakter, termasuk karakter NULL yang mengakhiri.

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
MMIOERR_ACCESSDENIED
File dilindungi dan tidak dapat dibuka.
MMIOERR_INVALIDFILE
Terjadi kondisi kegagalan lain. Ini adalah kesalahan default untuk kegagalan file terbuka.
MMIOERR_NETWORKERROR
Jaringan tidak merespons permintaan untuk membuka file jarak jauh.
MMIOERR_PATHNOTFOUND
Spesifikasi direktori salah.
MMIOERR_SHARINGVIOLATION
File sedang digunakan oleh aplikasi lain dan tidak tersedia.
MMIOERR_TOOMANYOPENFILES
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.
Anda harus memanggil mmioClose untuk menutup file yang dibuka dengan menggunakan mmioOpen. File terbuka tidak ditutup secara otomatis ketika aplikasi keluar.

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