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

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

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

38 ответов

68 просмотров

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

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 решила все вопросы 😂

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

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

Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Code Explorer / обновление содержимого окна, задержка - задержка, по моему, слишком большая, примерно 1 сек, хотелось-бы установить - макс. быстро - в настройках ide не нашел...
livontiy
1
Карта сайта