Ссылаясь на 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 для всех результатов теста.