| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include <Windows.h>
- #include <cstdio>
- #include <cstddef>
- #define P(expr) printf("%-52s = %llu\n", #expr, (unsigned long long)(expr))
- int wmain()
- {
- P(sizeof(void*));
- P(sizeof(HANDLE));
- P(sizeof(STARTUPINFOW));
- P(offsetof(STARTUPINFOW, dwFlags));
- P(offsetof(STARTUPINFOW, hStdInput));
- P(offsetof(STARTUPINFOW, hStdOutput));
- P(offsetof(STARTUPINFOW, hStdError));
- P(sizeof(STARTUPINFOEXW));
- P(offsetof(STARTUPINFOEXW, lpAttributeList));
- P(sizeof(PROCESS_INFORMATION));
- P(offsetof(PROCESS_INFORMATION, hProcess));
- P(offsetof(PROCESS_INFORMATION, hThread));
- P(offsetof(PROCESS_INFORMATION, dwProcessId));
- P(CREATE_SUSPENDED);
- P(EXTENDED_STARTUPINFO_PRESENT);
- P(PROC_THREAD_ATTRIBUTE_JOB_LIST);
- P(STARTF_USESTDHANDLES);
- P(HANDLE_FLAG_INHERIT);
- P(INFINITE);
- P(STD_INPUT_HANDLE);
- P(STD_OUTPUT_HANDLE);
- P(STD_ERROR_HANDLE);
- P(FORMAT_MESSAGE_FROM_SYSTEM);
- P(FORMAT_MESSAGE_IGNORE_INSERTS);
- P(ERROR_INSUFFICIENT_BUFFER);
- P(ERROR_BROKEN_PIPE);
- P(ERROR_NO_DATA);
- P(sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION));
- P(offsetof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION, BasicLimitInformation) + offsetof(JOBOBJECT_BASIC_LIMIT_INFORMATION, LimitFlags));
- P((int)JobObjectExtendedLimitInformation);
- P(JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE);
- static_assert(sizeof(STARTUPINFOW) == 104, "STARTUPINFOW size");
- static_assert(sizeof(STARTUPINFOEXW) == 112, "STARTUPINFOEXW size");
- static_assert(offsetof(STARTUPINFOEXW, lpAttributeList) == 104, "STARTUPINFOEXW attribute offset");
- static_assert(sizeof(PROCESS_INFORMATION) == 24, "PROCESS_INFORMATION size");
- static_assert(CREATE_SUSPENDED == 0x4, "create suspended");
- static_assert(EXTENDED_STARTUPINFO_PRESENT == 0x00080000, "extended startup flag");
- static_assert(PROC_THREAD_ATTRIBUTE_JOB_LIST == 0x0002000D, "Job-list attribute");
- static_assert(STARTF_USESTDHANDLES == 0x100, "std handles flag");
- static_assert(HANDLE_FLAG_INHERIT == 0x1, "inherit flag");
- static_assert(sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION) == 144, "job extended limit size");
- static_assert(offsetof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION, BasicLimitInformation) + offsetof(JOBOBJECT_BASIC_LIMIT_INFORMATION, LimitFlags) == 16, "job LimitFlags offset");
- static_assert(JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE == 0x2000, "kill on job close flag");
- static_assert(JobObjectExtendedLimitInformation == 9, "extended limit class");
- printf("\nstatic_asserts passed\n");
- return 0;
- }
|