Windows NT 4.0 source code leak
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.

206 lines
5.1 KiB

4 years ago
  1. /*++
  2. Copyright (c) 1995 Microsoft Corporation
  3. All rights reserved.
  4. Module Name:
  5. printui.cxx
  6. Abstract:
  7. Author:
  8. Albert Ting (AlbertT) 24-Feb-1995
  9. Revision History:
  10. --*/
  11. #include "precomp.hxx"
  12. #pragma hdrstop
  13. #include <commctrl.h>
  14. #include <shellapi.h>
  15. #include <lm.h>
  16. #include "prtlibp.hxx"
  17. #include "util.hxx"
  18. #include "prids.h"
  19. #include "globals.hxx"
  20. #include "genwin.hxx"
  21. #include "ntfytab.h"
  22. #include "notify.hxx"
  23. #include "data.hxx"
  24. #include "printer.hxx"
  25. #include "queue.hxx"
  26. #include "printui.hxx"
  27. BOOL
  28. TDebugExt::
  29. bDumpUNotify(
  30. PVOID pNotify_,
  31. DWORD dwAddr
  32. )
  33. {
  34. static DEBUG_FLAGS adfEOP[] = {
  35. { "kEopRegister" , TNotify::kEopRegister },
  36. { "kEopUnregister", TNotify::kEopUnregister },
  37. { NULL, 0 }
  38. };
  39. TNotify* pNotify = (TNotify*)pNotify_;
  40. if( !pNotify->bSigCheck( )){
  41. return FALSE;
  42. }
  43. Print( "TNotify*\n" );
  44. Print( "===== CS_GUARD\n" );
  45. Print( " _pNotifyWork %x\n", pNotify->CSGuard._pNotifyWork );
  46. Print( " _eOperation ", pNotify->CSGuard._eOperation );
  47. vDumpFlags( pNotify->CSGuard._eOperation, adfEOP );
  48. Print( " Wait_base " ); vDumpPDL( pNotify->CSGuard.Wait_pdlBase( ));
  49. Print( " bDelete %x\n", pNotify->CSGuard._bDelete );
  50. Print( "=====\n" );
  51. Print( " dwSleepTime <%d>\n", pNotify->_dwSleepTime );
  52. Print( "hEventProcessed %x\n", pNotify->_hEventProcessed );
  53. Print( " CritSec @ %x\n", dwAddr + OFFSETOF( TNotify, _CritSec ));
  54. return TRUE;
  55. }
  56. BOOL
  57. TDebugExt::
  58. bDumpUPrinter(
  59. PVOID pPrinter_,
  60. DWORD dwAddr
  61. )
  62. {
  63. TPrinter* pPrinter = (TPrinter*)pPrinter_;
  64. static DEBUG_FLAGS adfExec[] = {
  65. #ifdef SLEEP_ON_MINIMIZE
  66. { "kExecSleep", TPrinter::kExecSleep },
  67. { "kExecAwake", TPrinter::kExecAwake },
  68. #endif
  69. { "kExecError", TPrinter::kExecError },
  70. { "kExecReopen", TPrinter::kExecReopen },
  71. { "kExecDelay", TPrinter::kExecDelay },
  72. { "kExecClose", TPrinter::kExecClose },
  73. { "kExecRequestExit", TPrinter::kExecRequestExit },
  74. { "kExecNotifyStart", TPrinter::kExecNotifyStart },
  75. { "kExecRegister", TPrinter::kExecRegister },
  76. { "kExecNotifyEnd", TPrinter::kExecNotifyEnd },
  77. { "kExecRefresh", TPrinter::kExecRefresh },
  78. { "kExecRefreshContainer", TPrinter::kExecRefreshContainer },
  79. { "kExecRefreshItem", TPrinter::kExecRefreshItem },
  80. { "kExecCommand", TPrinter::kExecCommand },
  81. };
  82. if( !pPrinter->bSigCheck( )){
  83. return FALSE;
  84. }
  85. Print( "TPrinter*\n" );
  86. Print( "MExecWork: @ %x\n", dwAddr-OFFSETOF_BASE( TPrinter, MExecWork ));
  87. Print( "MDataClient: @ %x\n", dwAddr-OFFSETOF_BASE( TPrinter, MDataClient ));
  88. Print( " pData %x\n", pPrinter->_pData );
  89. Print( " dwAccess %x\n", pPrinter->_dwAccess );
  90. Print( "\n" );
  91. Print( "===== EXEC_GUARD\n" );
  92. Print( " hPrinter %x\n", pPrinter->ExecGuard._hPrinter );
  93. Print( "\n" );
  94. Print( "===== PRINTER_GUARD\n" );
  95. Print( " strPrinter " ); vDumpStr( pPrinter->PrinterGuard._strPrinter );
  96. Print( " strServer " ); vDumpStr( pPrinter->PrinterGuard._strServer );
  97. Print( " hEventCommand %x\n", pPrinter->PrinterGuard._hEventCommand );
  98. Print( " dwError <%d>\n", pPrinter->PrinterGuard._dwError );
  99. Print( " pPrinterClient %x\n", pPrinter->PrinterGuard._pPrinterClient );
  100. Print( " Selection_base " ); vDumpPDL( pPrinter->PrinterGuard.Selection_pdlBase( ));
  101. Print( "\n" );
  102. return TRUE;
  103. }
  104. /********************************************************************
  105. Extension entrypoints.
  106. ********************************************************************/
  107. DEBUG_EXT_ENTRY( duntfy, TNotify, bDumpUNotify, NULL, FALSE )
  108. DEBUG_EXT_HEAD( dup )
  109. {
  110. INT offset = 0;
  111. DEBUG_EXT_SETUP_VARS();
  112. for( ; *lpArgumentString; lpArgumentString++ ){
  113. while( *lpArgumentString == ' ' ){
  114. lpArgumentString++;
  115. }
  116. if (*lpArgumentString != '-') {
  117. break;
  118. }
  119. ++lpArgumentString;
  120. switch( *lpArgumentString ){
  121. case 'T':
  122. case 't':
  123. ++lpArgumentString;
  124. //
  125. // Convert types (pointer may be MExecWork, MNotifyWork)
  126. //
  127. switch( *lpArgumentString ){
  128. case 'E':
  129. case 'e':
  130. //
  131. // Convert from ExecWork
  132. //
  133. offset = OFFSETOF_BASE( TPrinter, MExecWork );
  134. break;
  135. default:
  136. Print( "Unknown conversion type\n" );
  137. return;
  138. }
  139. break;
  140. default:
  141. Print( "Unknown option %c.\n", *lpArgumentString );
  142. return;
  143. }
  144. }
  145. DEBUG_EXT_SETUP_SIMPLE( TPrinter,
  146. pPrinter,
  147. lpArgumentString,
  148. 0,
  149. offset,
  150. FALSE );
  151. if( !TDebugExt::bDumpUPrinter( pPrinter, dwAddr )){
  152. Print( "Unknown Signature\n" );
  153. }
  154. }