IWMDMDevice::GetSerialNumber-Methode (mswmdm.h)

Die GetSerialNumber-Methode ruft eine Seriennummer ab, die das Gerät eindeutig identifiziert.

Syntax

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

Parameter

[out] pSerialNumber

Zeiger auf eine WMDMID-Struktur , die die Seriennummerninformationen angibt. Die WMDID-Struktur wird von der Anwendung zugeordnet und freigegeben.

[in, out] abMac

Array von Bytes, das den Nachrichtenauthentifizierungscode für die Parameterdaten dieser Methode angibt.

Rückgabewert

Die Methode gibt ein HRESULT zurück. Alle Schnittstellenmethoden in Windows Media Geräte-Manager können eine der folgenden Klassen von Fehlercodes zurückgeben:

  • Com-Standardfehlercodes
  • In HRESULT-Werte konvertierte Windows-Fehlercodes
  • Windows Media Geräte-Manager Fehlercodes
Eine ausführliche Liste möglicher Fehlercodes finden Sie unter Fehlercodes.

Hinweise

Nicht alle Geräte unterstützen Seriennummern. Um festzustellen, ob das Gerät Seriennummern unterstützt, muss der Aufrufer beim Aufrufen dieser Funktion immer den Rückgabecode überprüfen. Wenn ein Mediengerät Seriennummern unterstützt, ist die Seriennummer des Mediengeräts garantiert eindeutig für dieses Gerät.

Nach dem Aufrufen dieser Methode kann eine Anwendung mithilfe des abMAC-Parameters überprüfen, ob die Serielle während des Transports nicht geändert wurde. Beispielcode hierzu finden Sie unter Verwenden von sicher authentifizierten Kanälen.

Beispiele

Der folgende C++-Code ruft die Seriennummer des Geräts ab und überprüft den 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
}

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile mswmdm.h
Bibliothek Mssachlp.lib

Weitere Informationen

IWMDMDevice-Schnittstelle

Verwenden von sicher authentifizierten Kanälen