Сейчас при вызове некоторых системных функций возвращается -1, например,
при попытке вызвать SysFn44 http://websvn.kolibrios.org/filedetails ... c#line-145
undefined_syscall http://websvn.kolibrios.org/filedetails ... #line-5638 вернёт -1.
А некоторые другие возвращают 0, например, при попытке вызвать 68.5, 68.6, 68.7, 68.8, 68.9, 68.10 f68.fail http://websvn.kolibrios.org/filedetails ... #line-1213 вернёт 0.
С чем связано такое различие?
Вызов несуществующих функций
Я могу исправить ф68 на -1, если это принципиально.
Serge, ну, то есть, должно всё-таки -1 возвращаться?
Я не только про ф68, а вообще, например, SysFn74.5 sys_network.get_drv_name http://websvn.kolibrios.org/filedetails ... c#line-789
Я не только про ф68, а вообще, например, SysFn74.5 sys_network.get_drv_name http://websvn.kolibrios.org/filedetails ... c#line-789
Вот без понятия. Может и есть где-то такое указание, я не знаю.ну, то есть, должно всё-таки -1 возвращаться?
Serge, я просто думаю, может лучше в таких случаях делать всегда просто вместо, например, Это ведь короче будет, да и код понятнее станет.
Code: Select all
jmp undefined_syscall
Code: Select all
jmp .fail
;;;;;;;;;;;;;;;;;
.fail:
xor eax, eax
mov [esp+32], eax
ret
Тогда уж лучше сделать deprecated_syscall, который возвращает 0 на случай, если функция ещё где-то используется.
deprecated значит, что всё ещё работает как и работало, но имейте ввиду, что это ненадолго, мы даём вам время исправить свой код, который зависит от этой функции, а пока предупреждаем всех о том, что функция устарела. Такое поведение можно реализовать для устаревших функций, которые планируется в последующем удалить, например добавив вывод предупреждения на доску отладки. А те функции, которые уже удалены, тут уж само собой undefined_syscall.
undefined значит, что такой функции никогда не было, и этот номер можно использовать для новой функции не беспокоясь о том, что какая-нибудь старая программа попытается использовать её не по назначению.
Ты ошибаешься, можешь посмотреть в том файлике http://websvn.kolibrios.org/filedetails ... yscall.incPathoswithin wrote:undefined значит, что такой функции никогда не было
Code: Select all
dd undefined_syscall ; 6-deprecated OpenRamdiskFile
dd undefined_syscall ; 41- deprecated GetIrqOwner
dd undefined_syscall ; 42- deprecated ReadIrqData
dd undefined_syscall ; 44- deprecated ProgramIrqs
dd undefined_syscall ; 45- deprecated ReserveIrq and FreeIrq
dd undefined_syscall ; 52- deprecated Stack driver status
dd undefined_syscall ; 53- deprecated Socket interface
dd undefined_syscall ; 58-deprecated Common file system interface
... и комментарий "deprecated". В любом случае, undefined_syscall не подходит.
В memory.inc:это возвратит 0, а не -1 как undefined_syscall.
В sysfuncs.txt до сих пор осталось
Code: Select all
dd f68.fail ; moved to f68.24
Code: Select all
dd f68.fail ; moved to f68.25
В sysfuncs.txt до сих пор осталось
А что MSCOFF драйверы ещё поддерживаются?Function 68, subfunction 16 - load driver.
COFF-драйверы не поддерживаются, но 68.16 работает и даже используется во всех программах со звуком, если не считать звуком PC speaker.
Сделаем мир лучше!
И не только со звуком, а в любой программе, работающей непосредственно с драйвером.
Serge, а в чём тогда принципиальное отличие SysFn68.16 от SysFn68.21?
Судя по документации, в возможности указать "command line".
Судя по документации, в возможности указать "command line".
Первая возвращает логический номер сервиса по его имени. Вторая явно загружает драйвер и потом возвращает лог.номер.
Who is online
Users browsing this forum: No registered users and 1 guest