Compartilhar via


Autenticando o aplicativo

A primeira etapa que seu aplicativo deve executar é a autenticação. A autenticação verifica a identidade do aplicativo no Windows Media Gerenciador de Dispositivos. Depois de autenticar seu aplicativo, você pode chamar QueryInterface para obter a interface IWMDeviceManager raiz, que pode ser consultada para outras interfaces necessárias, que podem ser consultadas para todas as outras interfaces. A autenticação só precisa ocorrer uma vez, na inicialização.

Para autenticar seu aplicativo, execute estas etapas:

  1. CoCrie o objeto MediaDevMgr (ID de classe MediaDevMgr) e solicite uma interface IComponentAuthenticate .
  2. Crie um objeto CSecureChannelClient para manipular a autenticação.
  3. Passe a chave do aplicativo e transfira o certificado para o objeto de canal seguro. Você pode usar a chave/certificado fictício mostrado no código de exemplo a seguir para obter a funcionalidade básica das funções do SDK. No entanto, para obter a funcionalidade completa (importante para passar arquivos de e para o dispositivo), você deve solicitar uma chave e um certificado da Microsoft, conforme descrito em Ferramentas para Desenvolvimento.
  4. Passe a interface IComponentAuthenticate que você criou na etapa 1 para o objeto de canal seguro.
  5. Chame CSecureChannelClient::Authenticate para autenticar seu aplicativo.
  6. Consulte IComponentAuthenticate para a interface IWMDeviceManager .

Essas etapas são mostradas no código C++ a seguir.

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;
}

Criando um aplicativo de Gerenciador de Dispositivos do Windows Media