Hello, Vladislav Baliasov! You wrote in conference fido7.su.hardw.schemes to Andrey Khristov on Tue, 29 Nov
2005 19:41:13 +0300:
VB> А мне вот не удалось. Т.е. с avreal (32-битный) все чудесно, VB> работает и на onboard, и на PCI-мультикарте, а вот просто VB> ручками (в смысле подергать ноги из afdpro) - не получилось. И VB> "Turbo" ничего не смог (явно не добрался до порта). VB> Я уж перепробовал все мыслимые драйвера - нет, никак. Кто мне VB> объяснит последовательность действий, как добраться из VB> 16-битной программы до LPT под VB> XP, и, если не получается, где что смотреть ?
Во-первых, не понятно зачем программа для программатора под NT (а другой винды сейчас уже можно считать, что и нет) должна быть 16тиразрядной. Во-вторых, я как раз сейчас озабочен тем же вопросом (правда по совсем другому поводу) и нарыл кое-что. Есть вот тут
formatting link
пример досовской программы, вызывающей функции win32 api. Делается это так:
comp.os.ms-windows.programmer.vxd Calling a 32 -bit DLL from a 16 -bit MS-DOS application
Such kind of calls are made by generation of exceptions. Here are some assembler examples for such calls for MS-DOS apps. ;---------------------------------------------------------- RegisterModule MACRO
dw 0C4C4h db 58h db 0
endm ;---------------------------------------------------------- UnRegisterModule MACRO
dw 0C4C4h db 58h db 1
endm
;----------------------------------------------------------
DispatchCall MACRO
dw 0C4C4h db 58h db 2
endm
;---------------------------------------------------------- VDDUnSimulate16 MACRO
dw 0C4C4h db 0FEh
endm
;---------------------------------------------------------- Examples:
mov si, offset cs:DLLNAME mov di, offset cs:INITFUNC mov bx, offset cs:DISPFUNC mov bp, offset cs:MyFunc ; callback function (if you need it)
RegisterModule
After this call you'll receive handle, which is being used for all another calls(in AX).
Правда у меня результат получился странный. Я собрал такую же dll, как в ссылке из тех же сорцов, но получилось почему-то раз в 10 меньше, и, что самое странное, на некоторых компах работает, а на некоторых нет.... Надо разбираться. Но в общем это метод если к чему-то большому 16тиразрядному нужно приделать интерфейс с виндовым
32хразрядным. Если 16тиразрядное не большое, лучше его переписать под винду целиком.
dima
formatting link