Bagikan melalui


Metode IWMDMDevice::GetSerialNumber (mswmdm.h)

Metode GetSerialNumber mengambil nomor seri yang secara unik mengidentifikasi perangkat.

Sintaks

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

Parameter

[out] pSerialNumber

Penunjuk ke struktur WMDMID yang menentukan informasi nomor seri. Struktur WMDID dialokasikan dan dirilis oleh aplikasi.

[in, out] abMac

Array byte yang menentukan kode autentikasi pesan untuk data parameter metode ini.

Nilai kembali

Metode mengembalikan HRESULT. Semua metode antarmuka di Windows Media Device Manager dapat mengembalikan salah satu kelas kode kesalahan berikut:

  • Kode kesalahan COM standar
  • Kode kesalahan Windows dikonversi ke nilai HRESULT
  • Kode kesalahan Pengelola Perangkat Windows Media
Untuk daftar ekstensif kemungkinan kode kesalahan, lihat Kode Kesalahan.

Keterangan

Tidak semua perangkat mendukung nomor seri. Untuk menentukan apakah perangkat mendukung nomor seri, penelepon harus selalu memeriksa kode pengembalian saat memanggil fungsi ini. Jika perangkat media mendukung nomor seri, nomor seri perangkat media dijamin unik untuk perangkat tersebut.

Setelah memanggil metode ini, aplikasi dapat memverifikasi bahwa serial belum dimodifikasi selama transportasi dengan menggunakan parameter abMAC . Misalnya kode tentang ini, lihat Menggunakan Saluran Terautentikasi Aman.

Contoh

Kode C++ berikut mengambil nomor seri perangkat dan memverifikasi 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
}

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header mswmdm.h
Pustaka Mssachlp.lib

Lihat juga

Antarmuka IWMDMDevice

Menggunakan Saluran Terautentikasi Aman