MidiOutPort.FromIdAsync(String) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Crée un objet MidiOutPort pour l’appareil spécifié.
public:
static IAsyncOperation<IMidiOutPort ^> ^ FromIdAsync(Platform::String ^ deviceId);
/// [Windows.Foundation.Metadata.RemoteAsync]
static IAsyncOperation<IMidiOutPort> FromIdAsync(winrt::hstring const& deviceId);
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<IMidiOutPort> FromIdAsync(string deviceId);
function fromIdAsync(deviceId)
Public Shared Function FromIdAsync (deviceId As String) As IAsyncOperation(Of IMidiOutPort)
Paramètres
- deviceId
-
String
Platform::String
winrt::hstring
ID d’appareil, qui peut être obtenu en énumérant les appareils sur le système Windows.Devices.Enumeration.DeviceInformation.FindAllAsync.
Retours
Opération asynchrone. Une fois terminé, IAsyncOperation.GetResults retourne un objet MidiOutPort .
- Attributs
Exemples
// Opens the default MIDI output device.
private async Task<IMidiOutPort> OpenDefaultMidiOut()
{
IMidiOutPort midiOut = null;
string midiOutQueryString = MidiOutPort.GetDeviceSelector();
DeviceInformationCollection midiOutDevices = await DeviceInformation.FindAllAsync(midiOutQueryString);
int selectedMidiDevice = 0;
if (0 == midiOutDevices.Count)
{
Debug.WriteLine("No Midi output devices");
return null;
}
// If there are > 1 MIDI out devices, pick the first non-integrated one.
else if (2 <= midiOutDevices.Count)
{
for (int midiDeviceIdx = 0; midiDeviceIdx < midiOutDevices.Count; midiDeviceIdx++)
{
if (false == MidiSynthesizer.IsSynthesizer(midiOutDevices[midiDeviceIdx]))
{
selectedMidiDevice = midiDeviceIdx;
break;
}
}
}
midiOut = await MidiOutPort.FromIdAsync(midiOutDevices[selectedMidiDevice].Id);
return midiOut;
}
// Opens the default MIDI output device.
winrt::Windows::Foundation::IAsyncOperation<IMidiOutPort> OpenDefaultMidiOut()
{
IMidiOutPort midiOut{ nullptr };
winrt::hstring midiOutQueryString{ MidiOutPort::GetDeviceSelector() };
DeviceInformationCollection midiOutDevices{ co_await DeviceInformation::FindAllAsync(midiOutQueryString) };
uint32_t selectedMidiDevice{ 0 };
if (0 == midiOutDevices.Size())
{
// No Midi output devices.
co_return midiOut;
}
// If there are > 1 MIDI out devices, pick the first non-integrated one.
else if (2 <= midiOutDevices.Size())
{
for (uint32_t midiDeviceIdx = 0; midiDeviceIdx < midiOutDevices.Size(); midiDeviceIdx++)
{
if (false == MidiSynthesizer::IsSynthesizer(midiOutDevices.GetAt(midiDeviceIdx)))
{
selectedMidiDevice = midiDeviceIdx;
break;
}
}
}
midiOut = co_await MidiOutPort::FromIdAsync(midiOutDevices.GetAt(selectedMidiDevice).Id());
co_return midiOut;
}
Remarques
Pour énumérer les objets MidiOutPort sur le système, transmettez la chaîne de requête fournie par GetDeviceSelector à Windows.Devices.Enumeration.DeviceInformation.FindAllAsync.
Les heures suggérées pour tenter de créer un MidiInPort concernent n’importe quel type d’activation d’application ou d’interaction utilisateur. Si un appel de fonction sur un MidiInPort échoue ou si un message reçu d’un MidiInPort n’est pas valide, n’essayez pas de recréer le port immédiatement.