Authentifizieren der Anwendung

Der erste Schritt, den Ihre Anwendung ausführen muss, ist die Authentifizierung. Die Authentifizierung überprüft die Identität der Anwendung für Windows Media Geräte-Manager. Nach der Authentifizierung Ihrer Anwendung können Sie QueryInterface aufrufen, um die IWMDeviceManager-Stammschnittstelle abzurufen, die nach anderen erforderlichen Schnittstellen abgefragt werden kann, die selbst für alle anderen Schnittstellen abgefragt werden können. Die Authentifizierung muss nur einmal beim Start erfolgen.

Führen Sie zum Authentifizieren Ihrer Anwendung die folgenden Schritte aus:

  1. Erstellen Sie das MediaDevMgr-Objekt (Klassen-ID MediaDevMgr), und fordern Sie eine IComponentAuthenticate-Schnittstelle an .
  2. Erstellen Sie ein CSecureChannelClient-Objekt , um die Authentifizierung zu verarbeiten.
  3. Übergeben Sie Ihren Anwendungsschlüssel, und übertragen Sie das Zertifikat an das Objekt des sicheren Kanals. Sie können den Dummyschlüssel/das Zertifikat im folgenden Beispielcode verwenden, um grundlegende Funktionen aus SDK-Funktionen abzurufen. Um jedoch die volle Funktionalität zu erhalten (wichtig für das Übergeben von Dateien an und vom Gerät), müssen Sie einen Schlüssel und ein Zertifikat von Microsoft anfordern, wie unter Tools for Development beschrieben.
  4. Übergeben Sie die IComponentAuthenticate-Schnittstelle , die Sie in Schritt 1 erstellt haben, an das Objekt des sicheren Kanals.
  5. Rufen Sie CSecureChannelClient::Authenticate auf, um Ihre Anwendung zu authentifizieren.
  6. Abfragen von IComponentAuthenticate für die IWMDeviceManager-Schnittstelle .

Diese Schritte werden im folgenden C++-Code gezeigt.

HRESULT CWMDMController::Authenticate()
{
    // Use a dummy key/certificate pair to allow basic functionality.
    // An authentic keypair is required for full SDK functionality.
    BYTE abPVK[] = {0x00};
    BYTE abCert[] = {0x00};
    HRESULT hr;
    CComPtr<IComponentAuthenticate> pAuth;

    // Create the WMDM object and acquire 
    // its authentication interface.
    hr = CoCreateInstance(
        __uuidof(MediaDevMgr),
        NULL,
        CLSCTX_INPROC_SERVER,
        __uuidof(IComponentAuthenticate),
        (void**)&pAuth);

    if (FAILED(hr)) return hr;

    // Create the secure channel client class needed to authenticate the application.
    // We'll use a global member variable to hold the secure channel client
    // in case we need to handle encryption, decryption, or MAC verification
    // during this session.
    m_pSAC = new CSecureChannelClient;
    if (m_pSAC == NULL) return E_FAIL;

    // Send the application's transfer certificate and the associated 
    // private key to the secure channel client.
    hr = m_pSAC->SetCertificate(
        SAC_CERT_V1,
        (BYTE *)abCert, sizeof(abCert),
        (BYTE *)abPVK,  sizeof(abPVK));
    if (FAILED(hr)) return hr;
            
    // Send the authentication interface we created to the secure channel 
    // client and authenticate the application with the V1 protocol.
    // (This is the only protocol currently supported.)
    m_pSAC->SetInterface(pAuth);
    hr = m_pSAC->Authenticate(SAC_PROTOCOL_V1);
    if (FAILED(hr)) return hr;

    // Authentication succeeded, so we can use WMDM.
    // Query for the root WMDM interface.
    hr = pAuth->QueryInterface( __uuidof(IWMDeviceManager), (void**)&m_IWMDMDeviceMgr);

    return hr;
}

Erstellen einer Windows Media-Geräte-Manager-Anwendung