Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
1.7 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. Force640x480.cpp
  5. Abstract:
  6. This shim is for games that assume the start resolution is 640x480.
  7. Notes:
  8. This is a general purpose shim.
  9. History:
  10. 02/13/2001 dmunsil Created
  11. --*/
  12. #include "precomp.h"
  13. IMPLEMENT_SHIM_BEGIN(Force640x480)
  14. #include "ShimHookMacro.h"
  15. APIHOOK_ENUM_BEGIN
  16. APIHOOK_ENUM_END
  17. #define CDS_WIDTH 640
  18. #define CDS_HEIGHT 480
  19. VOID
  20. Force640x480_ChangeMode()
  21. {
  22. DEVMODEA dm;
  23. __try {
  24. ZeroMemory(&dm, sizeof(dm));
  25. dm.dmSize = sizeof(dm);
  26. if (EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dm))
  27. {
  28. if ((dm.dmPelsWidth != CDS_WIDTH) ||
  29. (dm.dmPelsHeight != CDS_HEIGHT))
  30. {
  31. dm.dmPelsWidth = CDS_WIDTH;
  32. dm.dmPelsHeight = CDS_HEIGHT;
  33. dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
  34. if (ChangeDisplaySettingsA(&dm, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
  35. {
  36. DPFN( eDbgLevelError, "ChangeDisplaySettings could not change the settings");
  37. }
  38. }
  39. }
  40. else
  41. {
  42. DPFN( eDbgLevelError, "Could not enumerate using EnumDisplaySettings");
  43. }
  44. }
  45. __except(EXCEPTION_EXECUTE_HANDLER) {
  46. DPFN( eDbgLevelWarning, "Exception trying to change mode");
  47. };
  48. }
  49. BOOL
  50. NOTIFY_FUNCTION(
  51. DWORD fdwReason
  52. )
  53. {
  54. if (fdwReason == SHIM_STATIC_DLLS_INITIALIZED) {
  55. Force640x480_ChangeMode();
  56. }
  57. return TRUE;
  58. }
  59. /*++
  60. Register hooked functions
  61. --*/
  62. HOOK_BEGIN
  63. CALL_NOTIFY_FUNCTION
  64. HOOK_END
  65. IMPLEMENT_SHIM_END