WIndows 2000 или XP .OR. 2003

Тема в разделе "WASM.WIN32", создана пользователем aip, 13 фев 2005.

  1. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    Hi All



    У меня такой вопрос... изучив по мере понимания архив форума win32. хотелось бы уточнить у знающих следующие:

    1.насколько различны линейки виндов 2000-ХР-2003-... с

    точки зрения написания программы на асме+win32api

    так чтоб програ работала на всех этих виндах то есть

    без использования недокументированных и прочих сомнительных функций? Или по другому: насколько

    существенны различия в функциях API этих виндов.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    aip

    Afaik api общий, разумеется, есть дополнения, но они не критичны. Xp лояльнее чем 2k к ошибкам программиста, например, не сохранение регистров EBX, EDI, EDI в оконных обработчиках.
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    2k лояльнее чем win98, а XP ещё лояльнее, а какая лояльная будет Longhorn - скоро обезьяны смогут программы писать :derisive:
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Asterix

    Imho устойчивость 2k по сравнению с w9x нельзя назвать лояльностью.
     
  5. Alter

    Alter New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2005
    Сообщения:
    9
    Адрес:
    Kiev, Ukraine




    Imho syscalls не должны валиться от кривых параметров. По крайней мере при вызове из user-mode.



    А вот user-mode app - черт с ним, пускай валится, если у программера руки не оттуда выросли. Это даже к лучшему, естественный отбор и более ровный софт.



    Жалко что MS и любители managed code думают иначе...



    Разгребать всякие

    try {

    if(strlen(str)==0) {...}

    } except(...)

    уже достало.



     
  6. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    То есть насколько могу судить по ответам то примерно такой код будет работать на любых виндах
    Код (Text):
    1.  
    2.     invoke CreateFile,[stina],\
    3.            GENERIC_WRITE,\
    4.            FILE_SHARE_READ,\
    5.            NULL,OPEN_ALWAYS,\
    6.            FILE_ATTRIBUTE_ARCHIVE,0
    7.     mov [astfa_hf],eax
    8.  
    9.     invoke SetFilePointer,[astfa_hf],0,0,FILE_END
    10.     invoke WriteFile,[astfa_hf],[stinb],[lenbs],astfawr,0
    11.  
    12.  
     
  7. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    aip

    Что значит "будет работать"?

    Если под работой понимать наличие указанных тобой функции, то они есть во всех перечисленных тобой ОС. И их поведение, с точки зрения программиста, одинаково.

    Если под работой понимать успешность их (функций) выполнение, то это зависит от параметров, которые ты им передал.
     
  8. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    q_q

    И их поведение, с точки зрения программиста, одинаково.

    Если под работой понимать успешность их (функций) выполнение, то это зависит от параметров, которые ты им передал.



    Одинаково, да не совсем. Я в MSDN натыкался в паре статей на комментарии, что максимально допустимые значения параметров различаются в 2000 и XP.
     
  9. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    CyberManiac

    Одинаково, да не совсем

    Ты хочешь сказать, что функции api меняют свою функциональность в зависимости от версии ОС? Imho для обеспечения новой функциональности придумывают новые функции и в документации оговаривают поддерживаемую версию ОС.



    максимально допустимые значения параметров

    Не понял. Это что за термин? "Допустимые значения" - понимаю, а причем тут максимальность?
     
  10. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    All



    Просто мне интересно узнать будет ли программка

    написаная с ориентиром на w2k работать (выполнять

    все задуманные функции) на всех последующих виндовсах

    хР, 2003, LongHorn :)))
     
  11. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    - в общем случае будет, если не станешь задействовать структуры специфичные для w2K. Юзай чистый win32 API. А вот для совместимости с 9х есть некоторые ограничения (в частности юникод и пр.) подробнее у Рихтера.

    Хотя насчет LongHorn-а, который для обезъян :) я не уверен...
     
  12. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    Zufyxe

    некоторые ограничения (в частности юникод и пр.)



    Насчет юникод вопрос особый... может и не по топику но суть в том что

    если определять при компиляции
    Код (Text):
    1.  
    2. section '.data' data readable writeable
    3. filea   db '~file_a.txt',0
    4. stringa db 'First string for write into file',0
    5. stringb db 'БлаБлаБла',0
    6.  
    7.  




    то по F3 или Hiew в екзешнике данные строки не Unicode

    формата ... как это соотносится с работой ядра в Unicode
     
  13. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    - про юникод, я в том смысле, что 9х не поддерживает его, в принципе. Таким образом, если юзать в программе API-функции ориентированные на параметры в юникоде, типа CreateFileW, LoadLibraryW и тп. то это однозначно в 9х работать не будет. Подробнее у Рихтера.
     
  14. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    В w2k и XP есть разница в ядре - добавлены новые IOCTL_... команды для драйверов. У меня была ситуация, когда драйвер работавший нормально в w2k не работал толком в XP, пришлось добавлять обработку других команд :) Есть разница в работе файловых систем - когда система считывает FAT :) w2k считывает по секторам (в несколько заходов), а в XP это оптимизировано - считывается FAT целиком, одним запросом... Причем обкатывал драйвер на разных ОС (рус. и англ.) и всегда в ядре были какие-то особенности... мелочи, а не приятно. По поводу пользовательского API, там скорее всего мало что измениться, как правитльно было сказано "Юзай чистый win32 API" и не используй ф-ции помеченные obsolete - устаревшие и если уже совсем нет доверия к MS, ставь в прологе/эпилоге ф-ций pushad/popad :))))
     
  15. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    SteelRat

    Что за функции obsolete ? и как их распознать?
     
  16. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    С англицкого это "устаревшие", н-р типичные представители из MSDN:

    Obsolete Functions

    _hread

    _hwrite

    _lclose

    _lcreat

    _llseek

    _lopen

    _lread

    _lwrite

    OpenFile

    SetHandleCount

    Вообще их мало, но грабли есть :)
     
  17. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    SteelRat



    тое есть
    Код (Text):
    1. invoke OpenFile...


    заменять
    Код (Text):
    1. invoke CreateFileA... FILE_OPEN


    ???
     
  18. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Ага, а лучше CreateFileW :) так как начиная с w2k ядро уже юникодовое и Longhorn скорее будет абсолютно UNICODE (без CreateFileA) Вот и соображай :)
     
  19. aip

    aip New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2005
    Сообщения:
    25
    Адрес:
    Russia
    SteelRat



    ага и в секции дата писать
    Код (Text):
    1.  
    2. filename
    3. DB 0,'F',0,'i',0,'l',0,'e',0,'.',0,'t',0,'x',0,'t',0,0
    4.  
     
  20. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    У Four-F есть прекрасные макросы для MASM, на WASM можно скачать, KmdKit называются... Может я и "перегнул" с выбросом не юникодовых API, но дело движется именно к этому, да и обещают еще 64-х разрядную :dntknw: )