IWMDMDevice::GetSerialNumber メソッド (mswmdm.h)
GetSerialNumber メソッドは、デバイスを一意に識別するシリアル番号を取得します。
構文
HRESULT GetSerialNumber(
[out] PWMDMID pSerialNumber,
[in, out] BYTE [8] abMac
);
パラメーター
[out] pSerialNumber
シリアル番号情報を指定する WMDMID 構造体へのポインター。 WMDID 構造体は、アプリケーションによって割り当てられ、解放されます。
[in, out] abMac
このメソッドのパラメーター データのメッセージ認証コードを指定するバイト配列。
戻り値
このメソッドは HRESULT を返します。 Windows Media デバイス マネージャーのすべてのインターフェイス メソッドは、次のいずれかのエラー コード クラスを返すことができます。
- 標準 COM エラー コード
- HRESULT 値に変換された Windows エラー コード
- Windows Media デバイス マネージャーエラー コード
注釈
すべてのデバイスでシリアル番号がサポートされているわけではありません。 デバイスがシリアル番号をサポートしているかどうかを判断するには、呼び出し元は常に、この関数を呼び出すときにリターン コードをチェックする必要があります。 メディア デバイスがシリアル番号をサポートしている場合、メディア デバイスのシリアル番号は、そのデバイスで一意であることが保証されます。
このメソッドを呼び出した後、アプリケーションは abMAC パラメーターを使用して、トランスポート中にシリアルが変更されていないことを確認できます。 このコード例については、「 セキュリティで保護された認証済みチャネルの使用」を参照してください。
例
次の C++ コードは、デバイスのシリアル番号を取得し、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
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | mswmdm.h |
Library | Mssachlp.lib |