Condividi tramite


Metodo IWMDMDevice::GetSerialNumber (mswmdm.h)

Il metodo GetSerialNumber recupera un numero di serie che identifica in modo univoco il dispositivo.

Sintassi

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

Parametri

[out] pSerialNumber

Puntatore a una struttura WMDMID che specifica le informazioni sul numero di serie. La struttura WMDID viene allocata e rilasciata dall'applicazione.

[in, out] abMac

Matrice di byte che specifica il codice di autenticazione del messaggio per i dati dei parametri di questo metodo.

Valore restituito

Il metodo restituisce un valore HRESULT. Tutti i metodi di interfaccia in Windows Media Gestione dispositivi possono restituire una delle classi di codici di errore seguenti:

  • Codici di errore COM standard
  • Codici di errore di Windows convertiti in valori HRESULT
  • Codici di errore di Windows Media Gestione dispositivi
Per un elenco completo dei codici di errore possibili, vedere Codici di errore.

Commenti

Non tutti i dispositivi supportano i numeri di serie. Per determinare se il dispositivo supporta i numeri di serie, il chiamante deve sempre controllare il codice restituito quando chiama questa funzione. Se un dispositivo multimediale supporta numeri di serie, è garantito che il numero di serie del dispositivo multimediale sia univoco per tale dispositivo.

Dopo aver chiamato questo metodo, un'applicazione può verificare che il seriale non sia stato modificato durante il trasporto usando il parametro abMAC . Per un esempio di codice, vedere Uso di canali autenticati sicuri.

Esempio

Il codice C++ seguente recupera il numero di serie del dispositivo e verifica il 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
}

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione mswmdm.h
Libreria Mssachlp.lib

Vedi anche

Interfaccia IWMDMDevice

Uso di canali autenticati protetti