6

MSDNを参照して、HDDのシリアル番号を取得できるようにコードを変更します

hres = pSvc->ExecQuery(
    bstr_t("WQL"),
    bstr_t("SELECT SerialNumber FROM Win32_PhysicalMedia"),
    WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
    NULL,
    &pEnumerator);
..
..<other code here>
..
hr = pclsObj->Get(L"SerialNumber", 0, &vtProp, 0, 0);

vtProp.bstrVal を std::wstring に変換し、逆文字列を実行します。vtProp.bstrVal からの結果を逆にする必要があるのは、シリアル番号を取得するために使用するコンピューターの一部が間違った順序であることがわかったためです。

例: コンピューター 1 リターン シリアル: W [スペース] -DXW1M6EC01056

しかし、コンピューター2のリターンシリアルでテストすると、WD-WXM1E60C0165(同じコードを使用します。HDDのシリアルラベルを確認すると、実際には正しく返されます)コードが逆の文字列を実行すると、W [スペース]になります-DXW1M6EC01056

両方のコンピューターで確認しましたが、リトルエンディアンです。エンディアンと関係があるかどうかはわかりません。

返される結果を異なる順序にするものはありますか? HDDのメーカー・ブランドは?すべてのテスト結果について、Windows XP Pro でプログラムを実行しました。

4