|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||||||||
Транслируются ли аргументы функции CoCreateInstance в аргументы функции DllGetClassObject?22.03.2013, 17:40. Показов 4319. Ответов 17
Метки нет (Все метки)
НУ то есть я думаю должно быть понятно, о чём речь. В клиенте вызывается функция:
Если возражений не будет, тогда вопрос- почему так? Вроде как должен соответствовать-то! Иначе какой смысл в вызове CoCreateInstance с точно определённым четвёртым параметром, если на выходе (точнее- при вызове DllGetClassObject) он преобразуется в невесть что?
0
|
||||||||||||
| 22.03.2013, 17:40 | |
|
Ответы с готовыми решениями:
17
Создание функции, формирующую предложение из аргументов функции, аргументы . Аргументы - переменное число
Аргументы функции |
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 23.03.2013, 19:25 [ТС] | |
|
Чё, никто не задумывался над этим что ли?
Короче, я делаю вывод, что это просто-напросто ошибка автора. Ещё раз: аргументы CoCreateInstance НЕ ТРАСЛИРУЮТСЯ в аргументы DllGetClassObject (чего не скажешь про аргументы CoGetClassObject)
0
|
|
|
Модератор
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
|
|||||||
| 25.03.2013, 09:23 | |||||||
0
|
|||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||||
| 25.03.2013, 11:45 [ТС] | ||||||||
0
|
||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||||
| 25.03.2013, 11:55 [ТС] | |||||||
|
Добавлено через 8 минут Дай-ка вывод напишу, а то не поверят ведь:
0
|
|||||||
|
Модератор
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
|
||||||||
| 25.03.2013, 11:58 | ||||||||
|
не понимаю что должен показать ваш пример. мой пример корректно работает создавая все что нужно в соответствии с переданными аргументами нисколько их не искажая. чудес не бывает. поясните на что вы хотите открыть нам глаза. Добавлено через 1 минуту в отладчике пробовали смотреть?Добавлено через 1 минуту попробуйте вываливать GUID на экран чем то таким
0
|
||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||
| 25.03.2013, 12:00 [ТС] | ||
|
Вот запустите и убедитесь сами. А потом дальше будем разговаривать. Так-то смешно: функция выводит то, чего не ожидалось, значит, функция неверна. Гениально. А может на вход не то подано?
0
|
||
|
Модератор
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
|
|
| 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,705
|
||
| 25.03.2013, 12:30 [ТС] | ||
|
Так чё ага-то? Я понимаю, что там много чего вызывается. И не просто так в DllGetClassObject приходит IID_IUnknown, значит надо так. С этим-то что делать?:
0
|
||
|
Каратель
|
|||
| 25.03.2013, 13:16 | |||
|
Добавлено через 1 минуту Добавлено через 4 минуты
0
|
|||
|
Модератор
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
|
|||
| 25.03.2013, 13:36 | |||
|
таким образом - об чем сыр бор?
0
|
|||
| 25.03.2013, 13:40 | |
|
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||
| 25.03.2013, 13:57 [ТС] | |||
|
3F9D5DB2-3413-11d5-AE38-00E02944637A стал 0100000000000000C000000000000046, то есть IClassFactory А не должно было стать. Чему удивляться, действительно... Вот об этом и сыр бор, почему он стал IClassFactory. То, что он стал IClassFactory я и сам знаю. И оно не "кстати да." Оно ничё не объясняет. Ещё раз: я понимаю, что раз оно становится IClassFactory значит, так и надо. Но что делать с цитатой? мнение Jupiterа мне известно- "ой не трогайте меня, вы поколеблите мои устои даже читать ничё не буду. И да, константа эта называется IClassFactory" И считает что всё объяснил. Гениально, чё сказать.
0
|
|||
|
Модератор
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
|
||
| 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,705
|
|
| 25.03.2013, 14:49 [ТС] | |
|
Ну пусть так.
Дело-то ещё в том, что по факту DllGetClassObject (если вызывается CoCreateInstance) не нужна ВООБЩЕ. Ну то есть как не нужна- ну да, при вызове CoCreateInstance и отсутствии DllGetClassObject программа рухнет наверное, я не спорю. Но сделайте DllGetClassObject просто для проформы- лишь бы возвращала корректное значение и всё, CoCreateInstance нормально отработает. А раз так, то вывод: можно было бы всё это замутить так, чтобы COM-объект работал вообще без DllGetClassObject (при условии использования CoCreateInstance). Но это конечно дело тех, кто придумал COM-объекты. Меня это щас мало интересует, это их дела. Просто такой вот фактик. Я ведь так понимаю, что DllGetClassObject нужна, чтобы мы там вручную могли что-то написать. А если оно автоматом всё делается, то... вот А как вы получаете такие логи?
0
|
|
|
Модератор
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
|
||
| 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,705
|
|||
| 26.03.2013, 23:26 [ТС] | |||
|
Был неправ.
Добавлено через 4 часа 13 минут
0
|
|||
| 26.03.2013, 23:26 | |
|
Помогаю со студенческими работами здесь
18
Аргументы функции Аргументы функции
Аргументы функции Аргументы у функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|