Compartir a través de


Función mmioOpenA (mmiscapi.h)

La función mmioOpen abre un archivo para E/S sin búfer o almacenado en búfer; crea un archivo; elimina un archivo; o comprueba si existe un archivo. El archivo puede ser un archivo estándar, un archivo de memoria o un elemento de un sistema de almacenamiento personalizado. El identificador devuelto por mmioOpen no es un identificador de archivo estándar; no lo use con ninguna función de E/S de archivos que no sea funciones de E/S de archivos multimedia.

Nota Esta función está en desuso. Las aplicaciones deben llamar a CreateFile para crear o abrir archivos.
 

Sintaxis

HMMIO mmioOpenA(
  LPSTR      pszFileName,
  LPMMIOINFO pmmioinfo,
  DWORD      fdwOpen
);

Parámetros

pszFileName

Puntero a un búfer que contiene el nombre del archivo. Si no se especifica ningún procedimiento de E/S para abrir el archivo, el nombre de archivo determina cómo se abre el archivo, como se indica a continuación:

  • Si el nombre de archivo no contiene un signo más (+), se supone que es el nombre de un archivo estándar (es decir, un archivo cuyo tipo no es HMMIO).
  • Si el nombre de archivo es del formulario EXAMPLE. EXT+ABC, se supone que la extensión EXT identifica un procedimiento de E/S instalado al que se llama para realizar E/S en el archivo. Para obtener más información, vea mmioInstallIOProc.
  • Si el nombre de archivo es NULL y no se da ningún procedimiento de E/S, se supone que el miembro adwInfo del MMIOINFO es el identificador de archivo estándar (noHMMIO) de un archivo abierto actualmente.
El nombre de archivo no debe tener más de 128 caracteres, incluido el carácter NULL de terminación.

Al abrir un archivo de memoria, establezca szFilename en NULL.

pmmioinfo

Puntero a una estructura de MMIOINFO de que contiene parámetros adicionales utilizados por mmioOpen. A menos que abra un archivo de memoria, especificando el tamaño de un búfer para la E/S almacenada en búfer o especificando un procedimiento de E/S desinstalado para abrir un archivo, este parámetro debe ser NULL. Si este parámetro no es null, todos los miembros no utilizados de la estructura MMIOINFO de se deben establecer en cero, incluidos los miembros reservados.

fdwOpen

Marcas para la operación de apertura. Las marcas MMIO_READ, MMIO_WRITE y MMIO_READWRITE son mutuamente excluyentes; solo se debe especificar una. Las marcas MMIO_COMPAT, MMIO_EXCLUSIVE, MMIO_DENYWRITE, MMIO_DENYREAD y MMIO_DENYNONE son marcas de uso compartido de archivos. Se definen los siguientes valores.

Valor Significado
MMIO_ALLOCBUF Abre un archivo para E/S almacenada en búfer. Para asignar un búfer mayor o menor que el tamaño de búfer predeterminado (8K, definido como MMIO_DEFAULTBUFFER), establezca el cchBuffer miembro de la estructura de MMIOINFO en el tamaño de búfer deseado. Si cchBuffer es cero, se usa el tamaño de búfer predeterminado. Si proporciona su propio búfer de E/S, esta marca no debe usarse.
MMIO_COMPAT Abre el archivo con modo de compatibilidad, lo que permite que cualquier proceso de una máquina determinada abra el archivo en cualquier número de veces. Si el archivo se ha abierto con cualquiera de los otros modos de uso compartido, mmioOpen produce un error.
MMIO_CREATE Crea un nuevo archivo. Si el archivo ya existe, se trunca a una longitud cero. En el caso de los archivos de memoria, esta marca indica que el final del archivo se encuentra inicialmente al principio del búfer.
MMIO_DELETE Elimina un archivo. Si se especifica esta marca, szFilename no debe ser NULL. El valor devuelto es TRUE (conversión a HMMIO) si el archivo se eliminó correctamente o FALSE de lo contrario. No llame a la función mmioClose para un archivo que se ha eliminado. Si se especifica esta marca, se omiten todas las demás marcas que abren archivos.
MMIO_DENYNONE Abre el archivo sin denegar a otros procesos acceso de lectura o escritura al archivo. Si cualquier otro proceso ha abierto el archivo en modo de compatibilidad, mmioOpen produce un error.
MMIO_DENYREAD Abre el archivo y deniega a otros procesos acceso de lectura al archivo. Si el archivo se ha abierto en modo de compatibilidad o para el acceso de lectura por cualquier otro proceso, mmioOpen produce un error.
MMIO_DENYWRITE Abre el archivo y deniega a otros procesos el acceso de escritura al archivo. Si el archivo se ha abierto en modo de compatibilidad o para el acceso de escritura por cualquier otro proceso, mmioOpen produce un error.
MMIO_EXCLUSIVE Abre el archivo y deniega a otros procesos acceso de lectura y escritura al archivo. Si el archivo se ha abierto en cualquier otro modo para el acceso de lectura o escritura, incluso mediante el proceso actual, mmioOpen produce un error.
MMIO_EXIST Determina si el archivo especificado existe y crea un nombre de archivo completo a partir de la ruta de acceso especificada en szFilename. El valor devuelto es TRUE (convertido a HMMIO) si la calificación se realizó correctamente y el archivo existe o FALSE de lo contrario. El archivo no se abre y la función no devuelve un identificador de archivo multimedia de E/S válido, por lo que no intenta cerrar el archivo.
Note Applications debe llamar a GetFileAttributes o GetFileAttributesEx en su lugar.
 
MMIO_GETTEMP Crea un nombre de archivo temporal, opcionalmente mediante los parámetros pasados en szFilename. Por ejemplo, puede especificar "C:F" para crear un archivo temporal que resida en la unidad C, empezando por la letra "F". El nombre de archivo resultante se copia en el búfer al que apunta szFilename. El búfer debe ser lo suficientemente grande como para contener al menos 128 caracteres.

Si el nombre de archivo temporal se creó correctamente, el valor devuelto se MMSYSERR_NOERROR (se convierte en HMMIO). De lo contrario, el valor devuelto se MMIOERR_FILENOTFOUND de lo contrario. El archivo no se abre y la función no devuelve un identificador de archivo multimedia de E/S válido, por lo que no intenta cerrar el archivo. Esta marca invalida todas las demás marcas.

Note Applications debe llamar a GetTempFileName en su lugar.
 
MMIO_PARSE Crea un nombre de archivo completo a partir de la ruta de acceso especificada en szFilename. El nombre completo se copia en el búfer al que apunta szFilename. El búfer debe ser lo suficientemente grande como para contener al menos 128 caracteres.

Si la función se ejecuta correctamente, el valor devuelto es TRUE (se convierte en HMMIO). De lo contrario, el valor devuelto es FALSE. El archivo no se abre y la función no devuelve un identificador de archivo multimedia de E/S válido, por lo que no intenta cerrar el archivo. Si se especifica esta marca, se omiten todas las marcas que abren archivos.

Note Applications debe llamar a GetFullPathName en su lugar.
 
MMIO_READ Abre el archivo para leer solo. Este es el valor predeterminado si no se especifican MMIO_WRITE y MMIO_READWRITE.
MMIO_READWRITE Abre el archivo para leer y escribir.
MMIO_WRITE Abre el archivo solo para escribir.

Valor devuelto

Ninguno

Observaciones

Si lpmmioinfo apunta a una estructura de MMIOINFO, inicialice los miembros de la estructura de la siguiente manera. Todos los miembros sin usar deben establecerse en cero, incluidos los miembros reservados.

  • Para solicitar que un archivo se abra con un procedimiento de E/S instalado, establezca fccIOProc en el código de cuatro caracteres del procedimiento de E/S y establezca pIOProc en NULL.
  • Para solicitar que un archivo se abra con un procedimiento de E/S desinstalado, establezca ioProc para que apunte al procedimiento de E/S y establezca fccIOProc en NULL.
  • Para solicitar que mmioOpen determinar qué procedimiento de E/S se va a usar para abrir el archivo en función del nombre de archivo contenido en szFilename, establezca fccIOProc y pIOProc en NULL. Este es el comportamiento predeterminado si no se especifica ninguna estructura mmIOINFO .
  • Para abrir un archivo de memoria mediante un búfer administrado y asignado internamente, establezca pchBuffer en NULL, fccIOProc en FOURCC_MEM, cchBuffer al tamaño inicial del búfer y adwInfo al tamaño de expansión incremental del búfer. Este archivo de memoria se expandirá automáticamente en incrementos del número de bytes especificados en adwInfo cuando sea necesario. Especifique la marca MMIO_CREATE para el parámetro dwOpenFlags para establecer inicialmente el final del archivo para que sea el principio del búfer.
  • Para abrir un archivo de memoria mediante un búfer proporcionado por la aplicación, establezca pchBuffer para que apunte al búfer de memoria, fccIOProc a FOURCC_MEM, cchBuffer al tamaño del búfer y adwInfo al tamaño de expansión incremental del búfer. El tamaño de expansión en adwInfo debe ser distinto de cero solo si pchBuffer es un puntero obtenido llamando al globalAlloc y a las funciones GlobalLock; en este caso, se llamará a la función GlobalReAlloc para expandir el búfer. Es decir, si pchBuffer apunta a una matriz local o global o a un bloque de memoria en el montón local, adwInfo debe ser cero. Especifique la marca MMIO_CREATE para el parámetro dwOpenFlags para establecer inicialmente el final del archivo para que sea el principio del búfer. De lo contrario, se considera legible todo el bloque de memoria.
  • Para usar un identificador de archivo estándar abierto actualmente (es decir, un identificador de archivo que no tiene el tipo de HMMIO) con servicios de E/S de archivos multimedia, establezca fccIOProc en FOURCC_DOS, pchBuffer para NULLy adwInfo al identificador de archivo estándar. Los desplazamientos dentro del archivo serán relativos al principio del archivo y no están relacionados con la posición del archivo estándar en el momento en que se llama a mmioOpen; el desplazamiento inicial de E/S del archivo multimedia será el mismo que el desplazamiento en el archivo estándar cuando se llama a mmioOpen. Para cerrar el identificador de archivo de E/S multimedia sin cerrar el identificador de archivo estándar, pase la marca de MMIO_FHOPEN a mmioClose.
Debe llamar a mmioClose para cerrar un archivo abierto mediante mmioOpen. Los archivos abiertos no se cierran automáticamente cuando se cierra una aplicación.

Nota

El encabezado mmiscapi.h define mmioOpen como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de mmiscapi.h (incluya Mmiscapi.h, Windows.h)
biblioteca de Winmm.lib
DLL de Winmm.dll