Ouverture d’un appareil
Avant d’utiliser un appareil, vous devez l’initialiser à l’aide de la commande open (MCI_OPEN). Cette commande charge le pilote en mémoire (s’il n’est pas déjà chargé) et récupère l’identificateur de périphérique que vous utiliserez pour identifier l’appareil dans les commandes MCI suivantes. Vous devez case activée la valeur de retour de la fonction mciSendString ou mciSendCommand avant d’utiliser un nouvel identificateur d’appareil pour vous assurer que l’identificateur est valide. (Vous pouvez également récupérer un identificateur d’appareil à l’aide de la fonction mciGetDeviceID .)
Comme tous les messages de commande MCI, MCI_OPEN a une structure associée. Ces structures sont parfois appelées blocs de paramètres. La structure par défaut pour MCI_OPEN est MCI_OPEN_PARMS. Certains appareils (comme la forme d’onde et la superposition) ont des structures étendues (telles que MCI_WAVE_OPEN_PARMS et MCI_OVLY_OPEN_PARMS) pour prendre en charge des paramètres facultatifs supplémentaires. Sauf si vous avez besoin d’utiliser ces paramètres supplémentaires, vous pouvez utiliser la structure MCI_OPEN_PARMS avec n’importe quel appareil MCI.
Le nombre d’appareils que vous pouvez ouvrir est limité uniquement par la quantité de mémoire disponible.
Utilisation d’un alias
Lorsque vous ouvrez un appareil, vous pouvez utiliser l’indicateur « alias » pour spécifier un identificateur d’appareil pour l’appareil. Cet indicateur vous permet d’attribuer un identificateur d’appareil court pour les appareils composés avec des noms de fichiers longs, et vous permet d’ouvrir plusieurs instances du même fichier ou appareil.
Par exemple, la commande suivante affecte l’identificateur d’appareil « birdcall » au nom de fichier long C:\NABIRDS\SOUNDS\MOCKMTNG. WAV:
mciSendString(
"open c:\nabirds\sounds\mockmtng.wav type waveaudio alias birdcall",
lpszReturnString, lstrlen(lpszReturnString), NULL);
Dans l’interface de message de commande, vous spécifiez un alias à l’aide du membre lpstrAlias de la structure MCI_OPEN_PARMS .
Spécification d’un type d’appareil
Lorsque vous ouvrez un appareil, vous pouvez utiliser l’indicateur « type » pour faire référence à un type de périphérique, plutôt qu’à un pilote de périphérique spécifique. L’exemple suivant ouvre le fichier waveform-audio C:\WINDOWS\CHIMES. WAV (à l’aide de l’indicateur « type » pour spécifier le type d’appareil waveaudio ) et attribue l’alias « chimes » :
mciSendString(
"open c:\windows\chimes.wav type waveaudio alias chimes",
lpszReturnString, lstrlen(lpszReturnString), NULL);
Dans l’interface de message de commande, la fonctionnalité de l’indicateur « type » est fournie par le membre lpstrDeviceType de la structure MCI_OPEN_PARMS .
Appareils simples et composés
MCI classe les pilotes de périphérique comme composés ou simples. Les pilotes pour les appareils composés nécessitent le nom d’un fichier de données pour la lecture ; les pilotes pour les appareils simples ne le font pas.
Les appareils simples incluent les appareils cdaudio et videodisc . Il existe deux façons d’ouvrir des appareils simples :
Spécifiez un pointeur vers une chaîne terminée par null contenant le nom de l’appareil du registre ou le fichier SYSTEM.INI.
Par exemple, vous pouvez ouvrir un appareil videodisc à l’aide de la commande suivante :
mciSendString("open videodisc", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Dans ce cas, « videodisc » est le nom de l’appareil du registre ou de la section [mci] de SYSTEM.INI.
- Spécifiez le nom réel du pilote de périphérique. Toutefois, l’ouverture d’un appareil à l’aide du nom de fichier du pilote de périphérique rend l’application spécifique au périphérique et peut empêcher l’exécution de l’application si la configuration système change. Si vous utilisez un nom de fichier, vous n’avez pas besoin de spécifier le chemin d’accès complet ou l’extension de nom de fichier ; MCI suppose que les pilotes se trouvent dans un répertoire système et ont le . Extension de nom de fichier DRV.
Les appareils composés incluent les appareils waveaudio et sequencer . Les données d’un appareil composé sont parfois appelées élément d’appareil. Toutefois, ce document fait généralement référence à ces données en tant que fichier, même si, dans certains cas, les données peuvent ne pas être stockées en tant que fichier.
Il existe trois façons d’ouvrir un appareil composé :
- Spécifiez uniquement le nom de l’appareil. Cela vous permet d’ouvrir un appareil composé sans associer de nom de fichier. La plupart des appareils composés traitent uniquement les commandes de fonctionnalité (MCI_GETDEVCAPS) et de fermeture (MCI_CLOSE) lorsqu’ils sont ouverts de cette façon.
- Spécifiez uniquement le nom de fichier. Le nom de l’appareil est déterminé à partir des associations dans le Registre.
- Spécifiez le nom de fichier et le nom de l’appareil. MCI ignore les entrées dans le Registre et ouvre le nom d’appareil spécifié.
Pour associer un fichier de données à un appareil particulier, vous pouvez spécifier le nom de fichier et le nom de l’appareil. Par exemple, la commande suivante ouvre l’appareil waveaudio avec le nom de fichier MYVOICE. SND:
mciSendString("open myvoice.snd type waveaudio", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Dans l’interface de chaîne de commande, vous pouvez également raccourcir la spécification de nom d’appareil à l’aide du format de point d’exclamation alternatif, comme indiqué avec la commande open .
Ouverture d’un appareil à l’aide de l’extension filename
Si la commande open (MCI_OPEN) spécifie uniquement le nom de fichier, MCI utilise l’extension de nom de fichier pour sélectionner l’appareil approprié dans la liste du Registre ou dans la section [extensions mci] du fichier SYSTEM.INI. Les entrées de la section [extensions mci] utilisent la forme suivante :
= filename_extension device_name
MCI utilise implicitement device_name si l’extension est trouvée et si aucun nom d’appareil n’a été spécifié dans la commande open .
L’exemple suivant montre une section [extensions mci] classique :
[mci extensions]
wav=waveaudio
mid=sequencer
rmi=sequencer
À l’aide de ces définitions, MCI ouvre l’appareil waveaudio si la commande suivante est émise :
mciSendString("open train.wav", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Nouveaux fichiers de données
Pour créer un fichier de données, spécifiez simplement un nom de fichier vide. MCI n’enregistre pas un nouveau fichier tant que vous ne l’enregistrez pas à l’aide de la commande enregistrer (MCI_SAVE). Lorsque vous créez un fichier, vous devez inclure un alias d’appareil avec la commande open (MCI_OPEN).
L’exemple suivant ouvre un nouveau fichier waveaudio , démarre et arrête l’enregistrement, puis enregistre et ferme le fichier :
mciSendString("open new type waveaudio alias capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("record capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("stop capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("save capture orca.wav", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("close capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Appareils partageables
L’indicateur « partageable » (MCI_OPEN_SHAREABLE) de la commande open (MCI_OPEN) permet à plusieurs applications d’accéder simultanément au même appareil (ou fichier) et au même instance d’appareil. Si votre application ouvre un appareil ou un fichier en tant que partageable, d’autres applications peuvent également y accéder en l’ouvrant en tant que partageable. L’appareil ou le fichier partagé donne à chaque application la possibilité de modifier les paramètres régissant son état de fonctionnement. Chaque fois qu’un appareil ou un fichier est ouvert en tant que partageable, MCI retourne un identificateur d’appareil unique, même si les identificateurs font référence au même instance.
Si votre application ouvre un appareil ou un fichier sans spécifier qu’il est partageable, aucune autre application ne peut y accéder tant que votre application ne le ferme pas. En outre, si un appareil ne prend en charge qu’une seule instance ouverte, la commande open échoue si vous spécifiez l’indicateur partageable.
Si votre application ouvre un appareil et spécifie qu’il peut être partagé, votre application ne doit pas faire d’hypothèses sur l’état de cet appareil. Votre application peut avoir besoin de compenser les modifications apportées par d’autres applications qui accèdent à l’appareil.
La plupart des fichiers composés ne sont pas partageables ; Toutefois, vous pouvez ouvrir plusieurs fichiers ou ouvrir un seul fichier plusieurs fois. Si vous ouvrez un fichier unique plusieurs fois, MCI crée un instance indépendant pour chacun d’eux, chaque instance ayant un status d’exploitation unique.
Si vous ouvrez plusieurs instances d’un fichier, vous devez affecter un identificateur d’appareil unique à chacune d’elles. Vous pouvez utiliser un alias, comme décrit dans la section suivante, pour attribuer un nom unique à chaque fichier.