Método IWMDMDevice::GetSerialNumber (mswmdm.h)

El método GetSerialNumber recupera un número de serie que identifica de forma única el dispositivo.

Sintaxis

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

Parámetros

[out] pSerialNumber

Puntero a una estructura WMDMID que especifica la información del número de serie. La aplicación asigna y libera la estructura WMDID .

[in, out] abMac

Matriz de bytes que especifican el código de autenticación de mensajes para los datos de parámetros de este método.

Valor devuelto

El método devuelve un valor HRESULT. Todos los métodos de interfaz de Windows Media Administrador de dispositivos pueden devolver cualquiera de las siguientes clases de códigos de error:

  • Códigos de error COM estándar
  • Códigos de error de Windows convertidos en valores HRESULT
  • Códigos de error de windows Media Administrador de dispositivos
Para obtener una lista extensa de posibles códigos de error, consulte Códigos de error.

Comentarios

No todos los dispositivos admiten números de serie. Para determinar si el dispositivo admite números de serie, el autor de la llamada siempre debe comprobar el código de retorno al llamar a esta función. Si un dispositivo multimedia admite números de serie, se garantiza que el número de serie del dispositivo multimedia sea único para ese dispositivo.

Después de llamar a este método, una aplicación puede comprobar que la serie no se ha modificado durante el transporte mediante el parámetro abMAC . Para obtener código de ejemplo en este artículo, consulte Uso de canales autenticados seguros.

Ejemplos

El siguiente código de C++ recupera el número de serie del dispositivo y comprueba el 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
}

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado mswmdm.h
Library Mssachlp.lib

Consulte también

IWMDMDevice (Interfaz)

Uso de canales autenticados seguros