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.

287 lines
7.2 KiB

  1. #ifdef WIN16
  2. typedef struct _SYSTEMTIME {
  3. WORD wYear;
  4. WORD wMonth;
  5. WORD wDayOfWeek;
  6. WORD wDay;
  7. WORD wHour;
  8. WORD wMinute;
  9. WORD wSecond;
  10. WORD wMilliseconds;
  11. } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
  12. #define GETCURRENTTHREADID() 1
  13. #else
  14. #define GETCURRENTTHREADID() GetCurrentThreadId()
  15. #endif
  16. #define WHITE RGB(255,255,255)
  17. #define GREEN RGB(0,128,128)
  18. #define GREY RGB(192,192,192)
  19. #define TOPIC "Test"
  20. extern HANDLE hExtraMem;
  21. #ifdef WIN32
  22. #define PNT_INTERVAL 60000
  23. #else
  24. #define PNT_INTERVAL 30000
  25. #endif
  26. #define _5SEC 5000 // milliseconds
  27. #define _1MIN 1
  28. #define _1HOUR 60
  29. #define _1DAY 1440
  30. #define _1WEEKEND 4320
  31. #define _1WEEK 10080
  32. #define SERVER 0
  33. #define CLIENT 1
  34. #ifdef WIN16
  35. #define NUM_FORMATS 5
  36. #else
  37. #define NUM_FORMATS 6
  38. #endif
  39. // The below offsets are used with Set/GetThreadLong() "THREAD"
  40. // Offset defines cannot be interchanged between window
  41. // and thread use because of collisions.
  42. #define OFFSET_IDINST 0
  43. #define OFFSET_HCONVLIST 4
  44. #define OFFSET_CSERVERCONVS 8
  45. #define OFFSET_HSERVERCONVS 12
  46. #define OFFSET_HAPPOWNED 16
  47. #define OFFSET_CCLIENTCONVS 20
  48. #define OFFSET_HWNDDISPLAY 24
  49. #define OFFSET_CLIENTTIMER 28
  50. #define OFFSET_SERVERTIMER 32
  51. #define DELAY_METRIC 2
  52. #define EXTRA_THREAD_MEM OFFSET_SERVERTIMER+4
  53. #define S2L(s) (LONG)(MAKELONG((WORD)(s),0))
  54. // The below offsets are used with Set/GetWindowLong() "WINDOW"
  55. #define OFFSET_FLAGS 0
  56. #define OFFSET_RUNTIME 4
  57. #define OFFSET_STARTTIME_SEC 8
  58. #define OFFSET_STARTTIME_MIN 12
  59. #define OFFSET_STARTTIME_HOUR 16
  60. #define OFFSET_STARTTIME_DAY 20
  61. #define OFFSET_LAST_MIN 24
  62. #define OFFSET_LAST_HOUR 28
  63. #define OFFSET_TIME_ELAPSED 32
  64. #define OFFSET_DELAY 36
  65. #define OFFSET_STRESS 40
  66. #define OFFSET_SERVER_CONNECT 44
  67. #define OFFSET_CLIENT_CONNECT 48
  68. #define OFFSET_CLIENT 52
  69. #define OFFSET_SERVER 56
  70. #define OFFSET_THRDMAIN 60 // <== ***
  71. #define OFFSET_THRD2 64 // <== *** Ordering here is relied
  72. #define OFFSET_THRD3 68 // <== *** upon in the test. Keep
  73. #define OFFSET_THRD4 72 // <== *** This group of values
  74. #define OFFSET_THRD5 76 // <== *** in sequential order.
  75. #define OFFSET_THRDMID 80 // <== ***
  76. #define OFFSET_THRD2ID 84 // <== ***
  77. #define OFFSET_THRD3ID 88 // <== ***
  78. #define OFFSET_THRD4ID 92 // <== ***
  79. #define OFFSET_THRD5ID 96 // <== ***
  80. #define OFFSET_THRD2EVENT 100 // <== ***
  81. #define OFFSET_THRD3EVENT 104 // <== ***
  82. #define OFFSET_THRD4EVENT 108 // <== ***
  83. #define OFFSET_THRD5EVENT 112 // <== ***
  84. #define OFFSET_CRITICALSECT 116
  85. #define OFFSET_THRDCOUNT 120
  86. #define OFFSET_EXTRAMEM 124
  87. #define OFFSET_DISPWNDHEIGHT 128
  88. #define OFFSET_BASE_DELAY 132
  89. #define OFFSET_MEM_ALLOCATED 136
  90. #define WND OFFSET_MEM_ALLOCATED+4
  91. #define ID_OFFSET 20
  92. #define INC 1
  93. #define DEC 0
  94. #define STP 2
  95. #define PNT 3
  96. #define ALL -1
  97. #define ON 1
  98. #define OFF 0
  99. #define AT_SWITCH 1
  100. #define AT_FILE 2
  101. #define AT_STRESS 3
  102. #define AT_DELAY 4
  103. #define AT_TIME 5
  104. #define AT_WND 6
  105. #define AT_MSG 7
  106. #define AT_FORMAT 8
  107. #define AT_THRD 9
  108. #define FLAG_BACKGROUND 0x00000001
  109. #define FLAG_AUTO 0x00000002
  110. #define FLAG_TIME 0x00000004
  111. #define FLAG_STOP 0x00000008
  112. #define FLAG_LOG 0x00000010
  113. #define FLAG_USRWNDCOUNT 0x00000020
  114. #define FLAG_USRMSGCOUNT 0x00000040
  115. #define FLAG_USRDELAY 0x00000080
  116. #define FLAG_DEBUG 0x00000100
  117. #define FLAG_CHARINFO 0x00000200
  118. #define FLAG_DELAYON 0x00000400
  119. #define FLAG_TEST_MSG_ON 0x00000800
  120. #define FLAG_MSGDELAYON 0x00001000
  121. #define FLAG_APPOWNED 0x00002000
  122. #define FLAG_MULTTHREAD 0x00004000
  123. #define FLAG_THRD2 0x00008000
  124. #define FLAG_THRD3 0x00010000
  125. #define FLAG_THRD4 0x00020000
  126. #define FLAG_THRD5 0x00040000
  127. #define FLAG_NET 0x00080000
  128. #define FLAG_SYNCPAINT 0x00100000
  129. #define FLAG_USRTHRDCOUNT 0x00200000
  130. #define FLAG_PAUSE_BUTTON 0X00400000
  131. #define FLAG_PAUSE 0X00800000
  132. #define THREADLIMIT 5
  133. #define STD_EXIT 1
  134. #define ABNORMAL_EXIT 0
  135. #define FLAGON(a,b) (LONG)(a|b)
  136. #define FLAGOFF(a,b) (LONG)(a&(~b))
  137. //#define MAX_SERVER_HCONVS 1000
  138. #define MAX_SERVER_HCONVS 500
  139. #define IDR_ICON 1
  140. #define IDR_MENU 2
  141. #define IDM_DIE 100
  142. #define DIGITS_IN_TENMILL 8
  143. #define BLANK_SPACE 3
  144. #define LONGEST_LINE 15
  145. #define NUM_COLUMNS (LONGEST_LINE+BLANK_SPACE+DIGITS_IN_TENMILL)
  146. #define NUM_ROWS 16
  147. #define MAX_TITLE_LENGTH 100
  148. #define TXT 0
  149. #define DIB 1
  150. #define BITMAP 2
  151. #define ENHMETA 3
  152. #define METAPICT 4
  153. #define PALETTE 5
  154. #define EXIT_THREAD WM_USER+6
  155. #define START_DISCONNECT WM_USER+7
  156. #include "globals.h"
  157. /*
  158. * Prototypes
  159. */
  160. /*
  161. * ddestrs.c
  162. */
  163. LONG FAR PASCAL MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LONG lParam);
  164. VOID InitArgsError(HWND,unsigned);
  165. VOID SysTime(LPSYSTEMTIME);
  166. BOOL ParseCommandLine(HWND,LPSTR);
  167. int SetupArgv( char **, char *, LPSTR);
  168. BOOL PASCAL get_cmd_arg(HWND,LPSTR);
  169. BOOL IsTimeExpired(HWND);
  170. INT DIV(INT,INT);
  171. BOOL TStrCmp(LPSTR,LPSTR);
  172. LPSTR TStrCpy(LPSTR,LPSTR);
  173. LPSTR TStrCat(LPSTR,LPSTR);
  174. INT TStrLen(LPSTR);
  175. LPSTR FAR PASCAL itola(int,LPSTR);
  176. int APIENTRY latoi(LPSTR);
  177. BOOL DOut(HWND,LPSTR,LPSTR,INT);
  178. BOOL EOut(LPSTR);
  179. #ifdef WIN32
  180. BOOL ThreadShutdown(VOID);
  181. BOOL ThreadDisconnect(VOID);
  182. #endif
  183. #define DDEMLERROR(a) EOut(a)
  184. #define LOGDDEMLERROR(a) EOut(a)
  185. /*
  186. * client.c
  187. */
  188. void CALLBACK TimerFunc(HWND,UINT,UINT,DWORD);
  189. VOID PaintClient(HWND hwnd, PAINTSTRUCT *pps);
  190. VOID ReconnectList(VOID);
  191. BOOL InitClient(VOID);
  192. VOID CloseClient(VOID);
  193. /*
  194. * server.c
  195. */
  196. HDDEDATA RenderHelp_Text(HDDEDATA hData);
  197. BOOL PokeTestItem_Text(HDDEDATA hData);
  198. HDDEDATA RenderTestItem_Text(HDDEDATA hData);
  199. BOOL PokeTestItem_DIB(HDDEDATA hData);
  200. HDDEDATA RenderTestItem_DIB(HDDEDATA hData);
  201. BOOL PokeTestItem_BITMAP(HDDEDATA hData);
  202. HDDEDATA RenderTestItem_BITMAP(HDDEDATA hData);
  203. BOOL PokeTestItem_METAPICT(HDDEDATA hData);
  204. HDDEDATA RenderTestItem_METAPICT(HDDEDATA hData);
  205. BOOL PokeTestItem_ENHMETA(HDDEDATA hData);
  206. HDDEDATA RenderTestItem_ENHMETA(HDDEDATA hData);
  207. BOOL PokeTestItem_PALETTE(HDDEDATA hData);
  208. HDDEDATA RenderTestItem_PALETTE(HDDEDATA hData);
  209. HINSTANCE GetHINSTANCE(HWND);
  210. BOOL Execute(HDDEDATA hData);
  211. VOID PaintServer(HWND hwnd, PAINTSTRUCT *pps);
  212. HDDEDATA FAR PASCAL CustomCallback(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1,
  213. HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2);
  214. #ifdef WIN32
  215. VOID ThreadWait(HWND);
  216. DWORD SecondaryThreadMain(DWORD);
  217. BOOL ThreadInit(HWND);
  218. #endif
  219. LONG SetFlag(HWND,LONG,INT);
  220. LONG SetCount(HWND,INT,LONG,INT);
  221. LPSTR GetMem(INT, LPHANDLE);
  222. BOOL FreeMem(HANDLE);
  223. BOOL FreeMemHandle(HANDLE);
  224. HANDLE GetMemHandle(INT);
  225. LONG SetThreadLong(DWORD,INT,LONG);
  226. LONG GetThreadLong(DWORD,INT);
  227. BOOL FreeThreadExtraMem(void);
  228. BOOL CreateThreadExtraMem(INT,INT);
  229. BOOL InitThreadInfo(DWORD);
  230. BOOL FreeThreadInfo(DWORD);
  231. INT IDtoTHREADNUM(DWORD);
  232. HWND CreateDisplayWindow(HWND,INT);
  233. LONG GetCurrentCount(HWND,INT);
  234.