Проблемы с dll
+3
Gena
dushy
Алекс
Участников: 7
Страница 1 из 1
Проблемы с dll
ФриБейсик 0.18 при попытке запустить некоторые примеры с подключёнными либами выдает сообщение типа "Приложение не смогло загрузится так как файл ___.DLL ненайден." Досадно, не работают самые вкусные - fmod, png, gif, wn-c etc. GL, напротив, запускается нормально да только не нужна пока. Ни с музыкой, ни со шрифтами и рисунками формата png, gif работать немогу. Иногда вискакивает другой месседж "Failed CreateProcess Error 2"...
Что бы это могло быть? Я только примеры пробовал запускать, в коде ничего не менял.
Что бы это могло быть? Я только примеры пробовал запускать, в коде ничего не менял.
Алекс- Сообщения : 3
Дата регистрации : 2008-07-28
Re: Проблемы с dll
Необходимо найти эти самые DLL и поместить в папку с откомпилированной программой. Например, ...examples\libraries\GL\glu_quadrics.bas прекрасно откомпилируется, но при запуске потребует библиотеку SDL.dll, идем на сайт "simple directmedia layer": "www.libsdl.org" и качаем эту библиотеку! Если, например, программе, потребуется файл "SDL_image.dll" то идем на "libsdl.org/projects/" и ищем там. Библиотеки fmod, zlib, jpeg находим на сайтах ИХ производителей, или в Google...
В случае с LINUXом схема такая-же.
ps. эти DLLки можно скинуть в windows/system32/ тогда не надо их помещать в папку с программой, все программы автоматически будут находить их, но, не советую "мусорить" в системной папке.
ps/ps некоторые DLLки искать не надо, они в комплекте с системой, OpenGL32.dll например...
В случае с LINUXом схема такая-же.
ps. эти DLLки можно скинуть в windows/system32/ тогда не надо их помещать в папку с программой, все программы автоматически будут находить их, но, не советую "мусорить" в системной папке.
ps/ps некоторые DLLки искать не надо, они в комплекте с системой, OpenGL32.dll например...
dushy- Сообщения : 2
Дата регистрации : 2008-07-29
Re: Проблемы с dll
Пробовал и в папку ложить с ехе и в Винды.
Давайте расставим точки над Ы - в папке lib лежат эти ДЛЛки. Все с расширением lib***.dll.а, если нужен файл libfmod.dll.a тогда у меня проблемы видать(поскольку он есть), если нужна fmod.dll тогда я топаю на сайт разработчика. Точнее прямо отсюда туда и отправлюсь. Может действительно чего-то неположили .
Давайте расставим точки над Ы - в папке lib лежат эти ДЛЛки. Все с расширением lib***.dll.а, если нужен файл libfmod.dll.a тогда у меня проблемы видать(поскольку он есть), если нужна fmod.dll тогда я топаю на сайт разработчика. Точнее прямо отсюда туда и отправлюсь. Может действительно чего-то неположили .
Алекс- Сообщения : 3
Дата регистрации : 2008-07-28
Re: Проблемы с dll
Файлы с разрешением .а или .о - это статические библиотеки, в данном случае, они нужны для того чтобы Ваша программа могла экспортировать функции из динамических - .dll иначе Вам пришлось бы делать все ручками, поищите литературу про динамические библиотеки, подход в freebasuc в данном случае совподает с решением этой проблемы в СИ.
К теме, Вам надо найти сами DLLки без расширения .а или .о (в других языках это может быть .lib в delphi, например .dcu).
К слову, в каталоге examples\libraries\GL\fbgl\ есть пример создания статической библиотеки, правда я не смотрел, что она делает, в каталоге \examples\dll\ - пример работы с динамическими. Там не сложно, посмотрите комментарии.
На сайте "freebasic.net/index.php/link" есть необходимые ссылки.
К теме, Вам надо найти сами DLLки без расширения .а или .о (в других языках это может быть .lib в delphi, например .dcu).
К слову, в каталоге examples\libraries\GL\fbgl\ есть пример создания статической библиотеки, правда я не смотрел, что она делает, в каталоге \examples\dll\ - пример работы с динамическими. Там не сложно, посмотрите комментарии.
На сайте "freebasic.net/index.php/link" есть необходимые ссылки.
dushy- Сообщения : 2
Дата регистрации : 2008-07-29
Re: Проблемы с dll
А.Л.Л.И.Л.У.Й.Я. Заработало! Спасибо.
Алекс- Сообщения : 3
Дата регистрации : 2008-07-28
Re: Проблемы с dll
Как подключаются Длл к файлу и как узнать содержимое длл(доступные ф-ии)? Где есть мануалы?(желательно на русском)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Проблемы с dll
Можно тут
https://freebasic.forum2x2.ru/forum-f10/tema-t111.htm
а ваще у нас на форуме в разделе документация пишется книга по FB, я думаю там много чего мона узнать о FB на русском, и при желании принять участие))
ЗЫ: некоторые примеры не было возможности проверить, если вдруг будут косяки, прозьба оставить сообщение в коментариях, исправим
https://freebasic.forum2x2.ru/forum-f10/tema-t111.htm
а ваще у нас на форуме в разделе документация пишется книга по FB, я думаю там много чего мона узнать о FB на русском, и при желании принять участие))
ЗЫ: некоторые примеры не было возможности проверить, если вдруг будут косяки, прозьба оставить сообщение в коментариях, исправим
Re: Проблемы с dll
Просмотр экспортируемых функций в dll:
http://www.nirsoft.net/utils/dll_export_viewer.html (русские ресурсы там же)
однако, перечень и типы передаваемых и возвращаемых значений придётся вычислять гаданием на кофейной гуще, или искать мануал/исходники библиотеки.
http://www.nirsoft.net/utils/dll_export_viewer.html (русские ресурсы там же)
однако, перечень и типы передаваемых и возвращаемых значений придётся вычислять гаданием на кофейной гуще, или искать мануал/исходники библиотеки.
как подключить dll
помогите пожалуйста.
мне нужно подключить библиотеку IO.DLL в freebasic для 16 разрядного доступа к порту
(In out - 8 разрядные)
но не знаю как
вот так она подключается к VB6
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean
прошу показать пример.
мне нужно подключить библиотеку IO.DLL в freebasic для 16 разрядного доступа к порту
(In out - 8 разрядные)
но не знаю как
вот так она подключается к VB6
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean
прошу показать пример.
12val12- Сообщения : 14
Дата регистрации : 2009-09-23
Re: Проблемы с dll
будет тоже самое, тока надо убрать слово private и желательно добавить alias, выглядеть будет к примеру так
- Код:
Declare Sub PortOut Lib "IO.DLL" alias "PortOut" (ByVal Port As Integer, ByVal Data As Byte)
Re: Проблемы с dll
Command executed:
"C:\FreeBASIC\fbc.exe" -arch 686 "C:\FreeBASIC\FBIDETEMP.bas"
Compiler output:
C:\FreeBASIC\bin\win32\ld.exe: cannot find -lIO.DLL
Results:
Compilation failed
io.dll я ложил во многие папки но нигде его компиллятор не видит
и ещё вопрос как включить ring0 (в frreebasic) -я чувствую это будет проще
http://www.geekhideout.com/iodll.shtml
тут примеры..но как эту dll подключить к FreeBASIC ?
"C:\FreeBASIC\fbc.exe" -arch 686 "C:\FreeBASIC\FBIDETEMP.bas"
Compiler output:
C:\FreeBASIC\bin\win32\ld.exe: cannot find -lIO.DLL
Results:
Compilation failed
io.dll я ложил во многие папки но нигде его компиллятор не видит
и ещё вопрос как включить ring0 (в frreebasic) -я чувствую это будет проще
http://www.geekhideout.com/iodll.shtml
тут примеры..но как эту dll подключить к FreeBASIC ?
12val12- Сообщения : 14
Дата регистрации : 2009-09-23
Re: Проблемы с dll
Оспадя! Воистину не знаете, чего просите! Вы умеете работать в нулевом кольце? Тогда не "включайте" ring-0, а пишите kernel mode драйвер. Примеры вроде бы есть в стандартных экзамплах.и ещё вопрос как включить ring0
Кроме того, чтоб просто указывать библиотеку (кстати, в параметре lib не нужно конкретно писать, что это dll - достаточно бы Lib "io" - это некросплаттформенно), нужна опять же статическая библиотека (для статической связки в таблицу импорта). То есть, хотя компилер и пишет, что нужна io.dll, на самом деле нужна io.dll.a - а ее можно получить, поколдовав c gcc-ским implib или dlltool (которые, если мне не изменяет память, тоже включены в стандартный "пакет поставки" фрибацика.
А можно еще на лету импортировать функции из библиотеки с помощью DyLibLoad, DyLibSymbol, DyLibFree. Ни с чем линковать для этого не нужно, просто обеспечить библиотеку в папке с прогой.
DiG. GeRR- Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 32
Откуда : Рудный, Казахстан
Re: Проблемы с dll
для того чтобы получить io.dll.a одного io.dll мало нужно еще какой то "DEF file"
мне всего лишь нужно брать 16 разрядное слово с порта &hcd04 1000раз и забить в массив далее рисовать осциллограмму
те в ring0 мне нужно 3 строчки и всё
мне всего лишь нужно брать 16 разрядное слово с порта &hcd04 1000раз и забить в массив далее рисовать осциллограмму
те в ring0 мне нужно 3 строчки и всё
12val12- Сообщения : 14
Дата регистрации : 2009-09-23
Re: Проблемы с dll
"А можно еще на лету импортировать функции из библиотеки с помощью DyLibLoad, DyLibSymbol, DyLibFree. Ни с чем линковать для этого не нужно, просто обеспечить библиотеку в папке с прогой."
как это сделать?
вот тут лежат описание функций но на си и VB http://www.geekhideout.com/iodll.shtml
как это сделать?
вот тут лежат описание функций но на си и VB http://www.geekhideout.com/iodll.shtml
12val12- Сообщения : 14
Дата регистрации : 2009-09-23
Re: Проблемы с dll
а почему это не работает (но и не даёт ошибку)
#inclib "winio"
dim as integer a,b ,c ,d ,k ,x,y
Declare Function InitializeWinIo Alias "InitializeWinIo"() As Integer
Declare Function ShutdownWinIo Alias "ShutdownWinIo"() As Integer
Declare Function MapPhysToLin Alias "MapPhysToLin"( _
Byval pbPhysAddr As Ubyte Ptr, _
Byval dwPhysSize As Uinteger, _
Byval pPhysicalMemoryHandle As Any Ptr ptr) As Ubyte Ptr
Declare Function UnmapPhysicalMemory Alias "UnmapPhysicalMemory"( _
Byval PhysicalMemoryHandle As Any Ptr, _
Byval pbLinAddr As Ubyte Ptr) As Integer
Declare Function GetPhysLong Alias "GetPhysLong"( _
Byval pbPhysAddr As Ubyte Ptr, _
Byval pdwPhysVal As Uinteger Ptr) As Integer
Declare Function SetPhysLong Alias "SetPhysLong"( _
Byval pbPhysAddr As Ubyte Ptr, _
Byval dwPhysVal As Uinteger) As Integer
Declare Function GetPortVal Alias "GetPortVal"( _
Byval wPortAddr As Ushort, _
Byval pdwPortVal As Uinteger Ptr, _
Byval bSize As Byte) As Integer
Declare Function SetPortVal Alias "SetPortVal"( _
Byval wPortAddr As Ushort, _
Byval dwPortVal As Uinteger, _
Byval bSize As Byte) As Integer
'' These wrappers for GetPortVal and SetPortVal provide a more
'' convenient call interface. The function return values are
'' discarded because, barring a misplaced call to ShutdownWinIo,
'' they duplicate the return value for InitializeWinIo (See the
'' Ports32.cpp source).
''
'' Byte and word versions only.
Function inpb( Byval wPortAddr As Ushort ) As Uinteger
Dim As Uinteger portVal
GetPortVal( wPortAddr, @portVal, 1 )
Return portVal
End Function
Function inpw( Byval wPortAddr As Ushort ) As Uinteger
Dim As Uinteger portVal
GetPortVal( wPortAddr, @portVal, 2 )
Return portVal
End Function
Sub outb( Byval wPortAddr As Ushort, Byval portVal As Uinteger )
SetPortVal( wPortAddr, portVal, 1 )
End Sub
Sub outw( Byval wPortAddr As Ushort, Byval portVal As Uinteger )
SetPortVal( wPortAddr, portVal, 2 )
End Sub
print InitializeWinIo()
b=inpb (&hcd00)
print b
sleep
#inclib "winio"
dim as integer a,b ,c ,d ,k ,x,y
Declare Function InitializeWinIo Alias "InitializeWinIo"() As Integer
Declare Function ShutdownWinIo Alias "ShutdownWinIo"() As Integer
Declare Function MapPhysToLin Alias "MapPhysToLin"( _
Byval pbPhysAddr As Ubyte Ptr, _
Byval dwPhysSize As Uinteger, _
Byval pPhysicalMemoryHandle As Any Ptr ptr) As Ubyte Ptr
Declare Function UnmapPhysicalMemory Alias "UnmapPhysicalMemory"( _
Byval PhysicalMemoryHandle As Any Ptr, _
Byval pbLinAddr As Ubyte Ptr) As Integer
Declare Function GetPhysLong Alias "GetPhysLong"( _
Byval pbPhysAddr As Ubyte Ptr, _
Byval pdwPhysVal As Uinteger Ptr) As Integer
Declare Function SetPhysLong Alias "SetPhysLong"( _
Byval pbPhysAddr As Ubyte Ptr, _
Byval dwPhysVal As Uinteger) As Integer
Declare Function GetPortVal Alias "GetPortVal"( _
Byval wPortAddr As Ushort, _
Byval pdwPortVal As Uinteger Ptr, _
Byval bSize As Byte) As Integer
Declare Function SetPortVal Alias "SetPortVal"( _
Byval wPortAddr As Ushort, _
Byval dwPortVal As Uinteger, _
Byval bSize As Byte) As Integer
'' These wrappers for GetPortVal and SetPortVal provide a more
'' convenient call interface. The function return values are
'' discarded because, barring a misplaced call to ShutdownWinIo,
'' they duplicate the return value for InitializeWinIo (See the
'' Ports32.cpp source).
''
'' Byte and word versions only.
Function inpb( Byval wPortAddr As Ushort ) As Uinteger
Dim As Uinteger portVal
GetPortVal( wPortAddr, @portVal, 1 )
Return portVal
End Function
Function inpw( Byval wPortAddr As Ushort ) As Uinteger
Dim As Uinteger portVal
GetPortVal( wPortAddr, @portVal, 2 )
Return portVal
End Function
Sub outb( Byval wPortAddr As Ushort, Byval portVal As Uinteger )
SetPortVal( wPortAddr, portVal, 1 )
End Sub
Sub outw( Byval wPortAddr As Ushort, Byval portVal As Uinteger )
SetPortVal( wPortAddr, portVal, 2 )
End Sub
print InitializeWinIo()
b=inpb (&hcd00)
print b
sleep
12val12- Сообщения : 14
Дата регистрации : 2009-09-23
Re: Проблемы с dll
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDylibload
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDylibsymbol
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDylibfree
Код не работает, видимо, из-за неправильного использования именно библиотеки...
Ну а вообще... Конечно, нужна просто библиотека импорта (io.dll.a). Проблема в том, как ее получить. Копать нужно в сторону именно тулз dlltool, implib и прочих, потому что такое делается с их помощью. Точно сказать не могу, потому что никогда этого не делал (вот у борланда все было проще - берешь длл-ку и с помощью implib делаешь библиотеку импорта... а у gcc просто разобраться нужно, кто и что делает.) Хотя по логиче вещей можно просто указывать в объвлении функции библиотеку и все, как ты уже делал. Все, перестаю рассуждать о том, чего, честно говоря, не знаю.
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDylibsymbol
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDylibfree
Код не работает, видимо, из-за неправильного использования именно библиотеки...
Ну а вообще... Конечно, нужна просто библиотека импорта (io.dll.a). Проблема в том, как ее получить. Копать нужно в сторону именно тулз dlltool, implib и прочих, потому что такое делается с их помощью. Точно сказать не могу, потому что никогда этого не делал (вот у борланда все было проще - берешь длл-ку и с помощью implib делаешь библиотеку импорта... а у gcc просто разобраться нужно, кто и что делает.) Хотя по логиче вещей можно просто указывать в объвлении функции библиотеку и все, как ты уже делал. Все, перестаю рассуждать о том, чего, честно говоря, не знаю.
DiG. GeRR- Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 32
Откуда : Рудный, Казахстан
Re: Проблемы с dll
еще прийдется потревожить
вот работающий код но очень стрёмно (ring 0) Вопрос как сделать это правильно с тем же эфефктом (запрещать прерывания не обязательно -это я так на всяк случай)
(можно на VB,C или паскале -меня инетерсует только осциллограмма -нбеольшие поправки думаю смогу сделать
вот работающий код но очень стрёмно (ring 0) Вопрос как сделать это правильно с тем же эфефктом (запрещать прерывания не обязательно -это я так на всяк случай)
(можно на VB,C или паскале -меня инетерсует только осциллограмма -нбеольшие поправки думаю смогу сделать
- Код:
#Include "windows.bi"
screen 19
Dim Shared NtSystemDebugControl As Function(As Integer, As Any Ptr, As Dword, As Any Ptr, As Dword, As Dword Ptr) As Long
Type CALL_GATE Field = 1
addrlo As Word
Seg As Word
arg:5 As Byte
u:3 As Byte
typ:5 As Byte
dpl:2 As Byte
pres:1 As Byte
addrhi As Word
End Type
Type gdtrStruct Field = 1
limit As Word
Base As Dword
End Type
Type VIRTUAL1 Field = 1
A As Any Ptr
B As Any Ptr
C As Dword
End Type
OUT &HCC02,128
'in nmos pci lpt ECR=CC00!!!!
' IF "ECP+EPP" OR "Extended" -> ECR 0x80
' (ECR - ECP-, ECR=BASE_ADDR+0x402, BASE_ADDR - ).
OUT &HCd02, 32 ' 5 BIT TO LPT BASE+2)
#Define Virtual(_a_, _b_, _c_, _d_) Scope: Var v = Type<VIRTUAL1>((_a_), (_b_), (_c_)): NtSystemDebugControl((_d_), @v, SizeOf(v), 0, 0, 0): End Scope
Function asmlpt(ByVal num As Integer) As Integer
Asm
mov dx, &hcd04
in Eax,dx
mov [Function], Eax
End Asm
End Function
' This sub will be executed in kernel mode!
Sub Ring0(cs As Dword, text As Zstring Ptr)
dim as integer k,x,z,wfinp
asm cli
dim as uByte h (2000)
'for z=1 to 1000 '
for k=0 to 799 step 4
wfinp=asmlpt(1) ' 4 SAMPLES FOUR FOR ONE CYCLE of INPUT-CONCLUSION of CPU
h(k)= lobyte(LOWORD (wfinp)) '
h(k+1)=hibyte(LOWORD (wfinp))'
h(k+2)=lobyte(HIWORD (wfinp))'
h(k+3)=hibyte(HIWORD (wfinp))'
next k
'next z '
for k=1 to 799
pset (k,500-h(k)) 'plot from adc
next k
*text = !"Hello World from Ring 0 \n"
' Store value of control register 0 in eax (which is normally not allowed) in order to prove we are in Ring 0!
Asm mov eax, cr0
' Return to Ring 3
Asm
leave
.byte 0xCA ' retf 4
.word 4
sti
End Asm
sleep
End Sub
Function Main() As Integer
NtSystemDebugControl = GetProcAddress(LoadLibrary("ntdll"), "NtSystemDebugControl")
Dim As TOKEN_PRIVILEGES pv, po
pv.PrivilegeCount = 1
pv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
Dim As HANDLE t
Dim As Dword no
' This will enable NtSystemDebugControl usage
LookupPrivilegeValue(0, SE_DEBUG_NAME, @pv.Privileges(0).Luid)
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, @t)
AdjustTokenPrivileges(t, 0, @pv, SizeOf(po), @po, @no)
' This ensures that on multi cpu/core systems we patch the right GDT for right cpu
SetThreadAffinityMask(GetCurrentThread(), 1)
SleepEx(100, FALSE)
' We read GDT table
Dim As LDT_ENTRY gdt(1000)
Dim As gdtrStruct gdtr
Asm sgdt [gdtr]
' Find free spot
Virtual(gdtr.base, @gdt(0), gdtr.limit, 8)
Dim As Integer gate
For i As Integer = 1 To 99
If gdt(i).HighWord.Bits.Pres = 0 Then
gate = i
Exit For
Endif
Next
' Construct Call Gate pointing to Ring0 proc and write it there
Var addr = CUInt(@Ring0)
Dim As CALL_GATE g = Type(addr And &hFFFF, 8, 1, 0, 12, 3, 1, addr Shr 16)
Virtual(gdtr.base + gate * 8, @g, 8, 9)
' Quite ugly way to do far call
Dim As Word farcall(3) = {0, 0, gate Shl 3}
Dim As Zstring Ptr param = CAllocate(100)
Dim As Long result
' Switch from Ring 3 to Ring 0 is just normal call ;)
Asm
push [param]
Call fword Ptr [farcall]
mov [result], eax
End Asm
' Cleanup Call Gate from GDT
Dim As Longint c = 0
Virtual(gdtr.base + gate * 8, @c, 8, 9)
Print !"\n" & *param & !"\nCR0 = " & Hex(result, 8)
Sleep
DeAllocate(param)
Return 0
End Function
End(Main())
12val12- Сообщения : 14
Дата регистрации : 2009-09-23
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|