Драйвер t13.dll в TraceMode |
Ответить |
Автор | |
Новичок Присоединился: 16 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 25 |
Опубликовано: 10 Июнь 2008 14:50 |
Здравствуйте. Изучаю разработку драйвера для TraceMode типа t13.dll. В качествен примера взял код описанный в справке по данной теме. Мне сказали, что библиотека, поставляемая с ТМ содержит теже функции, что и в примере, однако после компиляции кода из примера и земены существующей библиотеки на мою профайлер вылетает с ошибкой 80080005 (сообщение от DCOM об ошибке "Server execution failed"). Как я понимаю это из-за моей замены. Подскажите, кто сталкивался, какие существуют нюансы объявления экспоритруемой функции для использования ее в библиотеке для ТМ. Для эксперимента пропустил мою и примерную библиотеку через tdump. В секции export различий вообще нет. На форуме ТМ мне сказали, что для квалифицированного программиста указанной в справке информации достаточно, но я не квалифицированный и чувствую так им и не стану никогда.
|
|
Новичок Присоединился: 11 Июнь 2008 Категория: Rwanda Online Status: Offline Публикации: 3 |
|
Попробуй получить помощь от Adastrы. Или запроси помощь на других форумах - АСУТП, АВОК.
|
|
Игорь
|
|
Новичок Присоединился: 16 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 25 |
|
Адастра открещивается,говорят, что не могут сопровождать разработку драйверов пользовательских. А на счет других форумов, предполагаю, что реакция в них будет точно такая же. |
|
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|
Я dll для ТМ5 не разрабатывал, однако приходилось немного плясать с разработкой dll для других целей. При этом я использовал не tdump, а Dependency Walker (depends.exe, входит в комплект поставки Windows, см. папку Tools на диске с дистрибутивом ОС).
depends.exe позволяет просматривать имена входящих в DLL функций как при наличии decorate, так и при отсутствии. Необходимо просмотреть исходную dll и вашу в обоих режимах и сравнить результаты. Вероятно, то же самое можно сделать и в вашей программе tdump, но не берусь этого утверждать, т.к. с этой прогой не работал. |
|
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|
Новичок Присоединился: 16 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 25 |
|
В том то и дело, что имена вызываемые из моей dll и оригинальной идентичны, что и подтвердила рекомендованная вами программа, но спасибо за попытку помочь.
|
|
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|
Насколько я понял, вы пытались откомпилировать следующий кусок кода:
FILE *fj; void t13_start() { } void t13_stop() { } void t13_open() { fj=fopen("e:\\aaa","a"); } void t13_close() { fclose(fj); } int t13_write(char *name,IA &ia,float v) { fprintf(fj,"%s %g\n",name,v); return(0); } int t13_read(char *name,IA &ia,float &v) { v=(time(NULL) & 0x00ff); return(0); } int t13_fwrite(char *name,IA &ia,float v) { return(0); } int t13_fread(char *name,IA &ia,float &v) { return(0); } Возникают следующие вопросы: 1. Какой компилятор? 2. Создавался ли def-файл? Если нет, то компилятор "украшает" (decorate) имена функций в библиотеке по своему усмотрению, что, как правило, делает невозможным вызов функций из библиотеки. Поэтому, если вы не создавали такой файл (в справке ТМ об этом не написано), откройте вашу библиотеку в depends.exe и просмотрите список функций при следующих настройках: а) опция Undecorate C++ Functions активна (меню view) б) опция Undecorate C++ Functions не активна Если при отсутствии def-файла вы получите в случаях а) и б) одинаковую картинку, то я даже не знаю что сказать |
|
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|
Новичок Присоединился: 16 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 25 |
|
На счет компилятора ничего с уверенностью сказать не могу, стандартный, идущий с MS Visual Studio 2005, однако мысль вашу понял, но и тут фокус. Файл def не создается, функции сами располагаются в необходимом порядке, я пробовал вызывать эту библиотеку из своей простенькой программы, все нормально работает. При любом значении опции функции выглядят совершенно идентично. Сам удивляюсь, что там такого придумали.
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |