VESA video modes

Тема в разделе "WASM.WIN32", создана пользователем afw2004, 24 окт 2006.

  1. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    Допустим есть драйвер видеокарты, который использует VESA видеорежимы.

    Можно ли как нибудь узнать номер текущего VESA режима из win32 приложения?
     
  2. Koshak

    Koshak New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2006
    Сообщения:
    31
    Адрес:
    Russia
    Сам не пробовал, но возможно поможет:
    написать драйвер, в нём создать обработчик IOCTL, который будет дёргать функцию 0Fh прерывания Int 10h, а из приложения дёргать этот обработчик. Может будет работать, может нет - не пробовал....
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Мда. По топику - скорее всего нет.
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    n0name
    Можно узнать какой режим установлен. Далее использовать таблицу VESA режимов для нахождения соответствия.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Pavia
    Из R3?
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    n0name
    Да.
    Вот что я имею ввиду, код на дельфи.
    Код (Text):
    1. var
    2. a:array [1..20] of record mode:Word;ResX,ResY,Color:Word; end=(
    3. (Mode:$0100;ResX: 640;ResY: 400;Color: 8),
    4. (Mode:$0101;ResX: 640;ResY: 480;Color: 8),
    5. (Mode:$0103;ResX: 800;ResY: 600;Color: 8),
    6. (Mode:$0105;ResX:1024;ResY: 768;Color: 8),
    7. (Mode:$0107;ResX:1280;ResY:1024;Color: 8),
    8.  
    9. (Mode:$010D;ResX: 320;ResY: 200;Color:15),
    10. (Mode:$010E;ResX: 320;ResY: 200;Color:16),
    11. (Mode:$010F;ResX: 320;ResY: 200;Color:24),
    12. (Mode:$0110;ResX: 640;ResY: 480;Color:15),
    13. (Mode:$0111;ResX: 640;ResY: 480;Color:16),
    14. (Mode:$0112;ResX: 640;ResY: 480;Color:24),
    15. (Mode:$0113;ResX: 800;ResY: 600;Color:15),
    16. (Mode:$0114;ResX: 800;ResY: 600;Color:16),
    17. (Mode:$0115;ResX: 800;ResY: 600;Color:24),
    18. (Mode:$0116;ResX:1024;ResY: 768;Color:15),
    19. (Mode:$0117;ResX:1024;ResY: 768;Color:16),
    20. (Mode:$0118;ResX:1024;ResY: 768;Color:24),
    21. (Mode:$0119;ResX:1280;ResY:1024;Color:15),
    22. (Mode:$011A;ResX:1280;ResY:1024;Color:16),
    23. (Mode:$011B;ResX:1280;ResY:1024;Color:24));
    24.  
    25. procedure TForm1.FormCreate(Sender: TObject);
    26. var i,m,x,y,c:Integer;
    27. DC:HDC;
    28. begin
    29. X:=GetSystemMetrics(Sm_Cxscreen);
    30. Y:=GetSystemMetrics(Sm_CYscreen);
    31. DC:=GetDC(0);
    32. c:=GetDeviceCaps(DC, BITSPIXEL);
    33. m:=-1;
    34. for i:=1 to 20 do
    35. if (a[i].ResX=X) and (a[i].ResY=Y) and ((a[i].Color=c) or ((c=32) and (a[i].Color=24))) then m:=a[i].mode;
    36. caption:=format('Width=%d Height=%d Color=%d Mode=%.4x',[x,y,c,m]);
    37. ReleaseDC(0,DC);
    38. end;
     
  7. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    А кто сказал что это VESA вообще?
    Вот у меня щас 1280x960x32 и вероятно это вовсе не VESA а нестандартный режим :)
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    CnCVK
    По условию, написанному в первом посте, что установлен VESA режим . А так могут быть режимы которые не входят в стандартные VESA режимы или вовсе являться не стандартными.

    afw2004
    Мне больше интерестно зачем это тебе нужно?
     
  9. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    А что возвратит функция ax=4f03h int 10h, когда видеокарта находится в одном из этих "нестандартных" видеорежимов?
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    afw2004
    Хороший вопрос.
    Вот что написанно в VBE3.pdf
    Note: This function is not guaranteed to return an accurate mode value if the mode set was not
    done with VBE Function 02h.
    Так что, что-нибудь да вернет. Можно эксперементально выяснить =).
     
  11. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    Интересно, каким образом?
     
  12. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Скорее всего - последний стандартно установленый режим. В любом случае это путь не для Windows. :dntknw: