abi-probe.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <Windows.h>
  2. #include <cstdio>
  3. #include <cstddef>
  4. #define P(expr) printf("%-52s = %llu\n", #expr, (unsigned long long)(expr))
  5. int wmain()
  6. {
  7. P(sizeof(void*));
  8. P(sizeof(HANDLE));
  9. P(sizeof(STARTUPINFOW));
  10. P(offsetof(STARTUPINFOW, dwFlags));
  11. P(offsetof(STARTUPINFOW, hStdInput));
  12. P(offsetof(STARTUPINFOW, hStdOutput));
  13. P(offsetof(STARTUPINFOW, hStdError));
  14. P(sizeof(PROCESS_INFORMATION));
  15. P(offsetof(PROCESS_INFORMATION, hProcess));
  16. P(offsetof(PROCESS_INFORMATION, hThread));
  17. P(offsetof(PROCESS_INFORMATION, dwProcessId));
  18. P(CREATE_SUSPENDED);
  19. P(STARTF_USESTDHANDLES);
  20. P(HANDLE_FLAG_INHERIT);
  21. P(INFINITE);
  22. P(STD_INPUT_HANDLE);
  23. P(STD_OUTPUT_HANDLE);
  24. P(STD_ERROR_HANDLE);
  25. P(FORMAT_MESSAGE_FROM_SYSTEM);
  26. P(FORMAT_MESSAGE_IGNORE_INSERTS);
  27. P(ERROR_INSUFFICIENT_BUFFER);
  28. P(ERROR_BROKEN_PIPE);
  29. P(ERROR_NO_DATA);
  30. P(sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION));
  31. P(offsetof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION, BasicLimitInformation) + offsetof(JOBOBJECT_BASIC_LIMIT_INFORMATION, LimitFlags));
  32. P((int)JobObjectExtendedLimitInformation);
  33. P(JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE);
  34. static_assert(sizeof(STARTUPINFOW) == 104, "STARTUPINFOW size");
  35. static_assert(sizeof(PROCESS_INFORMATION) == 24, "PROCESS_INFORMATION size");
  36. static_assert(CREATE_SUSPENDED == 0x4, "suspended process flag");
  37. static_assert(STARTF_USESTDHANDLES == 0x100, "std handles flag");
  38. static_assert(HANDLE_FLAG_INHERIT == 0x1, "inherit flag");
  39. static_assert(sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION) == 144, "job extended limit size");
  40. static_assert(offsetof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION, BasicLimitInformation) + offsetof(JOBOBJECT_BASIC_LIMIT_INFORMATION, LimitFlags) == 16, "job LimitFlags offset");
  41. static_assert(JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE == 0x2000, "kill on job close flag");
  42. static_assert(JobObjectExtendedLimitInformation == 9, "extended limit class");
  43. printf("\nstatic_asserts passed\n");
  44. return 0;
  45. }