быдлокодер
![]() 1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,695
|
||||||||||||
Транслируются ли аргументы функции CoCreateInstance в аргументы функции DllGetClassObject?22.03.2013, 17:40. Показов 3797. Ответов 17
Метки нет Все метки)
(
НУ то есть я думаю должно быть понятно, о чём речь. В клиенте вызывается функция:
Если возражений не будет, тогда вопрос- почему так? Вроде как должен соответствовать-то! Иначе какой смысл в вызове CoCreateInstance с точно определённым четвёртым параметром, если на выходе (точнее- при вызове DllGetClassObject) он преобразуется в невесть что?
0
|
22.03.2013, 17:40 | |
Ответы с готовыми решениями:
17
Создание функции, формирующую предложение из аргументов функции, аргументы . Аргументы - переменное число
Аргументы функции |
быдлокодер
![]() 1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,695
|
|
23.03.2013, 19:25 [ТС] | |
Чё, никто не задумывался над этим что ли?
Короче, я делаю вывод, что это просто-напросто ошибка автора. Ещё раз: аргументы CoCreateInstance НЕ ТРАСЛИРУЮТСЯ в аргументы DllGetClassObject (чего не скажешь про аргументы CoGetClassObject)
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
|||||||
25.03.2013, 09:23 | |||||||
0
|
быдлокодер
![]() 1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,695
|
||||||||
25.03.2013, 11:45 [ТС] | ||||||||
0
|
быдлокодер
![]() 1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,695
|
|||||||
25.03.2013, 11:55 [ТС] | |||||||
Добавлено через 8 минут Дай-ка вывод напишу, а то не поверят ведь:
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
||||||||
25.03.2013, 11:58 | ||||||||
не понимаю что должен показать ваш пример. мой пример корректно работает создавая все что нужно в соответствии с переданными аргументами нисколько их не искажая. чудес не бывает. поясните на что вы хотите открыть нам глаза. Добавлено через 1 минуту ![]() Добавлено через 1 минуту попробуйте вываливать GUID на экран чем то таким
0
|
быдлокодер
![]() 1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,695
|
||
25.03.2013, 12:00 [ТС] | ||
Вот запустите и убедитесь сами. А потом дальше будем разговаривать. Так-то смешно: функция выводит то, чего не ожидалось, значит, функция неверна. Гениально. А может на вход не то подано?
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
|
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
|
Каратель
![]() |
|||
25.03.2013, 13:16 | |||
Добавлено через 1 минуту Добавлено через 4 минуты
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
|||
25.03.2013, 13:36 | |||
таким образом - об чем сыр бор?
0
|
25.03.2013, 13:40 | |
0
|
быдлокодер
![]() 1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,695
|
|||
25.03.2013, 13:57 [ТС] | |||
3F9D5DB2-3413-11d5-AE38-00E02944637A стал 0100000000000000C000000000000046, то есть IClassFactory А не должно было стать. Чему удивляться, действительно... Вот об этом и сыр бор, почему он стал IClassFactory. То, что он стал IClassFactory я и сам знаю. И оно не "кстати да." Оно ничё не объясняет. Ещё раз: я понимаю, что раз оно становится IClassFactory значит, так и надо. Но что делать с цитатой? мнение Jupiterа мне известно- "ой не трогайте меня, вы поколеблите мои устои даже читать ничё не буду. И да, константа эта называется IClassFactory" И считает что всё объяснил. Гениально, чё сказать.
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
||
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,695
|
|
25.03.2013, 14:49 [ТС] | |
Ну пусть так.
Дело-то ещё в том, что по факту DllGetClassObject (если вызывается CoCreateInstance) не нужна ВООБЩЕ. Ну то есть как не нужна- ну да, при вызове CoCreateInstance и отсутствии DllGetClassObject программа рухнет наверное, я не спорю. Но сделайте DllGetClassObject просто для проформы- лишь бы возвращала корректное значение и всё, CoCreateInstance нормально отработает. А раз так, то вывод: можно было бы всё это замутить так, чтобы COM-объект работал вообще без DllGetClassObject (при условии использования CoCreateInstance). Но это конечно дело тех, кто придумал COM-объекты. Меня это щас мало интересует, это их дела. Просто такой вот фактик. Я ведь так понимаю, что DllGetClassObject нужна, чтобы мы там вручную могли что-то написать. А если оно автоматом всё делается, то... вот А как вы получаете такие логи?
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
||
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,695
|
|||
26.03.2013, 23:26 [ТС] | |||
Был неправ.
Добавлено через 4 часа 13 минут
0
|
26.03.2013, 23:26 | |
Помогаю со студенческими работами здесь
18
Аргументы функции Аргументы функции
Аргументы функции Аргументы у функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
|
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг.
Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя.
Странные серые краски проникают и. . .
|