Splc driver что это

Splc driver что это

Совместно стандарты отвечают за параметры определенных настроек и конфигурации звукового давления, подобный подход необходим для корректного рисования принтера, соответственно для исправного функционала копировальной техники.

Зачастую SPL расширение используется в процессе отправки заявки на печать или при формировании данных для последующей печати принтера. В нем хранится информация с элементами цифровой документации, необходимыми для исполнения принтером тех или иных задач от владельца.

Открыть файл SPL можно в операционной системе Windows используя штатные ресурсы печати, также открыть SPL возможно при помощи специализированной утилиты EMF Printer Spool File Viewer. Примечательно, что данный формат считаетя «теневым» и имеет такое преимущество, как возможность перезапуска задачи на печать в случае его прерывания как со стороны системных сбоев, так и в связи с командой, исходящей от самого пользователя.

Выводы?

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Так вот, при включении этой опции, некоторые драйвера (в том числе RW Everything и китайско-подписанный chipsec_hlpr) перестают запускаться:

О безопасности для принтеров

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

В заключение хочу еще раз сказать, что проблемы печати многогранны, некоторые из них остались за рамками статьи. В следующий раз надеюсь рассказать о ведении журналов, PPD-файлах и форматах бумаги. О том, как попросить монохромный принтер распечатать двусторонний цветной документ в неизвестном ему формате b4, а также о всевозможных утилитах печати и командах совместимости.

О языках принтеров

Что такое задание на печать? Это программа, написанная на специальном языке программирования – Page Description Language (PDL).

Печатаемые страницы кодируются в PDL и занимают меньший размер, а значит, передаются быстрее необработанных изображений. PDL не зависят ни от самих устройств, ни от разрешающей способности. Принтеры преобразуют задания на специализированном языке в понятный для устройства формат. Это значит, что принтеры содержат языковые интерпретаторы. Также как у языков программирования «а ля Java», у этих языков не одна версия и каждая работает немного по-своему.

Преобразование PDL в растровые изображения выполняется программой-обработчиком: процессором растровых изображений, Raster Image Processor или просто RIP.

Самые известные PDL языки: Postscript, PCL5, PCL6

PostScript – самый распространённый из всех. Первоначально разработан компанией Adobe. Требует наличия лицензии для использования, поэтому на сегодняшний день используется преимущественно в высокопроизводительных устройствах верхнего ценового сегмента. Почти все программы, компонующие страницы, могут генерировать задания на PostScript. Это полнофункциональный язык программирования. Написанные программы можно просматривать с помощью текстового редактора. В них много круглых скобок, а также символов / %!

P.S. Эти символы ищутся интерпретаторами для распознавания заданий на печать.

Также PostScript является стандартом для MAC и профессиональным стандартом.

PCL – или Printer Common Language – альтернатива PostScript от Hewlett Packard (далее HP). Язык понятен принтерам других производителей, некоторые умеют работать только с ним. PCL – не язык программирования, он просто сообщает на принтер как ему следует напечатать страницы. Задания на PCL бинарные и непонятны для человека, зато короче по размеру, чем PostScript.

Существуют фильтры, преобразующие Postscript в PCL. Версии PCL разнятся не так сильно как PostScript, но достаточно, чтобы вызывать раздражение. Задания печатаются немного не так на разных моделях принтеров. Причина в диалектах со специальными командами. В отличие от PostScript, PCL изначально заточен именно на управление принтером, а не на переносимость страницы, поэтому для достижения наилучшего результата печати необходимо использовать команды под соответствующий принтер. Именно поэтому в операционной системе (ОС) указывается модель принтера, в противном случае генерируются иные PCL команды, интерпретируемые неправильно или вовсе игнорируемые.

На самом деле, вопрос не только в железе: существует так называемая эмуляция.

Эмуляция PCL – это значит, что разработчик стандарта (т.е. HP) не лицензировал или не тестировал принтер производителя на совместимость с PCL.

Эмуляция PostScript – Adobe не получал отчисления за свой интерпретатор PostScript, вместо этого некоторые вендоры написали собственный код. Политика лицензирования породила диалекты языков – схожие, но не повторяющие оригинал в точности. На практике оба могут выполняться с ошибками, но случается такое редко.

Чтобы вас окончательно запутать, HP определила два семейства языков PLC5 (5e – черно-белый, и 5c – цветной) и PCL6 (PCL/XL). Новые HP принтеры поддерживают оба. Ранее существовал и PCL4, но сейчас он слишком архаичный. Начиная с PCL5 5e, также были введены такие новшества, как: поддержка разрешения 600 dpi, двунаправленный обмен данными между принтером и компьютером и новые шрифты для Microsoft Windows.

PDF – еще одна разработка Adobe – Portable Document Format. Это формат документов, использующий часть возможностей PostScript, основа издательского дела и программ Office. PDF-документы не зависят от ОС и платформы. Очень часто формат используется для обмена документами с возможностью просмотра и печати. PDF – язык описания документов, а не страниц. Позволяет описывать не только страницы, но и всю структуру документа, главы, взаимосвязь текстовых столбцов друг с другом, правки и так далее. Плюс, куча возможностей мультимедиа.

Есть принтеры, которые интерпретируют PDF напрямую. Есть масса программ-трансляторов и визуальных редакторов с возможностью преобразования PDF, например, в PostScript. Это преобразование даже может быть скрыто от пользователя.

XHTML – появился относительно недавно. Принтер получает поток данных на языке, описывающем XHTML-print веб-страницу, генерирует представление задания (разные принтеры формируют разные задания, также как разные браузеры отражают страницу иначе).

HP-GL/2 – Hewlett-Packard Graphics Language – Служат для печати векторной графики в составе документа.

HPGL – язык поддержки плоттеров. Поддерживается почти всеми HP-принтерами.

PJL – Printer Job Language. Язык заданий для принтера, метаязык от HP, описывает какой PDL должен использоваться для задания, каким будет формат бумаги, сколько копий нужно напечатать, симплексное задание или дуплексное и так далее.

Kyocera — приложения и инструменты

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

В продолжение цикла популярных статей о Kyocera предлагаю материал о программах, с помощью которых можно управлять, настраивать и обслуживать офисные устройства Kyocera.

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

(Керамические ножи на картинке к программам управления принтерами-сканерами отношения не имеют, но зато красивые и напоминают об исторической сути компании — производство керамики)

Основой для работы со всей продуктовой линейкой печатающих устройств является Printer Driver:

Управление сосредоточено в стандартной панели печати Windows:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Сопутствующие программы, которые расширяют и облегчают возможности работы с драйвером:

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

KYOnet for Direct Printing — печать PDF-документов без установки Acrobat reader.

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Prescribe printer language — штука для дотошных. Буквально — редактор, в котором с помощью языка программирования Prescribe (от Kyocera) можно выполнять (или автоматизировать) задачи для принтера, которые не могут быть выполнены в других приложениях. Язык довольно простой, и после чтения руководства с примерами командовать принтером сможет любой читатель Хабра.

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

С основой — Printer Driver и тем, что рядом с ним, разобрались, перехожу к сканированию.

Для дополнительных удобств:

File Management Utility (FMU) — приложение для распределения файлов отсканированных документов по сети.

Вы можете указывать условия, при которых файлы будут отправляться в ту или иную сетевую папку, и, конечно, делать это для нескольких МФУ Kyocera. Условие — устройство должно иметь опцию HyPAS. Принцип работы утилиты — следить за появлением файлов в определенной указанной папке, и перекладывать их в соответствии с указанными вами правилами.

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

PANELPLUS — это приложение гораздо ближе к «железу» (а точнее — внутри него) и представляет собой решение на базе HyPAS для операционных панелей устройств. Позволяет использовать кнопки запуска задач по сканированию собственного изготовления.

Внешне выглядит так:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Если вы часто выполняете какие-то однотипные задачи, то удобно настроить кнопку, которая позволит запускать их в одно нажатие, а не набирать каждый раз повторяющиеся параметры.

Для «изготовления» кнопок используется приложение Panel Plus Designer:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Panel Plus Designer — как программа устанавливается на компьютере, в нем, с удобствами, вы создаете нужную вам задачу в виде наглядного workflow. Получившийся в итоге «design.xpp», импортируете на МФУ (с USB-флешки) и видите необходимую кнопку на панели устройства.

(Для работы с PPD нужна java, JRE 6.0 или свежее)

KYOcapture — полное управление процессом сканирования, десктопное приложение, суть которого лучше всего выражается вот этим скриншотом:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

С помощью программы можно настроить любые процессы сканирования и последовательности работы со сканами — сканировать бумажные или электронные документы, именовать их по нужным правилам, пересылать одновременно в несколько хранилищ, выполнять операции совместно с HyPAS и т.д.

Пример захвата документов из Outlook (как иллюстрация простоты работы с приложением):

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Для наглядности у меня есть рекламная диаграмма, демонстрирующая принцип KYOcapture — берем откуда угодно, обрабатываем и отправляем куда угодно:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

С пользовательскими приложениями — пока все. (В список можно добавить мобильное клиентское приложение под Android, которое удостоилось отдельной статьи на Хабре)

В следующем материале обещаю сделать такое же быстрое описание утилит, которые будут полезны администраторам сетей, включающих в себя офисные устройства Kyocera.

Прокси-драйвера

В итоге получается обходной манёвр – всё, что программе запрещено делать, разработчик вынес в драйвер, программа устанавливает драйвер в систему и уже через него программа делает, что хочет! Более того – выяснилось, что RW Everything далеко не единственная программа, которая так делает. Таких программ не просто много, они буквально повсюду. У меня возникло ощущение, что каждый уважающий себя производитель железа имеет подобный драйвер:

Софт для обновления BIOS (Asrock, Gigabyte, HP, Dell, AMI, Intel, Insyde…)

Софт для разгона и конфигурации железа (AMD, Intel, ASUS, ASRock, Gigabyte)

Софт для просмотра сведений о железе (CPU-Z, GPU-Z, AIDA64)

Софт для обновления PCI устройств (Nvidia, Asmedia)

Во многих из них практически та же самая модель поведения – драйвер получает команды по типу «считай-ка вот этот физический адрес», а основная логика – в пользовательском софте. Ниже в табличке я собрал некоторые прокси-драйвера и их возможности:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Результаты краткого анализа пары десятков драйверов. Могут быть ошибки!

Mem – чтение / запись физической памяти

PCI – чтение / запись PCI Configuration Space

I/O – чтение / запись портов I/O

Alloc – аллокация и освобождение физической памяти

Map – прямая трансляция физического адреса в вирутальный

MSR – чтение / запись x86 MSR (Model Specific Register)

Жёлтым обозначены возможности, которых явно нет, но их можно использовать через другие (чтение или маппинг памяти). Мой фаворит из этого списка – AsrDrv101 от ASRock. Он устроен наиболее просто и обладает просто огромным списком возможностей, включая даже функцию поиска шаблона по физической памяти (!!)

Неполный перечень возможностей AsrDrv101

Чтение / запись RAM

Чтение / запись PCI Configuration Space

Чтение / запись MSR (Model-Specific Register)

Чтение / запись CR (Control Register)

Чтение TSC (Time Stamp Counter)

Чтение PMC (Performance Monitoring Counter)

Alloc / Free физической памяти

Поиск по физической памяти

Через Python в дебри

Конечно же я захотел сделать свой небольшой «тулкит» для различных исследований и экспериментов на базе такого драйвера. Причём на Python, мне уж очень нравится, как просто выглядит реализация сложных вещей на этом языке.

Первым делом нужно установить драйвер в систему и запустить его. Делаем «как положено» и сначала кладём драйвер (нужной разрядности!) в System32:

Раньше в похожих ситуациях я извращался с папкой %WINDIR%\Sysnative, но почему-то на моей текущей системе такого алиаса не оказалось, хотя Python 32-битный. (по идее, на 64-битных системах обращения 32-битных программ к папке System32 перенаправляются в папку SysWOW64, и чтобы положить файлик именно в System32, нужно обращаться по имени Sysnative).

Затем регистрируем драйвер в системе и запускаем его:

А дальше запущенный драйвер создаёт виртуальный файл (кстати, та самая колонка «имя» в таблице с анализом дров), через запросы к которому и осуществляются дальнейшие действия:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

И ещё одна полезная программа для ползания по системе, WinObj

Тоже ничего особенного, открываем файл и делаем ему IoCtl:

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

А дальше просто реверсим драйвер и реализуем все нужные нам вызовы:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Легко и непринуждённо в пару команд читаем физическую память

Языки и технологии принтеров

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Сегодня принтер несильно отличается от компьютера. У него есть процессор, память, операционная система и постоянная память-накопитель. Если принтер сетевой, то у него есть сетевая карта и веб-сервер, позволяющий его администрировать. Принтеры не только поддерживают разные сетевые протоколы, но и принимают задания на специфичных языках, которые описывают разметку страниц и документов. Таким образом, на крупном предприятии программные средства печати должны взаимодействать с разными аппаратными реализациями протокола печати, возможно даже неизвестными. Конфигурирование печати принтера труднее, чем кажется на первый взгляд. Пользователи воспринимают печать как должное, однако, для получения качественного результата нужно пройти не один шаг.

В этой статье предлагаю рассмотреть и сравнить технологии печати, с которыми вы сталкиваетесь, выбирая новый принтер, проводя допечатную подготовку документа или работая с электронными PDF-копиями документов. И конечно, если вы пытаетесь перехватить и проанализировать задание на печать.

В чём суть, капитан?

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Режимы работы x86 процессора

В «Ring 3» программам запрещены потенциально опасные действия, такие как доступ к I/O портам и физической памяти. По логике разработчиков, настолько низкоуровневый доступ обычным программам не нужен. Доступ к этим возможностям имеют только операционная система и её компоненты (службы и драйверы). И всё бы ничего, но однажды я наткнулся на программу RW Everything:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

RW Everything действительно читает и пишет практически всё

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Смотрим последний установленный драйвер через OSR Driver Loader

Читаем BIOS

В качестве примера применения нашего «тулкита», попробуем набросать скрипт чтения BIOS. Он должен быть «замаплен» где-то в конце 32-битного адресного пространства, потому что компьютер начинает его исполнение с адреса 0xFFFFFFF0. Обычно в ПК стоит флеш-память объёмом 4-16 МБ, поэтому будем «сканировать» адресное пространство с адреса 0xFF000000, как только найдём что-нибудь непустое, будем считать, что тут начался BIOS:

В результате получаем:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Вот так в 10 строчек мы считали BIOS

Но подождите-ка, получилось всего 6 мегабайт, а должно быть 4 или 8 что-то не сходится. А вот так, у чипсетов Intel в адресное пространство мапится не вся флешка BIOS, а только один её регион. И чтобы считать всё остальное, нужно уже использовать SPI интерфейс.

Не беда, лезем в даташит, выясняем, что SPI интерфейс висит на PCI Express:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

И для его использования, нужно взаимодействовать с регистрами в BAR0 MMIO по алгоритму:

Задать адрес для чтения в BIOS_FADDR

Задать параметры команды в BIOS_HSFTS_CTL

Прочитать данные из BIOS_FDATA

Пилим новый скрипт для чтения через чипсет:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Немного помучившись, получаем ответ от SSD на команду идентификации

А если написать свой драйвер?

Зайдя на страницу с кодом драйвера, вы сразу наткнетесь на предупреждение:

Точнее я так думал, до вот этой статьи, глаз зацепился за крайне интересный абзац:

Драйвер из статьи действительно подписан, и действительно неким китайским ключом:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Как оказалось, сведения о подписи можно просто посмотреть в свойствах.. А я в HEX изучал

Немного поиска этого имени в гугле, и я натыкаюсь на вот эту ссылку, откуда узнаю, что:

есть давно утёкшие и отозванные ключи для подписи драйверов

малварщики по всему миру используют это для создания вирусни

Несколько минут мучений с гугл-переводчиком на телефоне, и мне удалось разобраться в этой утилите и подписать драйвер одним из утекших ключей (который довольно легко отыскался в китайском поисковике):

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

И в самом деле, китайская азбука

И точно так же, как и AsrDrv101, драйвер удалось без проблем запустить!

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

А вот и наш драйвер запустился

Из чего делаю вывод, что старая идея с написанием своего драйвера вполне себе годная. Как раз не хватает функции маппинга памяти. Но да ладно, оставлю как TODO.

Windows: достучаться до железа

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено. Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

О сервере печати

В Windows печать через протокол IPP появилась, начиная с Windows 2000. На клиентах с Windows 7 и новее, поддержка протокола IPP, как правило, уже установлена. Также есть Internet Printing – windows реализация сервера печати Internet через IPP. Для его установки необходимо сначала установить службу веб сервера MS IIS

О драйверах

Драйвер принтера и поддержка – ПО, преобразующее файл в понятный для принтера. Задачи и функции драйвера отвечают на вопросы: «Что если принтер не поддерживает все языки?», «Имеется задание postscript, а принтер распознает только PCL 5E. Нужно напечатать PDF, что делать, если принтер его не интерпретирует?».

GDI – ещё задание на печать можно просматривать и интерпретировать централизованно, на ПК. Также можно отправлять готовые обработанные растровые изображения на принтер «без интеллекта». Именно так и работают многие Windows GDI-принтеры. Такие принтеры обладают весьма незначительным количеством логических инструкций и совсем не обладают интерпретаторами PDL. Вместо этого растеризацию выполняет обслуживающий компьютер. Часть информации для взаимодействия с GDI скрыта в коде Windows под патентами. Эта секретность затрудняет разработку аналогов в системах Linux, и, по сути, является преимуществом. Аналогично ситуация развивается с поддержкой новейших моделей принтеров. Впрочем, ситуация меняется благодаря существованию демона CUPS с поддержкой многих Win Printers с помощью реверс инжиниринга.

PCI Express Config Space

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Чтение и запись PCI Config Space

Но через этот метод доступны только 0x100 байт конфигурационного пространства, в то время как в стандарте PCI Express размер Config Space у устройств может быть достигать 0x1000 байт! И полноценно вычитать их можно только обращением к PCI Extended Config Space, которая замаплена где-то в адресном пространстве, обычно чуть пониже BIOS:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

Адресное пространство современного x86 компа, 0-4 ГБ

На чипсетах Intel (ну, в их большинстве) указатель на эту область адресного пространства можно взять из конфига PCI устройства 0:0:0 по смещению 0x60, подробнее описано в даташитах:

Splc driver что это. Смотреть фото Splc driver что это. Смотреть картинку Splc driver что это. Картинка про Splc driver что это. Фото Splc driver что это

У AMD я такого не нашёл (наверняка есть, плохо искал), но сам факт неуниверсальности пнул меня в сторону поиска другого решения. Погуглив стандарты, я обнаружил, что указатель на эту область передаётся системе через ACPI таблицу MCFG

А сами ACPI таблицы можно найти через запись RSDP, поискав её сигнатуру по адресам 0xE0000-0xFFFFF, а затем распарсив табличку RSDT. Отлично, здесь нам и пригодится функционал поиска по памяти. Получаем нечто такое:

На всякий случай оставляем вариант для чипсетов Intel

Всё, теперь осталось при необходимости заменить чтение PCI Express Config Space через драйвер на чтение через память. Теперь-то разгуляемся!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *