Всем привет! Хочу изучить и понять PCI архитектуру и пограммирование устройств под винды. Кое-что о ядре и драйверах я знаю. По крайней мере могу создать legacy NT драйвер. В терминологии ядра NT тоже более менее разбираюсь. Поэтому хочу начать изучение PCI шины с примеров программирования и экспериментов, параллельно читая спецификацию PCI 3.0. Скажите пожалуйста, "с чего начинается родина" в винде для PCI устройств? Например, как можно получить информацию о шинах PCI и иерархии устройств на шинах? С чего вообще начинается PCI в винде? Т.е., насколько я понял, есть какой-то мастер контроллер на плате PC, от которого все и растет. Как до него добраться и как с ним работать? Каким образом винда "знает" о всех таких мастер-контроллерах (разные ведь чипы бывают)? И это только первые вопросы Прошу вашего терпения и надеюсь на снисхождение к новичку!
pthread_create "Мастер-контроллер", как Вы его называете, входит в состав северного моста чипсета (на последних интеловских процах под LGA 1156 сам северный мост переместился на кристалл процессора, но логически это по-прежнему отдельное устройство). Его настройку выполняет BIOS, поскольку только ему известны "интимные подробности" устройства системной платы, в нём же находится и код, зависящий от модели процессора. ОС, по большому счёту, занимается лишь конфигурированием устройств под свои нужды (хотя BIOS обязательно настраивает те из них, что требуются для загрузки ОС; прочие устройства на PCI/PCI Express BIOS может и не настраивать). Как выполняется конфигурирование, описано в спецификации PCI. Ну а как точно всё это делается конкретно в Винде, какова логика выделения устройствам диапазонов адресов и т.п. -- лично я не знаю.
В Винде сильно развита система драйверов так что может и через нее. Но на самом деле если ты читал спецификацию PCI то знаешь что там предусмотрено 2 стандартных порта для общения. Это DDK читать надо.
скажите пожалуйста, каким образом из своего драйвера посредством IoAttachDeviceToDeviceStack присоединиться к PCI bus объекту? хотелось бы посмотреть на технику этого действа...