Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Нужно обслуживать PCI-плату под Windows XP.  (Прочитано 37674 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serhiy_UA
Интересующийся

ua
Offline Offline

« : 25-01-2010 07:49 » 

Приветствую всех!
Есть плата своей разработки на FPGA FLEX10K от Altera, c ядром pci_mt32, все обрамление написано мной на verilog. Плата успешно работает под DOS, но коды писал другой на Pascal, да он уже и уволился. Теперь надо обслуживать эту PCI-плату под Windows XP, но коды писать уже мне. В далекой перспективе есть еще проекты на PCI-X и PCIe.

Сейчас я хочу:
1. находить свою PCI-плату в компьютере;
2. обмениваться с этой платой 32-разрядными данными;
2. реагировать на её прерывания.

Перечитал уже несколько книг, но в голове яснее по обслуживанию PCI-плат не стало, даже еще хуже. Все как-то фрагментами, а понимания как же это делается - нет. По этому, нужна «помощь зала», хотя бы пока по первому ряду вопросов:
Как находить свою PCI-плату в компьютере, ведь там их может быть несколько?
Как считать назначенный этой плате конфигурационный файл после процедур PnP?   

Основные книги у меня есть в djvu и я с ними работаю:
1) Уолтер Они «Использование microsoft windows driver model»
2) М. Руссинович, Д. Соломон "Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000."
3) В. П. Солдатов "Программирование драйверов Windows 3-е изд.
4) Примеры "Программирование драйверов"На http://www.pcports.ru/Articles.php

Буду очень благодарен за дельный ответ, по сути.

Хотя я все же больше разработчик цифровой аппаратуры на FPGA, но работаю и с Microsoft Visual C++ 6.0, до этого был Borland C++ Builder 6. Последняя из моих работ - это Ethernet-100 (LAN91C111), где на C++ написан урезанный стек TCP/IP для Nios II  7.2 IDE.
Записан
YouROK
Интересующийся

ru
Offline Offline

« Ответ #1 : 26-01-2010 07:04 » 

Я новичек в этой области, но всетаки
по поводу 1, когда плата воткнута в компьютер, и в виндовсе заходишь в диспечер устройств,
там должно быть неизвестное устройство, так вот посмотреть vid&pid устройства и написать inf
файл по ним, и потом когда уже напишешь драйвер то на каждую плату будет ставиться драйвер,
это в теории и моё мнение, а вот на практике даже и не знаю.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 26-01-2010 07:44 » 

Serhiy_UA, доброго!
находить свою плату в windows не надо) в процессе PnP - перечисляются все устройства на шине. все устройства имеют VendorID и DeviceID по ним - ищется Inf файл, где сопоставлены устройства и драйвер его обслуживающий.
если идентичных устройств - несколько, они различаются номером слота на шине. ресурсы конфигурирует сама ОС, поэтому с этим никаких сложностей не возникнет.

насчет 2-3. поищите посты в форуме насчет NeMega DriverStudio 3.2. я несколько раз рассказывал как пользоваться ее визардом для создания рыбы драйвера.
она вам сделает рыбу драйвера и с обменом словами и с затычкой на прерывание. вполне работоспособный код, тем более если у вас есть готовая и отлаженная плата - заработает сразу) правда если проверено только под DOS - возможно будут вопросы по реализации PnP на самой плате. там надо конфигурационные регистры правильно заполнить... но даже без драйвера - PCI плата ОДНОЗНАЧНО должна обнаруживаться в Windows как устройство в дереве устройств!

PS честно говоря на такие общие вопросы довольно сложно ответить - слишком многое написать надо, а общую структуру лучше в книгах))) поиграйтесь визардом с Driver Studio, у вас появятся более конкретные вопросы))))


Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #3 : 26-01-2010 14:06 » 

Спасибо за полезные ответы, я сейчас их прорабатываю.
Уточняю суть по пункту «находить свою PCI-плату в компьютере».

1. Приложение без меня должно сообщить, есть или нет в системе моя PCI-плата. Как это лучше сделать?

2. Приложение должно расшифровать содержимое 256 байт конфигурационного пространства. Показать физические адреса выделенных пространств памяти или портов ввода-вывода. Здесь тоже вопрос, как?

То есть разобраться бы с этим, а потом уже обмены и прерывания.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 26-01-2010 17:36 » 

Serhiy_UA, ээээ... в Windows XP... а точнее начиная с Windows 2000... приложение не имеет прямого доступа к физическому адресному пространству(грубо говоря, хотя можно и отмапировать драйвером)... к портам I/O - тоже. из приложения вы можете осуществить все вышеперечисленное вызывая только функции своего драйвера.
дело в том что оба приведенных вами пункта - выполняет Windows (грубо говоря) - без вашего участия. по результатам - проверки "1" - Windows загрузит ваш драйвер и скажет ему "2" - все физические адреса которые он потребовал.

конкретнее:
по приходу IRP_MN_START_DEVICE, в переменной
  PIO_STACK_LOCATION       IOStack = IoGetCurrentIrpStackLocation(Irp);
находится перечисление всех требуемых ресурсов (массив структур типа CM_PARTIAL_RESOURCE_DESCRIPTOR)
  PCM_PARTIAL_RESOURCE_DESCRIPTOR pPartialDescriptors = &IOStack->Parameters.StartDevice.AllocatedResourcesTranslated->List->PartialResourceList.PartialDescriptors[i]
поле pPartialDescriptors->Type определяет тип элемента - вам понадобятся типы CmResourceTypePort, CmResourceTypeInterrupt, CmResourceTypeMemory.

адреса портов pPartialDescriptors->u.Port.Start длина окна pPartialDescriptors->u.Port.Length
отображаемая память pPartialDescriptors->u.Memory.Start, длина pPartialDescriptors->u.Memory.Length

и т.д. по всем значениям массива от 0 до IOStack->Parameters.StartDevice.AllocatedResourcesTranslated->List->PartialResourceList.Count

Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #5 : 27-01-2010 08:20 » 

Спасибо за подробную информацию в ответе, для начинающих это очень важно.
 
Еще вопрос.
После запуска msinfo32.exe, просмотрел сведения о системе и убедился в наличии в ней системного драйвера PCI шины с именем pci.
Могут ли я как-то использовать (приспособить) этот драйвер для своих задач? Если да, то как?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 27-01-2010 08:56 » 

косвенно... по идее это должен быть драйвер шины. без него ничего не работает) он как бы является арбитром шины.
но по большому счету напрямую вы его  использовать не сможете.

http://msdn.microsoft.com/en-us/library/aa490244.aspx
вам придется делать то что нарисовано под цифрой 4
программирование устройств в Windows - кардинальным образом отличается от программировании под DOS.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #7 : 27-01-2010 10:58 » 

Допускается ли в  WinXP из своих приложений использовать функций PCI BIOS (через каталог 32-разрядных сервисов)? Подобно тому, как это делалось ранее на ассемблере, например, через функции прерывания Int 1Ah.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 27-01-2010 13:39 » 

Serhiy_UA, нет, этого делать не стоит. кроме того вам это сделать из приложения - не позволят.
я повторяю - все необходимые манипуляции с конфигурационным пространством PCI - выполняет операционная система. и не стоит ей в этом мешать.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #9 : 28-01-2010 07:34 » 

Ochkarik, еще раз СПАСИБО за содействие и помощь!

1. Ваши оценки возможностей функций PCI BIOS для WinXP приняты.
Хотя, еще вдогонку, есть книга Гук М. Ю. Шины PCI, USB и FireWire. Энциклопедия. — СПб.: Питер, 2005. — 540 с.: ил.
В ней автор советует использовать функций PCI BIOS. Если они не идут на WinXP, начавшего жизнь в 2001 году, то зачем  о этих функциях PCI BIOS в книге 2005 года? А в целом книга супер, подобных книг мало, но было бы еще ценнее, если бы там было больше о программировании.

2. Попутно еще один вопрос:
Могут ли WinAPI функции помочь в обслуживании PCI-плат?

3. DriverStudio 3.2 нашел здесь, скачал, начинаю осваивать.
http://www.cracklab.ru/download.php?action=list&n=MTA=
Взял из Examples пример проекта pcienum, в VC++6 все компилируется.

4. В 4-ом посте было приведен сложный оператор:   PCM_PARTIAL_RESOURCE_DESCRIPTOR pPartialDescriptors = &IOStack->Parameters.StartDevice.AllocatedResourcesTranslated->List->PartialResourceList.PartialDescriptors;
Мне он оказался не по силам и я, в одном из форумов, попросил синтаксически объяснить его, что мне и сделали. Но там вопрос вызвал живую дискуссию по стилю программирования, и попросили сообщить, что стоит перед оператором, и после него. Поэтому, если можно, выложите весь файл или его части, для этого консилиума.

« Последнее редактирование: 28-01-2010 11:59 от Serhiy_UA » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 28-01-2010 12:42 » 

1. увы, большинство книг пишется при помощи Ctrl+C/Ctrl+V.
2. только драйвер. это - однозначно.
3. не надо Examples) запустите визард нового проекта. он должен был встроится в VS.
4. перед оператором стоит цикл по всем "i") видимо народ смутился от количества вложений. это структура ядра. одна из длинных, с переменной длинной да еще и местами union.
Код:
    //Аппаратные ресурсы-----------------------------------------------------------

NTSTATUS    
InitResPCI(   PIO_STACK_LOCATION    IOStack,
              ...)
{
DWORD    i;
PCM_PARTIAL_RESOURCE_DESCRIPTOR pPartialDescriptors;

    for(i=0; i<IOStack->Parameters.StartDevice.AllocatedResourcesTranslated->List->PartialResourceList.Count; i++)
    {
pPartialDescriptors =
   &IOStack->Parameters.StartDevice.AllocatedResourcesTranslated->List->PartialResourceList.PartialDescriptors[i];
//pPartialDescriptors->ShareDisposition =/*CmResourceShareDeviceExclusive, CmResourceShareDriverExclusive, CmResourceShareShared. */

switch (pPartialDescriptors->Type)
{
case CmResourceTypePort:
...порты I/O
   break;
case CmResourceTypeInterrupt:
...прерывания
   break;
case CmResourceTypeMemory:
...отображаемая память.
   break;
case CmResourceTypeDma:
...старье
   break;
case CmResourceTypeDeviceSpecific:
...всяко разно
   break;
default: //ERROR!!!*******
....обработка нештатных значений
   break;
};
    };

PS а тем людям на форуме передайте, что PIO_STACK_LOCATION - одно из полей IRP запросов ядра windows. и все ее используюст с 98 года по сей день не подозревая об этом))
если интересно
http://msdn.microsoft.com/en-us/library/dd852053.aspx
http://msdn.microsoft.com/en-us/library/ms806454.aspx
и
http://msdn.microsoft.com/en-us/library/dd852068.aspx
http://msdn.microsoft.com/en-us/library/dd852047.aspx
http://msdn.microsoft.com/en-us/library/dd852062.aspx
http://msdn.microsoft.com/en-us/library/dd852041.aspx
http://msdn.microsoft.com/en-us/library/dd852009.aspx
http://msdn.microsoft.com/en-us/library/dd852009.aspx

И главное: на счет Страуструп-а.... - вторую заповедь пусть вспоминают чаще))))
« Последнее редактирование: 28-01-2010 21:53 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #11 : 29-01-2010 08:36 » 

Поработал с DriverStudio 3.2 на двух следующих пробных проектах (они в архивах):
1. pcienum.zip что взял из каталога примеров.
2. MyPCIa.zip построил с помощью DriverWizard.

В Microsoft Visual C++ 6.0 выполнил запуск DriverStudio –> Build with BUILD.EXE.
В  1-ом примере все выполнилось без замечаний, но файл *.sys не был получен, я его не нашел.
Во 2-ом выдано замечание «U1073: don't know how to make 'd:\PROGRA~1\Compuware\DriverStudio\DriverWorks\lib\i386\FREE\vdw_wdm.lib'»
То есть как бы нет vdw_wdm.lib, я по каталогам ее тоже не нашел.

Тексты сообщений сведены в файле Build.txt.

Как быть? Ведь цель, как я понимаю, это хотя бы получить *.sys?
Нужна помощь, что здесь не так?

* Build.txt (2.57 Кб - загружено 1358 раз.)
* pcienum.zip (326.42 Кб - загружено 785 раз.)
* MyPCIa.zip (67.47 Кб - загружено 802 раз.)
« Последнее редактирование: 29-01-2010 08:40 от Serhiy_UA » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 29-01-2010 08:56 » 

"не так" - следующее: это плохие примеры. они написаны на классах... поверьте на слово: НЕ НАДО их использовать. КАТЕГОРИЧЕСКИ!!! поищите на форуме я уже десять раз объяснял, почему их не нужно использовать. в DS 3.2 есть две опции - генерация проекта с использованием классов и с использованием ЧИСТОГО Си (без C++).

еще раз повторяю: запустите визард VS. там должен быть пункт генерации драйвера(NuMega при инсталяции должна была добавить).
используйте данный визард ТОЛЬКО для генерации Си проектов(ни в коем случае не включайте опцию использования классов С++!!!!!).
визард у вас попросит указать устройство для которого нужен драйвер(заранее вставьте в машину - должно отображаться в списке устройств). и под вашу железку сгенерит и драйвер, и тестирующее приложение и inf файл для установки драйвера. вы его запустите и будете наслаждаться жизнью. если у вас скромные запросы, то скорее всего вам и трогать его не придется.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 29-01-2010 09:01 » 

ЗЫ через пол часика найду вам ссылок что нажимать

значится так. сейчас выложу ссылку на пример с картинками, НО!
там картинки и комментарии ДЛЯ СТАРОЙ ВЕРСИИ 2.0. Тогда у NuMega был визард который делал рыбу драйвера только на С++. начиная с версии 3 они добавили возможность генерации на Си без использования надстроек на классах. И только в таком режиме имеет смысл использовать данный визард. только голый Си.

в общем делаете примерно все то же что на картинках, но: на самом первом шаге вместо выбора "WDM драйвер с поддержкой DriverWorks С++",   выбираете просто WDM драйвер. там был такой пункт. или у них раздельные визарды были - сейчас не помню.
короче все файлы проекта у вас должны появится с расширением *.c (а не cpp!)
http://www.codenet.ru/progr/visualc/wdmnumega/

ЗЫ на текст этой статьи не смотрите, он устарел, под очень старую версию DS и вобще про классы.
« Последнее редактирование: 29-01-2010 09:26 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #14 : 29-01-2010 09:36 » 

Все получилось!!!  С п а с и б о !!!
По крайней мере формально я теперь имею MyPCIb.sys и MyPCIb.inf
Продолжаю осваивать дальше. Тоже пытаюсь описывать действия c картинками окон, потом, если будет надо, выложу *.doc.

Статью "Использование NuMega DriverStudio для написания WDM-драйверов" еще не видел. Если есть еще аналогичные статьи, дайте, пожалуйста, ссылки. 
« Последнее редактирование: 29-01-2010 09:41 от Serhiy_UA » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 29-01-2010 11:06 » 

вообще то, там помимо проекта драйвера должнен был сгенерится *.exe проект для использования этого драйвера. либо там отдельная кнопка была - генерить тестовое приложение... посмотрите повнимательней.

PS надеюсь то что вы теперь MyPCIb без классов) а лучше выложите его, если можно, проверю...))
а статьи... вобще я www.google.com пользуюсь))))
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #16 : 01-02-2010 12:03 » 

Прочел статью из http://www.codenet.ru/progr/visualc/wdmnumega/, но умней, почему-то, не стал.  Не понял
С помощью DriverStudio 3.2 создал проект MyPCIc (он в приложении). Есть вопросы:
1. Тестовую программу *.exe я не нашел, и кнопку для ее генерации тоже. Где она может быть?
2. Как я понимаю, функции из MyPCIc\app\, можно напрямую включать в свою программу. Но все же не понятно, как с их помощью, выполнить поиск своей платы в компьютере?

* MyPCIc.zip (358.6 Кб - загружено 741 раз.)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 01-02-2010 16:31 » 

почитайте руссиновича) там все есть.
если будет слишком сложно - возмите что нибудь по азам программирования обычных приложений для windows. и только потом почитайте руссиновича)

1. плохо искали) MyPCIc\ReadMe.htm
2.  MyPCIc\app - это и есть тестовая программа! app - это от слова application(приложение)
3.  MyPCIc\driver - ЭТО драйвер.
4.  ПОИСК ДЕЛАЕТ WINDOWS! судить(программно) о наличии платы вы можете через функции ВАШЕГО драйвера когда(и если) он будет загружен. посмотрите код тестового приложения. судить (визуально) о ее наличии без установки драйвера - вы можете если откроете менеджер управления устройствами.(там есть и программные функции но они вряд ли вам пригодятся)

5 почитайте о системе PnP (Plug And Play).

PS не уверен что установка в PCI вендора производителя равного FFFF (судя по коду inf файла) - хорошая идея....
« Последнее редактирование: 01-02-2010 16:40 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #18 : 04-02-2010 11:56 » 

Приветствую, Ochkarik! Очень нужна Ваша помощь.

Сделал по пунктам следующее:
1. С помощью DriverWizard выполнил все шаги для PCI-платы, в результате имею драйвер и тестовое приложение. В шаге “Hardware Bus” выбрал свою подключенную плату через “Select physical devicу…”, то есть она введена, а ее параметры свел для справки в Pci0.txt.
2. Выполнил компиляцию отдельно драйвера и приложения, все в норме. Имею PCI0.inf и PCI0.sys, которые установил через «Панель управления – Установка оборудования», а затем перезапустил систему. Система сообщила, что найдено новое оборудование, которое работает нормально.
3. Запускаю тестовое приложение PCI0App.exe – выдается сообщение «Программа не запускается».
Аналогичным образом применил все к другой PCI-плате, поддерживающей на моем компьютере один из портов USB. Результат получился аналогичный.

Что может быть не так? Почему не работает тест?

Проект в приложении.
Что-то не хочет брать большой проект, хоть я его и разбил на части. Пришлось отправить по частям в разных постах.

Еще хочу отметить, что драйвер включен в системный реестр, я его наблюдаю через regedit.exe в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pci0\Enum
В частности PCI\VEN_1172&DEV_0004&....



* Pci0.part01.rar (358.4 Кб - загружено 810 раз.)
« Последнее редактирование: 04-02-2010 13:04 от Serhiy_UA » Записан
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #19 : 04-02-2010 12:03 » 

часть 2

* Pci0.part02.rar (358.4 Кб - загружено 789 раз.)
Записан
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #20 : 04-02-2010 12:03 » 

часть 3

* Pci0.part03.rar (358.4 Кб - загружено 806 раз.)
Записан
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #21 : 04-02-2010 12:04 » 

часть 4

* Pci0.part04.rar (105.33 Кб - загружено 795 раз.)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 04-02-2010 15:58 » 

операционка какая? если виста или Win7 - возможно надо запускать приложение от имени администратора(в свойствах приложения была такая галочка). хотя и для XP тоже стоит попробовать.
дело в том что если мне не изменяет память, в генеренном автоматом inf файле доступ к драйверу разрешен только для админов.

PS попробуйте - отпишитесь что получилось. если не получится посмотрю код)

PPS дословно - какое сообщение выдает?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #23 : 05-02-2010 07:24 » 

Работаю в WinXP, как администратор. На двух компьютерах один и тот же результат.
Компиляцию выполнил для режима Win32 Free.
Драйвер установил.
Запускаю программу в VC++6 через Build->Execute Pci0App.exe. Получаю сообщения:
"Could not execute: Bad executable format (Win32, error 193)", а затем
"Cannot execute program."

Если запускаю из Total Commander, то сообщает "Программа не запускается".

Что может быть?

« Последнее редактирование: 05-02-2010 07:33 от Serhiy_UA » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 05-02-2010 08:02 » 

настройки компиляции exe-шного проекта видимо не верны...
постараюсь посмотреть попозже.
одна беда - у меня студия только 2005/2008 стоит.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #25 : 05-02-2010 09:02 » 

1. У меня, помимо Microsoft Visual C++ 6.0, на компьютере стоит и Microsoft Visual Studio 2008. Но я думал, что DriverStudio 3.2 только для VC++6. Тем более, что после установки DriverStudio 3.2 произошло автоматическое включение ее в VC++6. Если драйвера пишутся еще и на MVS2008, то подскажите, как в MVS2008 начать работу с DriverStudio 3.2.  Или все же продолжать работать в VC++6?

2. В соседнем топике было написано "все никак не разберусь с настройкой прав доступа приложений к функциям драйвера (это в inf файле). приходится запускать приложения от имени администратора. иначе приложение не видит драйвер вообще."
При запуске системы на 1-ом компьютере, я вошел как администратор, а на 2-ом просто вошел - система никаких вопросов не задавала. По этому, не понятно все же как "запускать приложения от имени администратора"? 

3. Если можно, пожалуйста, проверьте мой проект, а то работа остановилась.
Записан
Рыжий Тигра
Гость
« Ответ #26 : 05-02-2010 10:02 » 

Драйвер установил.
Запускаю программу в VC++6 через Build->Execute Pci0App.exe. Получаю сообщения:
"Could not execute: Bad executable format (Win32, error 193)", а затем
"Cannot execute program."
Если запускаю из Total Commander, то сообщает "Программа не запускается".
Что может быть?
Что-то не в порядке со структурой заголовка .exe'шника - воспринимается системой как драйвер. Я начинал эту фигню копать, но бросил - придумал способ изящнее: создал новый проект типа "win32 application" и включил в него те же исходные файлы, что и в тестовом приложении. Всё отлично скомпилировалось и заработало.
ЗЫ. Всё делалось под MSVS6 и DDK2000.
« Последнее редактирование: 05-02-2010 10:06 от Рыжий Тигра » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 05-02-2010 10:09 » 

не... DS когда выпускалась VS2005 еще не было. не то что 2008...
в общем то можно и в 2008 работать, но там настроек много, я так с кондачка не объясню в двух словах. где то на фоуме выкладывал нескоьлько раз, но лучше не заморачивайтесь пока.

с драйвером то я так понимаю все в порядке. просто приложение неверно компилируется.
фактически надо создать новый проект и перетащить туда код тестового приложения. я думаю это будет проще...
у меня он в 2005 его сконвертил но видимо совсем не верно. не компилируется.

поправил cheked конфигурацию для приложения в VS2005.
скопируйте проект (чтоб драйвер не запороть)
и подмените там выложенные файлы.
потом откройте в VS 2008 проект Pci0.sln
скомпилируйте только приложение в cheked конфигурации.

пардон - на большее времени сейчас нет) тоже - работа А черт его знает...


PS Рыжий Тигра, можно и так) выложи людям проектик?)

* Pci0.zip (2.34 Кб - загружено 799 раз.)
« Последнее редактирование: 05-02-2010 10:11 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Serhiy_UA
Интересующийся

ua
Offline Offline

« Ответ #28 : 10-02-2010 12:20 » 

к Рыжий Тигра
Последовал вашим рекомендациям.
Создал новый проект типа "win32 application" и включил в него те же исходные файлы, но ничего не получилось, уже на этапе компиляции выдаются ошибки.
Мой проект, созданный в DriverStudio 3.2 в приложении. Нужна помощь, полный ступор.......... 
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 11-02-2010 19:48 » 

пользуйтесь тем что я вам во вложении отдал)
а вообще - вам просто надо с ключами компиляции разобраться. там неправильные дефенишены стояли в настройках проекта.
откройте свойства проекта приложения(настройки я вам выложил) и посмотрите различия между дебаговой и релизовой настройкой для приложения.
« Последнее редактирование: 11-02-2010 19:54 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines