Win32_PhysicalMedia SerialNumber иногда в неправильном порядке.

Ссылаясь на MSDNя немного изменил код, чтобы я мог получить серийный номер жесткого диска

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

Я преобразовал vtProp.bstrVal в std::wstring и сделал обратную строку, причина, по которой я должен изменить результат из vtProp.bstrVal, потому что я обнаружил, что некоторые компьютеры, которые я использую для получения серийного номера, находятся в неправильном порядке

. Например: Компьютер 1 возвращает серийный номер: W[пробел]-DXW1M6EC01056, мне нужно сделать обратную строку, чтобы он был [пробел]WD-WXM1E60C0165, что правильно после сравнения с этикеткой на жестком диске

но когда я тестирую Компьютер 2 возвращает серийный номер: WD-WXM1E60C0165(я использую тот же код, на самом деле он возвращает правильно, когда я сверяюсь с серийным номером на жестком диске) если мой код сделает обратную строку, она станет W[space]-DXW1M6EC01056

Я проверяю на обоих компьютерах, это Little-Endian, я не знаю, имеет ли это какое-то отношение к Endianness или нет.

Есть ли что-то, что приводит к тому, что результат возврата находится в другом порядке? Производитель/бренд жесткого диска? Я запускаю программу в Windows XP Pro для всех результатов теста.

5
задан 28 June 2012 в 02:42
поделиться