Share via


Función mmioOpenW (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 archivo 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 mmioOpenW(
  LPWSTR     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 tiene el formato 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 de la estructura MMIOINFO es el identificador de archivo estándar (no HMMIO) 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 MMIOINFO 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 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 sin usar de la estructura MMIOINFO a la que hace referencia deben establecerse 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 valores siguientes.

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 miembro cchBuffer de la estructura MMIOINFO en el tamaño de búfer deseado. Si cchBuffer es cero, se usa el tamaño predeterminado del búfer. Si va a proporcionar 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 un equipo determinado abra el archivo en cualquier número de veces. Si el archivo se ha abierto con cualquiera de los demás modos de uso compartido, se produce un error en mmioOpen .
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 está 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 en caso contrario. No llame a la función mmioClose para un archivo que se haya 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, se produce un error en mmioOpen .
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 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 en el proceso actual, se produce un error mmioOpen .
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 (conversión a HMMIO) si la calificación se realizó correctamente y el archivo existe o FALSE en caso contrario. El archivo no está abierto y la función no devuelve un identificador de archivo multimedia válido de E/S, por lo que no intente cerrar el archivo.
Nota Las aplicaciones deben llamar a GetFileAttributes o GetFileAttributesEx en su lugar.
 
MMIO_GETTEMP Crea un nombre de archivo temporal, opcionalmente con 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 es MMSYSERR_NOERROR (conversión a HMMIO). De lo contrario, el valor devuelto se MMIOERR_FILENOTFOUND de lo contrario. El archivo no está abierto y la función no devuelve un identificador de archivo multimedia válido de E/S, por lo que no intente cerrar el archivo. Esta marca invalida todas las demás marcas.

Nota Las aplicaciones deben 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 (convertido a HMMIO). De lo contrario, el valor devuelto es FALSE. El archivo no está abierto y la función no devuelve un identificador de archivo multimedia válido de E/S, por lo que no intente cerrar el archivo. Si se especifica esta marca, se omiten todas las marcas que abren archivos.

Nota Las aplicaciones deben llamar a GetFullPathName en su lugar.
 
MMIO_READ Abre el archivo únicamente para leerlo. 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 únicamente para escribir en él.

Valor devuelto

None

Observaciones

Si lpmmioinfo apunta a una estructura MMIOINFO , inicialice los miembros de la estructura como se indica a continuación. Todos los miembros sin usar deben establecerse en cero, incluidos los miembros reservados.

  • Para solicitar que se abra un archivo 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 determine 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 en el tamaño inicial del búfer y adwInfo en el 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 en 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 a las funciones GlobalAlloc y 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 HMMIO ) con servicios de E/S de archivos multimedia, establezca fccIOProc en FOURCC_DOS, pchBuffer en NULL y adwInfo en el 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 en el 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 multimedia de E/S sin cerrar el identificador de archivo estándar, pase la marca 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 Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado mmiscapi.h (incluye Mmiscapi.h, Windows.h)
Library Winmm.lib
Archivo DLL Winmm.dll