Форум программистов, компьютерный форум CyberForum.ru

Код, который проверяет есть ли в регистре идентификатор GUID - как он работает? - C++

Восстановить пароль Регистрация
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.07.2015, 12:55     Код, который проверяет есть ли в регистре идентификатор GUID - как он работает? #1
Есть код который как бы проверяет есть ли в регистре идентификатор GUID или нет, вот он:
C++
1
2
3
4
5
6
hr=HRESULT;
CLSID clsid;
if ((hr = ::CLSIDFromProgID(L"MyComDll", &clsid)) != NOERROR) {
        TRACE("unable to find Program ID -- error = %x\n", hr);
        return;
    }
Не ясно как он работает, он не просто проверяет, он в переменную GUID clsid, по ссылке передает GUID зарегистрированного объекта.
Что эта функция должна вернуть и как оно присваивается hr? Я вообще этот макрос HRESULT никак не пойму что это, это что функция которая возвращает булево значение?

Получается от такая штука:
C++
1
2
3
4
5
6
hr=__success(return >= 0);
GUID clsid;
if ((hr = ::CLSIDFromProgID(L"MyComDll", &clsid)) != NOERROR) {
        TRACE("unable to find Program ID -- error = %x\n", hr);
        return;
    }
и что это выходит? Мы функции присваиваем какое то значение?
определение __success:
C++
1
#define __success(expr)          __allowed(on_function_or_typedecl)
Ничего не ясно что здесь происходит и как использовать это. Или просто использовать как конструкцию та и все?

Добавлено через 24 минуты
в определении функции написано что это /* other helpers */
типо вспомогательные функции или что?, вот ее определение:
C++
1
__checkReturn WINOLEAPI IIDFromString(__in LPCOLESTR lpsz, __out LPIID lpiid);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2015, 12:55     Код, который проверяет есть ли в регистре идентификатор GUID - как он работает?
Посмотрите здесь:

Есть программный код, в который необходимо добавить процедуру вывода предложения в алфавитном порядке=) C++
C++ как переделать код,который изменяет цвета в консоли
Код написан в Dev C. Не работает в Visual. Как нужно переделать код? C++
код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? C++
Не работает глобальный идентификатор extern C++
Составить программу, которая проверяет, есть ли в vector хотя бы два одинаковых элемента C++
Возможно ли получить идентификатор массива, который я передаю в функцию? C++
C++ Почему код работает, хотя есть выход за пределы массива?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,224
15.07.2015, 12:58     Код, который проверяет есть ли в регистре идентификатор GUID - как он работает? #2
C++
1
идентификатор GUID
так я где-то слышал, что он практически уникален. Им то и пользуется, потому что встретить такой же в мире крайне редко можно
vxg
Модератор
 Аватар для vxg
2658 / 1669 / 156
Регистрация: 13.01.2012
Сообщений: 6,214
15.07.2015, 14:21     Код, который проверяет есть ли в регистре идентификатор GUID - как он работает? #3
Цитата Сообщение от ninja2 Посмотреть сообщение
Не ясно как он работает
не пишите все в одну строку и будет ясно. и вообще не ясно что это за язык. должно быть как то так
C++
1
2
3
4
5
6
HRESULT hr; //теперь у нас есть hr с типом HRESULT
CLSID clsid; //теперь у нас есть clsid с типом CLSID 
hr = ::CLSIDFromProgID(L"MyComDll", &clsid); //теперь мы просим систему найти для нас clsid по заданному ProgID
if (FAILED(hr)) { //если функция отработала с ошибкой делаем что то
        return;
    }
Yandex
Объявления
15.07.2015, 14:21     Код, который проверяет есть ли в регистре идентификатор GUID - как он работает?
Ответ Создать тему
Опции темы

Текущее время: 04:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru