169 похожих чатов

Народ, подскажите, как можно осуществить запись в LPT-порт? У меня есть

PCIe-карта с LPT и COM портами.
Как туда что-то записать?

38 ответов

98 просмотров

может пригодится

in/out?

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
КТ315
in/out?

Забыл дописать, что под WIn11 :)

Eugene Krasnikov (ᴊɪɴ x)
Забыл дописать, что под WIn11 :)

эм, вообще не понял. изначально же для отправки post команд нужен был

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
Mixail Frolov
эм, вообще не понял. изначально же для отправки po...

У меня есть PCIe-LPT и есть postcard, которая в этот PCIe втыкается. Она работает при записи в LPT-порт (к сожалению, через 80-й порт не работает). Под DOS всё ок. Пытаюсь под VMware, добавил LPT-порт, он его видит (в загруженной DOS отображается как порт 378h), но при записи в порт значение не прокидывается. Я хочу попробовать прямо из винды что-то туда записать.

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
Eugene Krasnikov (ᴊɪɴ x)
У меня есть PCIe-LPT и есть postcard, которая в эт...

а для этих целей разве не пишут отдельно драйвера?

Eugene Krasnikov (ᴊɪɴ x)
Это я читал только что. WinIo у меня тупо не запус...

CreateFile/WriteFile/CloseHandle В Windows порты читаются через \\ хэндлы. Пример: CreateFile("\\\\PCI\\VEN_1204&DEV_EC30&SUBSYS_30101204&REV_00", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); Узнать хэндл можно в диспетчере устройств.

Aiwan \ (•◡•) / _bot
а для этих целей разве не пишут отдельно драйвера?

Ну надо взять какой-нибудь CPU-Z, сдампить BAR у устройства и увидеть, что оно вешается на IO-порт. Скорее всего.

КТ315
screenshot CreateFile/WriteFile/CloseHandle В Windows порты ч...

Ой, тьфу, перепутал. Вот так. Но суть та же, через CreateFile/WriteFile/CloseHandle.

Mixail Frolov
это не то

Так оно же, вроде.

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
КТ315
screenshot CreateFile/WriteFile/CloseHandle В Windows порты ч...

Сделал вот так: #include <iostream> #include <windows.h> using namespace std; int main() { HANDLE h = CreateFile(L"\\\\.\\LPT1", GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0); cout << h << endl; unsigned char buf = 12; DWORD count = 0; bool writefile = WriteFile(h, &buf, 1, &count, 0); DWORD error = GetLastError(); cout << boolalpha << writefile << ':' << count << ':' << error; CloseHandle(h); } Тупо зависает почему-то. Сейчас попробую как ты говоришь.

КТ315
Так оно же, вроде.

root complex это грубо говоря хост контроллер шины PCIe, там находятся управление DMA, прерываниями, что-то со встроенными железками(видюха амд радеон хд7290 там какие-то регистры оставляет) и тд

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
КТ315
А CreateFile что возвращает?

Нормальный хэндл. Что из этого использовать? Путь к экземпляру: MF\PCI#VEN_9710&DEV_9912&SUBSYS_2000A000&REV_00\5&2E0AF72A&2&02E4#CHILD0000 ID: MCS9950MF\STN_CASCADE_LPT

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
Mixail Frolov
полное ид железки

Вот ид: MCS9950MF\STN_CASCADE_LPT

Eugene Krasnikov (ᴊɪɴ x)
Вот ид: MCS9950MF\STN_CASCADE_LPT

Путь к экземпляру устройства

Eugene Krasnikov (ᴊɪɴ x)
Сделал вот так: #include <iostream> #include <wind...

Зависает наверно потому что порт реализует какое-то управление потоком и нужен драйвер устройства на этом порту. А просто читать/ставить биты - IOCTL_PAR_QUERY_INFORMATION, IOCTL_PAR_SET_INFORMATION

Eugene Krasnikov (ᴊɪɴ x)
Сделал вот так: #include <iostream> #include <wind...

А вообще, вот этот вариант работает, скорее всего. Думаю, Евгений прав. У меня это возвращает вообще FILE_NOT_FOUND.

Eugene Krasnikov (ᴊɪɴ x)
Это я читал только что. WinIo у меня тупо не запус...

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

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
Aleksandr
Поправьте ту часть которая перехватывает инициализ...

Да я уже сделал через InpOutp, сейчас вопрос в установке драйвера VMparport.sys для VMware. Надо только до компа добраться. Мне интересно, почему int 17h в чистом ДОС зависает (конкретно ax=90FEh/int 15h)?

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
Арч-чан 🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀
Что ты делаешь?

Демосценю. Сейчас мне интересно прокинуть out dx,al из VMware на реальное железо, например, чтобы можно было подключить Covox какой-нибудь. И тестить его из-под VMware. Но вообще для нормального звука, конечно, нужно HD Audio юзать. Есть sbemu-x, который нормально эмулирует SB и вроде PCSpk (и товарищ допилил, чтоб Covox тоже эмулировал). Но есть проблема: он работает через перехват портов из-под JEMMX или JEMM386, то есть нельзя написать прогу, которая будет переходить в защищённый режим сама (без DPMI), т.к. EMM-менеджеры запускают DOS через V86.

Eugene Krasnikov (ᴊɪɴ x)
Демосценю. Сейчас мне интересно прокинуть out dx,a...

А сейчас демосценеры пошли такие, что на Go и Rust демосцены пишут)

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
КТ315
А сейчас демосценеры пошли такие, что на Go и Rust...

Это демки, я пишу интро, 256-512 байт и меньше, но внедряю "новые" технологии (они не новые, но из никто не юзает), типа AVX, MP, HPET... Хочется ещё драйвер звука написать под DOS для HD Audio. В 256 байт его инициализацию не впехнёшь.

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса
Eugene Krasnikov (ᴊɪɴ x)
Демосценю. Сейчас мне интересно прокинуть out dx,a...

Короче, тупо переустановка VMware решила все вопросы 😂

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта