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.

105 lines
1.8 KiB

4 years ago
  1. #include <windows.h>
  2. #include <tchar.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <stdarg.h>
  7. #include <winsock.h>
  8. #include <wsipx.h>
  9. #include <mhlsrvm.h>
  10. #define MAXIMUM_NUMBER_OF_CLIENTS 64
  11. #define MAXIMUM_NUMBER_OF_WORKERS 32
  12. #define FILE_SIZE ((1024*1024*8)-CLIENT_OUTBOUND_BUFFER_MAX)
  13. #define SIXTY_FOUR_K (64*1024)
  14. #define SIXTEEN_K (16*1024)
  15. DWORD InitialBuffer[SIXTY_FOUR_K/sizeof(DWORD)];
  16. #define NUMBER_OF_WRITES ((FILE_SIZE+CLIENT_OUTBOUND_BUFFER_MAX)/SIXTY_FOUR_K)
  17. #define CLIENT_CONNECTED 0x00000001
  18. #define CLIENT_DONE 0x00000002
  19. typedef struct _PER_CLIENT_DATA {
  20. SOCKET Socket;
  21. OVERLAPPED Overlapped;
  22. CLIENT_IO_BUFFER IoBuffer;
  23. CHAR OutboundBuffer[CLIENT_OUTBOUND_BUFFER_MAX];
  24. DWORD Flags;
  25. HANDLE hEvent;
  26. } PER_CLIENT_DATA, *PPER_CLIENT_DATA;
  27. typedef struct _PER_THREAD_DATA {
  28. DWORD TotalTransactions;
  29. DWORD TotalBytesTransferred;
  30. } PER_THREAD_DATA, *PPER_THREAD_DATA;
  31. PER_THREAD_DATA ThreadData[MAXIMUM_NUMBER_OF_WORKERS];
  32. PER_CLIENT_DATA ClientData[MAXIMUM_NUMBER_OF_CLIENTS];
  33. BOOL fVerbose;
  34. BOOL fTcp;
  35. DWORD dwNumberOfClients;
  36. DWORD dwNumberOfWorkers;
  37. DWORD dwConcurrency;
  38. DWORD dwWorkIndex;
  39. SYSTEM_INFO SystemInfo;
  40. HANDLE CompletionPort;
  41. DWORD dwActiveClientCount;
  42. HANDLE hBenchmarkComplete;
  43. HANDLE hBenchmarkStart;
  44. DWORD StartTime;
  45. DWORD EndTime;
  46. HANDLE hFile;
  47. DWORD
  48. WINAPI
  49. Random (
  50. DWORD nMaxValue
  51. );
  52. VOID
  53. WINAPI
  54. ShowUsage(
  55. VOID
  56. );
  57. VOID
  58. WINAPI
  59. ParseSwitch(
  60. CHAR chSwitch,
  61. int *pArgc,
  62. char **pArgv[]
  63. );
  64. BOOL
  65. WINAPI
  66. CreateNetConnections(
  67. VOID
  68. );
  69. BOOL
  70. WINAPI
  71. CreateWorkers(
  72. VOID
  73. );
  74. DWORD
  75. WINAPI
  76. WorkerThread(
  77. LPVOID WorkContext
  78. );
  79. VOID
  80. WINAPI
  81. CompleteBenchmark(
  82. VOID
  83. );
  84. VOID
  85. WINAPI
  86. SortTheBuffer(
  87. LPDWORD Destination,
  88. LPDWORD Source,
  89. int DwordCount
  90. );