|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
||||||||||||
Транслируются ли аргументы функции CoCreateInstance в аргументы функции DllGetClassObject?22.03.2013, 17:40. Показов 4172. Ответов 17
Метки нет (Все метки)
НУ то есть я думаю должно быть понятно, о чём речь. В клиенте вызывается функция:
Если возражений не будет, тогда вопрос- почему так? Вроде как должен соответствовать-то! Иначе какой смысл в вызове CoCreateInstance с точно определённым четвёртым параметром, если на выходе (точнее- при вызове DllGetClassObject) он преобразуется в невесть что?
0
|
||||||||||||
| 22.03.2013, 17:40 | |
|
Ответы с готовыми решениями:
17
Создание функции, формирующую предложение из аргументов функции, аргументы . Аргументы - переменное число
Аргументы функции |
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 23.03.2013, 19:25 [ТС] | |
|
Чё, никто не задумывался над этим что ли?
Короче, я делаю вывод, что это просто-напросто ошибка автора. Ещё раз: аргументы CoCreateInstance НЕ ТРАСЛИРУЮТСЯ в аргументы DllGetClassObject (чего не скажешь про аргументы CoGetClassObject)
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|||||||
| 25.03.2013, 09:23 | |||||||
0
|
|||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
||||||||
| 25.03.2013, 11:45 [ТС] | ||||||||
0
|
||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|||||||
| 25.03.2013, 11:55 [ТС] | |||||||
|
Добавлено через 8 минут Дай-ка вывод напишу, а то не поверят ведь:
0
|
|||||||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||||||||
| 25.03.2013, 11:58 | ||||||||
|
не понимаю что должен показать ваш пример. мой пример корректно работает создавая все что нужно в соответствии с переданными аргументами нисколько их не искажая. чудес не бывает. поясните на что вы хотите открыть нам глаза. Добавлено через 1 минуту в отладчике пробовали смотреть?Добавлено через 1 минуту попробуйте вываливать GUID на экран чем то таким
0
|
||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
||
| 25.03.2013, 12:00 [ТС] | ||
|
Вот запустите и убедитесь сами. А потом дальше будем разговаривать. Так-то смешно: функция выводит то, чего не ожидалось, значит, функция неверна. Гениально. А может на вход не то подано?
0
|
||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 25.03.2013, 12:24 | |
|
ага. из exe уходит ваш IID, а в DLL приходит IID IUnknown. потом система сама через QueryInterface получает ваш интерфейс и возвращает его в качестве результата вызова функции. не?
Добавлено через 37 секунд ужасный лог: ======================================== ========== CoInitializeEx... CoInitializeEx ok CoInitializeSecurity CoInitializeSecurity ok CoMyObjectClassFactory::ctor CoRegisterClassObject... CoMyObjectClassFactory::AddRef CoMyObjectClassFactory::AddRef CoMyObjectClassFactory::QueryInterface (iid = {00000001-0000-0000-C000-000000000046}, iname = IClassFactory) CoMyObjectClassFactory::AddRef CoMyObjectClassFactory::Release CoMyObjectClassFactory::CreateInstance (iid = {00000000-0000-0000-C000-000000000046}, iname = IUnknown) CoMyObject::ctor CoRegisterClassObject ok CoMyObject::QueryInterface (iid = {00000000-0000-0000-C000-000000000046}, iname = IUnknown) CoMyObject::AddRef CoMyObject::AddRef CoMyObject::QueryInterface (iid = {00000003-0000-0000-C000-000000000046}, iname = N/A) CoMyObject::QueryInterface (iid = {0000001B-0000-0000-C000-000000000046}, iname = N/A) CoMyObject::QueryInterface (iid = {00000000-0000-0000-C000-000000000046}, iname = IUnknown) CoMyObject::AddRef CoMyObject::AddRef CoMyObject::QueryInterface (iid = {00000018-0000-0000-C000-000000000046}, iname = N/A) CoMyObject::QueryInterface (iid = {00000019-0000-0000-C000-000000000046}, iname = N/A) CoMyObject::QueryInterface (iid = {4C1E39E1-E3E3-4296-AA86-EC938D896E92}, iname = N/A) CoMyObject::Release CoMyObject::QueryInterface (iid = {2B952F0A-8797-428C-8E18-5D037CFEBB1D}, iname = IMyObject) CoMyObject::AddRef CoMyObject::AddRef CoMyObject::Release CoMyObject::Release CoMyObjectClassFactory::Release CoMyObject::QueryInterface (iid = {1C733A30-2A1C-11CE-ADE5-00AA0044773D}, iname = N/A) CoMyObject::QueryInterface (iid = {2B952F0A-8797-428C-8E18-5D037CFEBB1D}, iname = IMyObject) CoMyObject::AddRef CoMyObject::GetX CoMyObject::GetX CoMyObject::Release CoMyObject::Release CoMyObject::Release CoMyObject::Release CoMyObject::dctor CoRevokeClassObject... CoMyObjectClassFactory::QueryInterface (iid = {00000003-0000-0000-C000-000000000046}, iname = N/A) CoMyObjectClassFactory::QueryInterface (iid = {00000000-0000-0000-C000-000000000046}, iname = IUnknown) CoMyObjectClassFactory::AddRef CoMyObjectClassFactory::Release CoMyObjectClassFactory::Release CoMyObjectClassFactory::dctor CoRevokeClassObject ok CoUninitialize... CoUninitialize ok ======================================== ========== Добавлено через 1 минуту ...попутно в некоторых случаях мы можем увидеть запрос всякого хлама вроде интерфейса маршаллера или вообще хрен пойми чего. да, такая у нас система, любопытная она
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
||
| 25.03.2013, 12:30 [ТС] | ||
|
Так чё ага-то? Я понимаю, что там много чего вызывается. И не просто так в DllGetClassObject приходит IID_IUnknown, значит надо так. С этим-то что делать?:
0
|
||
|
Каратель
|
|||
| 25.03.2013, 13:16 | |||
|
Добавлено через 1 минуту Добавлено через 4 минуты
0
|
|||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|||
| 25.03.2013, 13:36 | |||
|
таким образом - об чем сыр бор?
0
|
|||
| 25.03.2013, 13:40 | |
|
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|||
| 25.03.2013, 13:57 [ТС] | |||
|
3F9D5DB2-3413-11d5-AE38-00E02944637A стал 0100000000000000C000000000000046, то есть IClassFactory А не должно было стать. Чему удивляться, действительно... Вот об этом и сыр бор, почему он стал IClassFactory. То, что он стал IClassFactory я и сам знаю. И оно не "кстати да." Оно ничё не объясняет. Ещё раз: я понимаю, что раз оно становится IClassFactory значит, так и надо. Но что делать с цитатой? мнение Jupiterа мне известно- "ой не трогайте меня, вы поколеблите мои устои даже читать ничё не буду. И да, константа эта называется IClassFactory" И считает что всё объяснил. Гениально, чё сказать.
0
|
|||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||
| 25.03.2013, 14:35 | ||
|
http://msdn.microsoft.com/ru-R... s.85).aspx (хотя там и написано "Usually, this is IID_IClassFactory" я думаю правильнее было бы написать "если вы в своем уме то это должна быть фабрика классов" потому как иначе ломается вся задумка. затрудняюсь ответить что будет делать CoCreateInstance если не найдет фабрику. мб запросит IUnknown, или даже запрашиваемый пользователем интерфейс, но я думаю рухнет. сейчас попробую )Добавлено через 10 минут да, упала. лог вот такой ======================= DLL_PROCESS_ATTACH DllGetClassObject CoMyObject::ctor CoMyObject::QueryInterface (iid = {00000001-0000-0000-C000-000000000046}, iname = IClassFactory) CoMyObject::dctor DLL_PROCESS_DETACH =======================
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 25.03.2013, 14:49 [ТС] | |
|
Ну пусть так.
Дело-то ещё в том, что по факту DllGetClassObject (если вызывается CoCreateInstance) не нужна ВООБЩЕ. Ну то есть как не нужна- ну да, при вызове CoCreateInstance и отсутствии DllGetClassObject программа рухнет наверное, я не спорю. Но сделайте DllGetClassObject просто для проформы- лишь бы возвращала корректное значение и всё, CoCreateInstance нормально отработает. А раз так, то вывод: можно было бы всё это замутить так, чтобы COM-объект работал вообще без DllGetClassObject (при условии использования CoCreateInstance). Но это конечно дело тех, кто придумал COM-объекты. Меня это щас мало интересует, это их дела. Просто такой вот фактик. Я ведь так понимаю, что DllGetClassObject нужна, чтобы мы там вручную могли что-то написать. А если оно автоматом всё делается, то... вот А как вы получаете такие логи?
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||
| 25.03.2013, 14:55 | ||
|
https://www.cyberforum.ru/com-... 63368.html лежит com_server_test (clear).rar - играйте с ним и глядите что происходит
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|||
| 26.03.2013, 23:26 [ТС] | |||
|
Был неправ.
Добавлено через 4 часа 13 минут
0
|
|||
| 26.03.2013, 23:26 | |
|
Помогаю со студенческими работами здесь
18
Аргументы функции Аргументы функции
Аргументы функции Аргументы у функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|