powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt для WinRT: получить App Specific Hardware ID
15 сообщений из 15, страница 1 из 1
Qt для WinRT: получить App Specific Hardware ID
    #39441356
Igor Kushnir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить App Specific Hardware ID в WinRT на Qt 5.8?
Необходимо вызвать Windows::System::Profile::HardwareIdentification::GetPackageSpecificToken.

Делаю так:

Код: plaintext
1.
2.
3.
ComPtr<IHardwareIdentificationStatics> hardwareIdentificationStatics;
HRESULT hr = RoGetActivationFactory(HString::MakeReference(InterfaceName_Windows_System_Profile_IHardwareIdentificationStatics).Get(),
IID_PPV_ARGS(&hardwareIdentificationStatics));


Но это не работает. Помогите плиз.
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39441599
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Kushnir,

в HRESULT что возвращается ?
Вообще-то проверять надо...
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39442566
Igor Kushnir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Да, проверка есть, это не весь код.
HRESULT возвращает НЕ S_OK. (какое-то огромное число возвращает)
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39442570
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Kushnirкакое-то огромное число возвращает
оно всяко из отдельных битов и допускает интерпретацию
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39442756
Igor Kushnir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

В HRESULT -2147221164 ....
Что означает ошибка найти не могу.
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39442790
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KushnirИзопропил,

В HRESULT -2147221164 ....
Что означает ошибка найти не могу.
печально...

это 0x80040154
REGDB_E_CLASSNOTREG, Class not registered
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39442826
Igor Kushnir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Спасибо!
Вы мне действительно помогли.
Проблема была в константе InterfaceName_Windows_System_Profile_IHardwareIdentificationStatics объявленной windows.system.profile.h , она не рабочая.
Рабочий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    const WCHAR InterfaceName_Windows_System_Profile_HardwareIdentification[] = L"Windows.System.Profile.HardwareIdentification";
    HRESULT hr;
    ComPtr<IHardwareIdentificationStatics> hardwareIdentificationStatics;
    hr = RoGetActivationFactory(HString::MakeReference(InterfaceName_Windows_System_Profile_HardwareIdentification).Get(),
                               IID_PPV_ARGS(&hardwareIdentificationStatics));
    if (S_OK == hr) {
        ComPtr<IHardwareToken> hardwareToken;
        hr = hardwareIdentificationStatics->GetPackageSpecificToken(NULL, &hardwareToken);
        if (S_OK == hr) {
            ComPtr<IBuffer> buffer;
            hr = hardwareToken->get_Id(&buffer);
            if (S_OK == hr) {
                quint32 len;
                buffer->get_Length(&len);
                qDebug() << "get_Length" << len;
            }
        }
    }
    if (S_OK != hr)
        qWarning() << hr;
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443104
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KushnirMasterZiv,

Да, проверка есть, это не весь код.
HRESULT возвращает НЕ S_OK. (какое-то огромное число возвращает)

Вообще, если не S_OK, то вызов неверный. Но надо читать документацию.

MSDN
HRESULT RoGetActivationFactory(
_In_ HSTRING activatableClassId,
_In_ REFIID iid,
_Out_ void **factory

);

Parameters

activatableClassId [in]

Type: HSTRING

The ID of the activatable class.
iid [in]

Type: REFIID

The reference ID of the interface.
factory [out]

Type: void**

The activation factory.

Return value

Type: HRESULT

If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.



Так что всё однозначно, если не S_OK, то ошибка.
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443107
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Kushnir
Код: plaintext
1.
2.
    if (S_OK == hr) {
       



Балин, какой КОЗЁЛ придумал тащить это дерьмо в С++?
Мало того, что == должно быть в крови у настоящего С/С++ ника , так ещё и компиляторы эту ошибку выявляют и показывают
ровно все и чуть ли не автоматически...

Куда катица мир ?
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443143
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКуда катица мир ?
он уже скатился до дна, но снизу периодически стучат.

Вам недолить или разбавить? Error Handling in COM
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443207
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилВам недолить или разбавить? Error Handling in COM в примерах по ссылке человеческий способ проверки кодов ошибок, а не то кривое не читаемое убожество, на которое возмутился MasterZiv
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443230
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivIgor Kushnir
Код: plaintext
1.
2.
    if (S_OK == hr) {
       



Балин, какой КОЗЁЛ придумал тащить это дерьмо в С++?
Мало того, что == должно быть в крови у настоящего С/С++ ника , так ещё и компиляторы эту ошибку выявляют и показывают
ровно все и чуть ли не автоматически...

Куда катица мир ?
Чтобы не делать кучи сравнений, давно уже придумаy способ анврапить вызовы WinAPI в функции, которые бросают исключение в случае чего...
Типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
class WinException
{
 ...
};

template< typename FunctionType, typename ... Ts >
   std::enable_if_t<
      std::is_integral<
         std::result_of_t< FunctionType( Ts ... ) >
      >::value, void
   >::type
unwrap( FunctionType winFunction, Ts && ... parameters )
{
   auto lResult = winFunction( std::forward< Ts >( parameters ) ... );
   if( lResult != ERROR_SUCCESS )
   {
      throw WinException( lResult, GetLastError() );
   }
}


Написал "на коленке", может и не скомпилироваться.
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443232
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivкомпиляторы эту ошибку выявляют и показывают ровно все и чуть ли не автоматически...
Не все. MS VC откомпилировал и ни ошибок, ни предупреждений
Код: plaintext
1.
if (x = 8)
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39443995
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TMasterZivкомпиляторы эту ошибку выявляют и показывают ровно все и чуть ли не автоматически...
Не все. MS VC откомпилировал и ни ошибок, ни предупреждений
Код: plaintext
1.
if (x = 8)



Включи C4706 и радуйся.

Главное, сама идея дурацкая. Всё равно, чтобы написать "сравнение наоборот", тебе нужно вспомнить, что ты пишешь сравнение,
а если ты уже вошёл в этот режим кодирования , то почему бы просто не написать правильно , а не через задний проход?
...
Рейтинг: 0 / 0
Qt для WinRT: получить App Specific Hardware ID
    #39444056
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivто почему бы просто не написать правильно
потому, что бывают ещё досадные опечатки
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt для WinRT: получить App Specific Hardware ID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]