Partager via


mmioOpenA, fonction (mmiscapi.h)

La fonction mmioOpen ouvre un fichier pour les E/S non chiffrées ou mises en mémoire tampon ; crée un fichier ; supprime un fichier ; ou vérifie si un fichier existe. Le fichier peut être un fichier standard, un fichier mémoire ou un élément d’un système de stockage personnalisé. Le handle retourné par mmioOpen n’est pas un handle de fichier standard ; ne l’utilisez pas avec des fonctions d’E/S de fichier autres que les fonctions d’E/S multimédias.

Remarque Cette fonction est déconseillée. Les applications doivent appeler createFile pour créer ou ouvrir des fichiers.
 

Syntaxe

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

Paramètres

pszFileName

Pointeur vers une mémoire tampon qui contient le nom du fichier. Si aucune procédure d’E/S n’est spécifiée pour ouvrir le fichier, le nom du fichier détermine la façon dont le fichier est ouvert, comme suit :

  • Si le nom de fichier ne contient pas de signe plus (+), il est supposé être le nom d’un fichier standard (autrement dit, un fichier dont le type n’est pas HMMIO).
  • Si le nom de fichier est du formulaire EXAMPLE. EXT+ABC, l’extension EXT est supposée identifier une procédure d’E/S installée appelée pour effectuer des E/S sur le fichier. Pour plus d’informations, consultez mmioInstallIOProc.
  • Si le nom de fichier est NULL et qu’aucune procédure d’E/S n’est donnée, le adwInfo membre de la structure MMIOINFO est supposé être le handle de fichier standard (nonHMMIO) d’un fichier actuellement ouvert.
Le nom de fichier ne doit pas dépasser 128 caractères, y compris le caractère NULL de fin.

Lors de l’ouverture d’un fichier mémoire, définissez szFilename sur NULL.

pmmioinfo

Pointeur vers une structure MMIOINFO contenant des paramètres supplémentaires utilisés par mmioOpen. Sauf si vous ouvrez un fichier mémoire, en spécifiant la taille d’une mémoire tampon pour les E/S mises en mémoire tampon ou en spécifiant une procédure d’E/S désinstallée pour ouvrir un fichier, ce paramètre doit être NULL. Si ce paramètre n’est pas NULL, tous les membres inutilisés de la structure MMIOINFO qu’il référence doit avoir la valeur zéro, y compris les membres réservés.

fdwOpen

Indicateurs pour l’opération d’ouverture. Les indicateurs MMIO_READ, MMIO_WRITE et MMIO_READWRITE s’excluent mutuellement. Un seul indicateur doit être spécifié. Les indicateurs MMIO_COMPAT, MMIO_EXCLUSIVE, MMIO_DENYWRITE, MMIO_DENYREAD et MMIO_DENYNONE sont des indicateurs de partage de fichiers. Les valeurs suivantes sont définies.

Valeur Signification
MMIO_ALLOCBUF Ouvre un fichier pour les E/S mises en mémoire tampon. Pour allouer une mémoire tampon supérieure ou inférieure à la taille de mémoire tampon par défaut (8 Ko, définie comme MMIO_DEFAULTBUFFER), définissez le membre cchBuffer de la structure MMIOINFO à la taille de mémoire tampon souhaitée. Si cchBuffer est égal à zéro, la taille de mémoire tampon par défaut est utilisée. Si vous fournissez votre propre mémoire tampon d’E/S, cet indicateur ne doit pas être utilisé.
MMIO_COMPAT Ouvre le fichier en mode de compatibilité, ce qui permet à n’importe quel processus sur un ordinateur donné d’ouvrir le fichier plusieurs fois. Si le fichier a été ouvert avec l’un des autres modes de partage, mmioOpen échoue.
MMIO_CREATE Crée un fichier. Si le fichier existe déjà, il est tronqué à zéro longueur. Pour les fichiers mémoire, cet indicateur indique que la fin du fichier est initialement au début de la mémoire tampon.
MMIO_DELETE Supprime un fichier. Si cet indicateur est spécifié, szFilename ne doit pas être NULL. La valeur de retour est TRUE (cast en HMMIO) si le fichier a été supprimé correctement ou FALSE sinon. N’appelez pas la fonction mmioClose pour un fichier supprimé. Si cet indicateur est spécifié, tous les autres indicateurs qui ouvrent des fichiers sont ignorés.
MMIO_DENYNONE Ouvre le fichier sans refuser d’autres processus d’accès en lecture ou en écriture au fichier. Si le fichier a été ouvert en mode de compatibilité par tout autre processus, mmioOpen échoue.
MMIO_DENYREAD Ouvre le fichier et refuse à d’autres processus l’accès en lecture au fichier. Si le fichier a été ouvert en mode de compatibilité ou pour l’accès en lecture par tout autre processus, mmioOpen échoue.
MMIO_DENYWRITE Ouvre le fichier et refuse à d’autres processus l’accès en écriture au fichier. Si le fichier a été ouvert en mode de compatibilité ou pour l’accès en écriture par tout autre processus, mmioOpen échoue.
MMIO_EXCLUSIVE Ouvre le fichier et refuse à d’autres processus l’accès en lecture et en écriture au fichier. Si le fichier a été ouvert en tout autre mode pour l’accès en lecture ou en écriture, même par le processus actuel, mmioOpen échoue.
MMIO_EXIST Détermine si le fichier spécifié existe et crée un nom de fichier complet à partir du chemin d’accès spécifié dans szFilename. La valeur de retour est TRUE (cast en HMMIO) si la qualification a réussi et que le fichier existe ou FALSE sinon. Le fichier n’est pas ouvert et la fonction ne retourne pas de handle de fichier multimédia valide. Par conséquent, ne tentez pas de fermer le fichier.
Remarque Applications doivent appeler GetFileAttributes ou GetFileAttributesEx à la place.
 
MMIO_GETTEMP Crée un nom de fichier temporaire, éventuellement à l’aide des paramètres passés dans szFilename. Par exemple, vous pouvez spécifier « C :F » pour créer un fichier temporaire résidant sur le lecteur C, en commençant par la lettre « F ». Le nom de fichier résultant est copié dans la mémoire tampon pointée par szFilename. La mémoire tampon doit être suffisamment grande pour contenir au moins 128 caractères.

Si le nom de fichier temporaire a été créé avec succès, la valeur de retour est MMSYSERR_NOERROR (caste en HMMIO). Sinon, la valeur de retour est MMIOERR_FILENOTFOUND sinon. Le fichier n’est pas ouvert et la fonction ne retourne pas de handle de fichier multimédia valide. Par conséquent, ne tentez pas de fermer le fichier. Cet indicateur remplace tous les autres indicateurs.

Remarque Applications doivent appeler GetTempFileName à la place.
 
MMIO_PARSE Crée un nom de fichier complet à partir du chemin d’accès spécifié dans szFilename. Le nom complet est copié dans la mémoire tampon pointée par szFilename. La mémoire tampon doit être suffisamment grande pour contenir au moins 128 caractères.

Si la fonction réussit, la valeur de retour est TRUE (caste en HMMIO). Sinon, la valeur de retour est FALSE. Le fichier n’est pas ouvert et la fonction ne retourne pas de handle de fichier multimédia valide. Par conséquent, ne tentez pas de fermer le fichier. Si cet indicateur est spécifié, tous les indicateurs qui ouvrent des fichiers sont ignorés.

Remarque Applications doivent appeler GetFullPathName à la place.
 
MMIO_READ Ouvre le fichier pour la lecture uniquement. Il s’agit de la valeur par défaut si MMIO_WRITE et MMIO_READWRITE ne sont pas spécifiés.
MMIO_READWRITE Ouvre le fichier pour la lecture et l’écriture.
MMIO_WRITE Ouvre le fichier pour l’écriture uniquement.

Valeur de retour

Aucun

Remarques

Si lpmmioinfo pointe vers une structure MMIOINFO, initialisez les membres de la structure comme suit. Tous les membres inutilisés doivent être définis sur zéro, y compris les membres réservés.

  • Pour demander qu’un fichier soit ouvert avec une procédure d’E/S installée, définissez fccIOProc sur le code à quatre caractères de la procédure d’E/S et définissez pIOProc sur null.
  • Pour demander qu’un fichier soit ouvert avec une procédure d’E/S désinstallée, définissez IOProc pour pointer vers la procédure d’E/S et définissez fccIOProc sur NULL.
  • Pour demander que mmioOpen déterminez la procédure d’E/S à utiliser pour ouvrir le fichier en fonction du nom de fichier contenu dans szFilename, définissez fccIOProc et pIOProc sur NULL. Il s’agit du comportement par défaut si aucune structure MMIOINFO n’est spécifiée.
  • Pour ouvrir un fichier mémoire à l’aide d’une mémoire tampon allouée et gérée en interne, définissez pchBuffer sur NULL, fccIOProc sur FOURCC_MEM, cchBuffer sur la taille initiale de la mémoire tampon et adwInfo à la taille d’expansion incrémentielle de la mémoire tampon. Ce fichier mémoire est automatiquement développé par incréments du nombre d’octets spécifiés dans adwInfo si nécessaire. Spécifiez l’indicateur MMIO_CREATE pour le paramètre dwOpenFlags pour définir initialement la fin du fichier comme début de la mémoire tampon.
  • Pour ouvrir un fichier mémoire à l’aide d’une mémoire tampon fournie par l’application, définissez pchBuffer pour pointer vers la mémoire tampon, fccIOProc sur FOURCC_MEM, cchBuffer sur la taille de la mémoire tampon, et adwInfo à la taille d’expansion incrémentielle de la mémoire tampon. La taille d’expansion dans adwInfo ne doit être différente de zéro que si pchBuffer est un pointeur obtenu en appelant les fonctions GlobalAlloc et GlobalLock ; dans ce cas, la fonction GlobalReAlloc sera appelée pour développer la mémoire tampon. En d’autres termes, si pchBuffer pointe vers un tableau local ou global ou un bloc de mémoire dans le tas local, adwInfo doit être égal à zéro. Spécifiez l’indicateur MMIO_CREATE pour le paramètre dwOpenFlags pour définir initialement la fin du fichier comme début de la mémoire tampon. Sinon, l’ensemble du bloc de mémoire est considéré comme lisible.
  • Pour utiliser un handle de fichier standard ouvert (autrement dit, un handle de fichier qui n’a pas le type de HMMIO ) avec des services d’E/S de fichiers multimédias, définissez fccIOProc sur FOURCC_DOS, pchBuffer sur NULL et adwInfo sur le handle de fichier standard. Les décalages au sein du fichier sont relatifs au début du fichier et ne sont pas liés à la position dans le fichier standard au moment où mmioOpen est appelé ; le décalage d’E/S du fichier multimédia initial est identique au décalage dans le fichier standard lorsque mmioOpen est appelé. Pour fermer le handle de fichier multimédia d’E/S sans fermer le handle de fichier standard, passez l’indicateur MMIO_FHOPEN à mmioClose.
Vous devez appeler mmioClose pour fermer un fichier ouvert à l’aide de mmioOpen. Les fichiers ouverts ne sont pas fermés automatiquement lorsqu’une application se ferme.

Note

L’en-tête mmiscapi.h définit mmioOpen en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête mmiscapi.h (include Mmiscapi.h, Windows.h)
bibliothèque Winmm.lib
DLL Winmm.dll