computedefs.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _HYPERV_COMPUTEDEFS_H_
  7. #define _HYPERV_COMPUTEDEFS_H_
  8. DECLARE_HANDLE(HCS_SYSTEM);
  9. DECLARE_HANDLE(HCS_PROCESS);
  10. DECLARE_HANDLE(HCS_OPERATION);
  11. DECLARE_HANDLE(HCS_CALLBACK);
  12. typedef enum HCS_OPERATION_TYPE {
  13. HcsOperationTypeNone = -1,
  14. HcsOperationTypeEnumerate = 0,
  15. HcsOperationTypeCreate = 1,
  16. HcsOperationTypeStart = 2,
  17. HcsOperationTypeShutdown = 3,
  18. HcsOperationTypePause = 4,
  19. HcsOperationTypeResume = 5,
  20. HcsOperationTypeSave = 6,
  21. HcsOperationTypeTerminate = 7,
  22. HcsOperationTypeModify = 8,
  23. HcsOperationTypeGetProperties = 9,
  24. HcsOperationTypeCreateProcess = 10,
  25. HcsOperationTypeSignalProcess = 11,
  26. HcsOperationTypeGetProcessInfo = 12,
  27. HcsOperationTypeGetProcessProperties = 13,
  28. HcsOperationTypeModifyProcess = 14,
  29. HcsOperationTypeCrash = 15
  30. } HCS_OPERATION_TYPE;
  31. #define HCS_INVALID_OPERATION_ID (UINT64)(-1)
  32. typedef void (CALLBACK *HCS_OPERATION_COMPLETION)(HCS_OPERATION operation, void *context);
  33. typedef enum HCS_EVENT_TYPE {
  34. HcsEventInvalid = 0x00000000,
  35. HcsEventSystemExited = 0x00000001,
  36. HcsEventSystemCrashInitiated = 0x00000002,
  37. HcsEventSystemCrashReport = 0x00000003,
  38. HcsEventSystemRdpEnhancedModeStateChanged = 0x00000004,
  39. HcsEventSystemSiloJobCreated = 0x00000005,
  40. HcsEventSystemGuestConnectionClosed = 0x00000006,
  41. HcsEventProcessExited = 0x00010000,
  42. HcsEventOperationCallback = 0x01000000,
  43. HcsEventServiceDisconnect = 0x02000000,
  44. HcsEventGroupVmLifecycle = 0x80000002,
  45. HcsEventGroupOperationInfo = 0xC0000001
  46. } HCS_EVENT_TYPE;
  47. typedef struct HCS_EVENT {
  48. HCS_EVENT_TYPE Type;
  49. PCWSTR EventData;
  50. HCS_OPERATION Operation;
  51. } HCS_EVENT;
  52. typedef enum HCS_EVENT_OPTIONS {
  53. HcsEventOptionNone = 0x00000000,
  54. HcsEventOptionEnableOperationCallbacks = 0x00000001,
  55. HcsEventOptionEnableVmLifecycle = 0x00000002
  56. } HCS_EVENT_OPTIONS;
  57. DEFINE_ENUM_FLAG_OPERATORS(HCS_EVENT_OPTIONS);
  58. typedef enum HCS_OPERATION_OPTIONS {
  59. HcsOperationOptionNone = 0x00000000,
  60. HcsOperationOptionProgressUpdate = 0x00000001
  61. } HCS_OPERATION_OPTIONS;
  62. DEFINE_ENUM_FLAG_OPERATORS(HCS_OPERATION_OPTIONS);
  63. typedef void (CALLBACK *HCS_EVENT_CALLBACK)(HCS_EVENT *event, void *context);
  64. typedef enum HCS_RESOURCE_TYPE {
  65. HcsResourceTypeNone = 0,
  66. HcsResourceTypeFile = 1,
  67. HcsResourceTypeJob = 2
  68. } HCS_RESOURCE_TYPE;
  69. typedef enum HCS_NOTIFICATION_FLAGS {
  70. HcsNotificationFlagSuccess = 0x00000000,
  71. HcsNotificationFlagFailure = 0x80000000
  72. } HCS_NOTIFICATION_FLAGS;
  73. typedef enum HCS_NOTIFICATIONS {
  74. HcsNotificationInvalid = 0x00000000,
  75. HcsNotificationSystemExited = 0x00000001,
  76. HcsNotificationSystemCreateCompleted = 0x00000002,
  77. HcsNotificationSystemStartCompleted = 0x00000003,
  78. HcsNotificationSystemPauseCompleted = 0x00000004,
  79. HcsNotificationSystemResumeCompleted = 0x00000005,
  80. HcsNotificationSystemCrashReport = 0x00000006,
  81. HcsNotificationSystemSiloJobCreated = 0x00000007,
  82. HcsNotificationSystemSaveCompleted = 0x00000008,
  83. HcsNotificationSystemRdpEnhancedModeStateChanged = 0x00000009,
  84. HcsNotificationSystemShutdownFailed = 0x0000000A,
  85. HcsNotificationSystemShutdownCompleted = 0x0000000A,
  86. HcsNotificationSystemGetPropertiesCompleted = 0x0000000B,
  87. HcsNotificationSystemModifyCompleted = 0x0000000C,
  88. HcsNotificationSystemCrashInitiated = 0x0000000D,
  89. HcsNotificationSystemGuestConnectionClosed = 0x0000000E,
  90. HcsNotificationSystemOperationCompletion = 0x0000000F,
  91. HcsNotificationSystemPassThru = 0x00000010,
  92. HcsNotificationOperationProgressUpdate = 0x00000100,
  93. HcsNotificationProcessExited = 0x00010000,
  94. HcsNotificationServiceDisconnect = 0x01000000,
  95. HcsNotificationFlagsReserved = 0xF0000000
  96. } HCS_NOTIFICATIONS;
  97. typedef void (CALLBACK *HCS_NOTIFICATION_CALLBACK)(DWORD notificationType, void *context, HRESULT notificationStatus, PCWSTR notificationData);
  98. typedef struct {
  99. DWORD ProcessId;
  100. DWORD Reserved;
  101. HANDLE StdInput;
  102. HANDLE StdOutput;
  103. HANDLE StdError;
  104. } HCS_PROCESS_INFORMATION;
  105. typedef enum HCS_CREATE_OPTIONS {
  106. HcsCreateOptions_1 = 0x00010000
  107. }HCS_CREATE_OPTIONS;
  108. typedef struct {
  109. HCS_CREATE_OPTIONS Version;
  110. HANDLE UserToken;
  111. SECURITY_DESCRIPTOR* SecurityDescriptor;
  112. HCS_EVENT_OPTIONS CallbackOptions;
  113. void* CallbackContext;
  114. HCS_EVENT_CALLBACK Callback;
  115. } HCS_CREATE_OPTIONS_1;
  116. #endif /* _HYPERV_COMPUTEDEFS_H_ */