Partager via


IWMDMDevice ::GetSerialNumber, méthode (mswmdm.h)

La méthode GetSerialNumber récupère un numéro de série qui identifie de manière unique l’appareil.

Syntaxe

HRESULT GetSerialNumber(
  [out]     PWMDMID  pSerialNumber,
  [in, out] BYTE [8] abMac
);

Paramètres

[out] pSerialNumber

Pointeur vers une structure WMDMID spécifiant les informations de numéro de série. La structure WMDID est allouée et libérée par l’application.

[in, out] abMac

Tableau d’octets spécifiant le code d’authentification de message pour les données de paramètre de cette méthode.

Valeur retournée

Cette méthode retourne un code HRESULT. Toutes les méthodes d’interface dans Windows Media Gestionnaire de périphériques peuvent retourner l’une des classes suivantes de codes d’erreur :

  • Codes d’erreur COM standard
  • Codes d’erreur Windows convertis en valeurs HRESULT
  • Codes d’erreur Gestionnaire de périphériques Windows Media
Pour obtenir une liste complète des codes d’erreur possibles, consultez Codes d’erreur.

Remarques

Tous les appareils ne prennent pas en charge les numéros de série. Pour déterminer si l’appareil prend en charge les numéros de série, l’appelant doit toujours case activée le code de retour lors de l’appel de cette fonction. Si un périphérique multimédia prend en charge les numéros de série, il est garanti que le numéro de série du périphérique multimédia est unique pour cet appareil.

Après avoir appelé cette méthode, une application peut vérifier que la série n’a pas été modifiée pendant le transport à l’aide du paramètre abMAC . Pour obtenir un exemple de code à ce sujet, consultez Utilisation de canaux authentifiés sécurisés.

Exemples

Le code C++ suivant récupère le numéro de série de l’appareil et vérifie le MAC.


//
// Get and verify the serial number.
//
WMDMID serialNumber;
BYTE receivedMAC[WMDM_MAC_LENGTH];
hr = pIWMDMDevice->GetSerialNumber(&serialNumber, receivedMAC);

// Check the MAC to guarantee the serial number has not been tampered with.
if (hr == S_OK)
{
    // Initialize a MAC handle, 
    // next add all parameters to the MAC,
    // and finally retrieve the calculated MAC value.
    HMAC hMAC;
    BYTE calculatedMAC[WMDM_MAC_LENGTH];
    hr = m_pSAC->MACInit(&hMAC);
    hr = m_pSAC->MACUpdate(hMAC, (BYTE*)(&serialNumber), sizeof(serialNumber));
    hr = m_pSAC->MACFinal(hMAC, (BYTE*)calculatedMAC);
    if (memcmp(calculatedMAC, receivedMAC, sizeof(calculatedMAC)) == 0)
    {
        // MAC is authentic. Print the serial number.
        CHAR* serialNumberBuffer = new CHAR[serialNumber.SerialNumberLength + 1];
        ZeroMemory(serialNumberBuffer, (serialNumber.SerialNumberLength + 1) * sizeof(CHAR));
        memcpy(serialNumberBuffer, serialNumber.pID, serialNumber.SerialNumberLength * sizeof(CHAR));
        // TODO: Display the serial number.
        delete serialNumberBuffer;
    }
    else
        // TODO: Display a message indicating that the serial number MAC does not match in EnumDevices
}

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête mswmdm.h
Bibliothèque Mssachlp.lib

Voir aussi

IWMDMDevice, interface

Utilisation de canaux authentifiés sécurisés