Source code of Windows XP (NT5)
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.

130 lines
3.1 KiB

  1. /*
  2. *
  3. *
  4. * !!!!!!!!! THIS FILE IS NOT USED !!!!!!!!!!!!!!!
  5. *
  6. *
  7. */
  8. #error THIS FILE IS NOT USED
  9. #include <windows.h>
  10. #undef WINAPI
  11. #define WINAPI FAR PASCAL _loadds
  12. #include "dciman.h"
  13. static char szSystemIni[] = "system.ini";
  14. static char szDrivers[] = "Drivers";
  15. static char szDCI[] = "dci";
  16. static char szDISPLAY[] = "display";
  17. static char szDCISVGA[] = "dcisvga";
  18. static BOOL fDVA;
  19. extern LONG DVAEscape(HDC hdc, UINT function, UINT size, LPVOID lp_in_data, LPVOID lp_out_data);
  20. /****************************************************************************
  21. ***************************************************************************/
  22. HDC WINAPI DCIOpenProvider(void)
  23. {
  24. char ach[128];
  25. HDC hdc;
  26. UINT u;
  27. //
  28. // get the DCI provider, default to the display driver
  29. //
  30. GetPrivateProfileString(szDrivers, szDCI, szDISPLAY, ach, sizeof(ach), szSystemIni);
  31. //
  32. // if dci=dcisvga in system.ini, ignore it and try the display driver first.
  33. //
  34. if (lstrcmpi(ach, szDCISVGA) == 0) {
  35. lstrcpy(ach, szDISPLAY);
  36. }
  37. again:
  38. u = SetErrorMode(SEM_NOOPENFILEERRORBOX);
  39. hdc = CreateDC(ach, NULL, NULL, NULL);
  40. SetErrorMode(u);
  41. if (hdc == NULL)
  42. {
  43. fail:
  44. if (lstrcmpi(ach, szDCISVGA) == 0) {
  45. return NULL;
  46. }
  47. if (lstrcmpi(ach, szDISPLAY) == 0) {
  48. lstrcpy(ach, szDISPLAY);
  49. goto again;
  50. }
  51. lstrcpy(ach, szDISPLAY);
  52. goto again;
  53. }
  54. //
  55. // now check for the Escape
  56. //
  57. u = DCICOMMAND;
  58. if (Escape(hdc, QUERYESCSUPPORT,sizeof(u),(LPCSTR)&u,NULL) == 0)
  59. {
  60. //
  61. // driver does not do escape, punt it, try old DVA first though
  62. //
  63. if (lstrcmpi(ach, szDISPLAY) == 0)
  64. {
  65. if (DVAEscape(hdc,QUERYESCSUPPORT,sizeof(u),(LPCSTR)&u,NULL) != 0)
  66. {
  67. fDVA = TRUE;
  68. return hdc;
  69. }
  70. }
  71. DeleteDC(hdc);
  72. goto fail;
  73. }
  74. return hdc;
  75. }
  76. /****************************************************************************
  77. ***************************************************************************/
  78. void WINAPI DCICloseProvider(HDC hdc)
  79. {
  80. if (hdc)
  81. DeleteDC(hdc);
  82. }
  83. /****************************************************************************
  84. ***************************************************************************/
  85. int WINAPI DCISendCommand(HDC hdc, DCICMD FAR *pcmd, VOID FAR * FAR * lplpOut)
  86. {
  87. if (lplpOut) // in case it fails, make sure this is NULL
  88. *lplpOut = NULL;
  89. if (fDVA)
  90. return DVAEscape(hdc, DCICOMMAND, sizeof(DCICMD),(LPCSTR)pcmd, lplpOut);
  91. else
  92. return Escape(hdc, DCICOMMAND, sizeof(DCICMD),(LPCSTR)pcmd, lplpOut);
  93. }
  94. /****************************************************************************
  95. ***************************************************************************/
  96. extern int WINAPI DCICreatePrimary(HDC hdc, DCISURFACEINFO FAR * FAR *lplpSurface)
  97. {
  98. DCICMD cmd;
  99. cmd.dwCommand = DCICREATEPRIMARYSURFACE;
  100. cmd.dwParam1 = 0;
  101. cmd.dwParam2 = 0;
  102. cmd.dwVersion = DCI_VERSION;
  103. cmd.dwReserved = 0;
  104. return DCISendCommand(hdc, &cmd, lplpSurface);
  105. }