Partager via


fonction mmioOpenW (mmiscapi.h)

La fonction mmioOpen ouvre un fichier pour les E/S sans débogage 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 les fonctions d’E/S de fichier autres que les fonctions d’E/S de fichier multimédia.

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

Syntaxe

HMMIO mmioOpenW(
  LPWSTR     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 de la forme 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 membre adwInfo de la structure MMIOINFO est supposé être le handle de fichier standard (non-HMMIO) 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. À moins d’ouvrir un fichier mémoire, de spécifier la taille d’une mémoire tampon pour les E/S mises en mémoire tampon ou de spécifier une procédure d’E/S désinstallée pour ouvrir un fichier, ce paramètre doit avoir la valeur NULL. Si ce paramètre n’est pas NULL, tous les membres inutilisés de la structure MMIOINFO qu’il référence doivent être définis sur zéro, y compris les membres réservés.

fdwOpen

Indicateurs de l’opération d’ouverture. Les indicateurs MMIO_READ, MMIO_WRITE et MMIO_READWRITE s’excluent mutuellement. Un seul 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 sur 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 une machine donnée d’ouvrir le fichier un nombre quelconque de fois. Si le fichier a été ouvert avec l’un des autres modes de partage, mmioOpen échoue.
MMIO_CREATE Crée un nouveau 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 se trouve initialement au début de la mémoire tampon.
MMIO_DELETE Supprime un fichier. Si cet indicateur est spécifié, szFilename ne doit pas avoir la valeur NULL. La valeur de retour est TRUE (cast en HMMIO) si le fichier a été supprimé avec succès ou FALSE dans le cas contraire. N’appelez pas la fonction mmioClose pour un fichier qui a été 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 l’accès en lecture ou en écriture à d’autres processus au fichier. Si le fichier a été ouvert en mode de compatibilité par un 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 un accès en lecture par tout autre processus, mmioOpen échoue.
MMIO_DENYWRITE Ouvre le fichier et refuse l’accès en écriture à d’autres processus au fichier. Si le fichier a été ouvert en mode de compatibilité ou pour un 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 dans un autre mode pour l’accès en lecture ou en écriture, même par le processus en cours, mmioOpen échoue.
MMIO_EXIST Détermine si le fichier spécifié existe et crée un nom de fichier complet à partir du chemin 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 dans le cas contraire. Le fichier n’est pas ouvert et la fonction ne retourne pas de handle d’E/S de fichier multimédia valide. Ne tentez donc pas de fermer le fichier.
Note Les applications doivent appeler GetFileAttributes ou GetFileAttributesEx à la place.
 
MMIO_GETTEMP Crée un nom de fichier temporaire, éventuellement à l’aide des paramètres transmis 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 (cast 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 d’E/S de fichier multimédia valide. Ne tentez donc pas de fermer le fichier. Cet indicateur remplace tous les autres indicateurs.

Note Les applications doivent appeler GetTempFileName à la place.
 
MMIO_PARSE Crée un nom de fichier complet à partir du chemin 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 (cast en HMMIO). Sinon, la valeur renvoyée est FALSE. Le fichier n’est pas ouvert et la fonction ne retourne pas de handle d’E/S de fichier multimédia valide. Ne tentez donc pas de fermer le fichier. Si cet indicateur est spécifié, tous les indicateurs qui ouvrent des fichiers sont ignorés.

Note Les applications doivent appeler GetFullPathName à la place.
 
MMIO_READ Ouvre le fichier pour un accès en 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'accès en écriture uniquement.

Valeur de retour

None

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 l’ouverture d’un fichier 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 l’ouverture d’un fichier avec une procédure d’E/S désinstallée, définissez IOProc pour qu’il pointe vers la procédure d’E/S et définissez fccIOProc sur NULL.
  • Pour demander que mmioOpen détermine la procédure d’E/S à utiliser pour ouvrir le fichier en fonction du nom de fichier contenu dans szFilename, définissezfccIOProc 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 sur la taille d’expansion incrémentielle de la mémoire tampon. Ce fichier de mémoire est automatiquement développé par incréments du nombre d’octets spécifié dans adwInfo si nécessaire. Spécifiez l’indicateur MMIO_CREATE pour le paramètre dwOpenFlags afin de définir initialement la fin du fichier comme étant le 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 qu’il pointe vers la mémoire tampon, fccIOProc sur FOURCC_MEM, cchBuffer sur la taille de la mémoire tampon et adwInfo sur la taille d’expansion incrémentielle de la mémoire tampon. La taille d’expansion dans adwInfo doit être différente de zéro uniquement si pchBuffer est un pointeur obtenu en appelant les fonctions GlobalAlloc et GlobalLock ; dans ce cas, la fonction GlobalReAlloc est 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 afin de définir initialement la fin du fichier comme étant le 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 actuellement ouvert (autrement dit, un handle de fichier qui n’a pas le type HMMIO ) avec les 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 dans le fichier seront relatifs au début du fichier et ne sont pas liés à la position dans le fichier standard au moment de l’appel de mmioOpen ; le décalage d’E/S du fichier multimédia initial sera le même que le décalage dans le fichier standard lorsque mmioOpen est appelé. Pour fermer le handle de fichier d’E/S de fichier multimédia 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.

Notes

L’en-tête mmiscapi.h définit mmioOpen comme un 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête mmiscapi.h (inclure Mmiscapi.h, Windows.h)
Bibliothèque Winmm.lib
DLL Winmm.dll