Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pierwszym krokiem, który musi wykonać aplikacja, jest uwierzytelnianie. Uwierzytelnianie weryfikuje tożsamość aplikacji w Menedżerze urządzeń z systemem Windows Media. Po uwierzytelnieniu aplikacji można wywołać QueryInterface, aby uzyskać główny interfejs IWMDeviceManager, który można zapytać o inne wymagane interfejsy, które same mogą być odpytywane o wszystkie inne interfejsy. Uwierzytelnianie musi odbywać się tylko raz podczas uruchamiania.
Aby uwierzytelnić aplikację, wykonaj następujące kroki:
- Utwórz obiekt MediaDevMgr (identyfikator klasy MediaDevMgr) i zażądaj interfejsu IComponentAuthenticate.
- Utwórz obiekt CSecureChannelClient w celu obsługi uwierzytelniania.
- Przekaż klucz aplikacji oraz certyfikat do obiektu bezpiecznego kanału. Aby uzyskać podstawowe funkcje z funkcji zestawu SDK, możesz użyć fikcyjnego klucza/certyfikatu pokazanego w poniższym przykładowym kodzie. Jednak aby uzyskać pełną funkcjonalność (ważne w przypadku przekazywania plików do i z urządzenia), należy zażądać klucza i certyfikatu od firmy Microsoft zgodnie z opisem w Tools for Development.
- Przekaż interfejs IComponentAuthenticate utworzony w kroku 1 do bezpiecznego obiektu kanału.
- Wywołaj CSecureChannelClient::Uwierzytelnij w celu uwierzytelnienia aplikacji.
- Wykonaj zapytanie IComponentAuthenticate dla interfejsu IWMDeviceManager.
Te kroki przedstawiono w poniższym kodzie języka C++.
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;
}
Tematy pokrewne
-
tworzenie aplikacji Menedżera urządzeń z systemem Windows Media