Compartilhar via


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

O método GetSerialNumber recupera um número de série que identifica exclusivamente o dispositivo.

Sintaxe

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

Parâmetros

[out] pSerialNumber

Ponteiro para uma estrutura WMDMID especificando as informações de número de série. A estrutura WMDID é alocada e liberada pelo aplicativo.

[in, out] abMac

Matriz de bytes que especificam o código de autenticação de mensagem para os dados de parâmetro desse método.

Retornar valor

O método retorna um HRESULT. Todos os métodos de interface no Windows Media Gerenciador de Dispositivos podem retornar qualquer uma das seguintes classes de códigos de erro:

  • Códigos de erro COM padrão
  • Códigos de erro do Windows convertidos em valores HRESULT
  • Códigos de erro do Windows Media Gerenciador de Dispositivos
Para obter uma lista abrangente de possíveis códigos de erro, consulte Códigos de erro.

Comentários

Nem todos os dispositivos dão suporte a números de série. Para determinar se o dispositivo dá suporte a números de série, o chamador deve sempre marcar o código de retorno ao chamar essa função. Se um dispositivo de mídia der suporte a números de série, o número de série do dispositivo de mídia será garantido como exclusivo para esse dispositivo.

Depois de chamar esse método, um aplicativo pode verificar se a série não foi modificada durante o transporte usando o parâmetro abMAC . Para obter um código de exemplo sobre isso, consulte Usando canais autenticados seguros.

Exemplos

O código C++ a seguir recupera o número de série do dispositivo e verifica o 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 Valor
Plataforma de Destino Windows
Cabeçalho mswmdm.h
Biblioteca Mssachlp.lib

Confira também

IWMDMDevice Interface

Usando canais autenticados seguros