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