Вызов несуществующих функций

Internal structure and you change requests/suggestions
  • Я могу исправить ф68 на -1, если это принципиально.
  • Serge, ну, то есть, должно всё-таки -1 возвращаться?
    Я не только про ф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 значит, что такой функции никогда не было, и этот номер можно использовать для новой функции не беспокоясь о том, что какая-нибудь старая программа попытается использовать её не по назначению.
  • Pathoswithin wrote:undefined значит, что такой функции никогда не было
    Ты ошибаешься, можешь посмотреть в том файлике http://websvn.kolibrios.org/filedetails ... yscall.inc

    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:

    Code: Select all

    dd f68.fail ; moved to f68.24

    Code: Select all

    dd f68.fail ; moved to f68.25
    это возвратит 0, а не -1 как undefined_syscall.

    В sysfuncs.txt до сих пор осталось
    Function 68, subfunction 16 - load driver.
    А что MSCOFF драйверы ещё поддерживаются?
  • COFF-драйверы не поддерживаются, но 68.16 работает и даже используется во всех программах со звуком, если не считать звуком PC speaker.
    Сделаем мир лучше!
  • И не только со звуком, а в любой программе, работающей непосредственно с драйвером.
  • Serge, а в чём тогда принципиальное отличие SysFn68.16 от SysFn68.21?
    Судя по документации, в возможности указать "command line".
  • Первая возвращает логический номер сервиса по его имени. Вторая явно загружает драйвер и потом возвращает лог.номер.
  • Who is online

    Users browsing this forum: Ahrefs [Bot] and 7 guests