Auflisten von Geräten

[Das dieser Seite zugeordnete Feature Windows Medienwiedergabe SDK ist ein Legacyfeature. Es wurde von MediaPlayer abgelöst. MediaPlayer wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, mediaPlayer anstelle von Windows Medienwiedergabe SDK für neuen Code zu verwenden. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Windows Medienwiedergabe stellt tragbare Geräte mithilfe der IWMPSyncDevice-Schnittstelle dar. Der folgende Beispielcode zeigt eine Funktion, die ein Array von Zeigern auf IWMPSyncDevice erstellt. Jeder Zeiger im Array stellt ein Gerät dar, für das Windows Medienwiedergabe gespeicherte Informationen enthält. Ein Gerät muss weder mit dem Computer verbunden sein, noch muss es eine Partnerschaft mit dem aktuellen Windows Medienwiedergabe instance haben.

Sie sollten Geräte immer dann aufzählen, wenn Sie das DeviceConnect-Ereignis oder das DeviceDisconnect-Ereignis erhalten.

Die folgende Funktion listet Geräte auf. Der bConnectedOnly-Parameter gibt an, ob nur Geräte aufgelistet werden sollen, die derzeit mit dem Computer des Benutzers verbunden sind.

STDMETHODIMP CMainDlg::EnumDevices(BOOL bConnectedOnly)
{
    HRESULT hr = S_OK;
    CComPtr<IWMPSyncServices>  spSyncServices;
    long cDeviceArray = 0;  // Size to make the array
    long cAllDevices = 0;  // Count of all devices
    long cDeviceIndex = 0; // Index for adding devices to array.
    CComPtr<IWMPSyncDevice> spTempDevice;
    VARIANT_BOOL vbIsConnected = VARIANT_FALSE;

    // Delete any existing array.
    FreeDeviceArray();

    // Retrieve a pointer to IWMPSyncServices.
    hr = m_spPlayer->QueryInterface(&spSyncServices);

    if(SUCCEEDED(hr) && spSyncServices.p)
    {  
        hr = spSyncServices->get_deviceCount(&cAllDevices);
    }

    if(SUCCEEDED(hr) && cAllDevices > 0)
    {
        if(bConnectedOnly)
        {
            // Count the number of connected devices.
            for(long i = 0; i < cAllDevices; i++)
            {     
                spTempDevice.Release();
                hr = spSyncServices->getDevice(i, &spTempDevice);

                if(SUCCEEDED(hr) && spTempDevice.p)
                {
                    spTempDevice->get_connected(&vbIsConnected);

                    if(vbIsConnected == VARIANT_TRUE)
                    {
                        // Count only the connected devices.
                        cDeviceArray++;
                    }
                }
            }
        }
        else
        {
            cDeviceArray = cAllDevices;
        }

        if(cDeviceArray == 0)
        {
            return hr;
        }

        // Cache the device count.
        m_cDevices = cDeviceArray;

        // Create a new device array.
        m_ppWMPDevices = new IWMPSyncDevice*[cDeviceArray];
        if(!m_ppWMPDevices)
        {
            return E_OUTOFMEMORY;
        }
        
        ZeroMemory(m_ppWMPDevices, sizeof (IWMPSyncDevice*) * cDeviceArray);

        // Fill the array.
        for(long i = 0; i < cAllDevices; i++)
        {
            spTempDevice.Release();
            hr = spSyncServices->getDevice(i, &spTempDevice);
            if(SUCCEEDED(hr) && spTempDevice.p)
            {
                spTempDevice->get_connected(&vbIsConnected);

                if( (bConnectedOnly && vbIsConnected == VARIANT_TRUE) ||
                     !bConnectedOnly )
                {
                    // Add the device to the custom array.
                    spTempDevice.CopyTo(&m_ppWMPDevices[cDeviceIndex++]);
                }
            }
        }
    }

    return hr;
}

Sie können ähnlichen Code verwenden, um andere solche Gerätelisten abzurufen. Sie können beispielsweise IWMPSyncDevice::get_status verwenden, um ein Array von Geräten zu erstellen, für die eine Partnerschaft besteht.

IWMPEvents2::D eviceConnect

IWMPEvents2::D eviceDisconnect

IWMPSyncDevice-Schnittstelle

IWMPSyncDevice::get_connected

IWMPSyncServices-Schnittstelle

Arbeiten mit tragbaren Geräten