computedefs.h (4819B) - Raw
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 7 #ifndef _HYPERV_COMPUTEDEFS_H_ 8 #define _HYPERV_COMPUTEDEFS_H_ 9 10 DECLARE_HANDLE(HCS_SYSTEM); 11 DECLARE_HANDLE(HCS_PROCESS); 12 DECLARE_HANDLE(HCS_OPERATION); 13 DECLARE_HANDLE(HCS_CALLBACK); 14 15 typedef enum HCS_OPERATION_TYPE { 16 HcsOperationTypeNone = -1, 17 HcsOperationTypeEnumerate = 0, 18 HcsOperationTypeCreate = 1, 19 HcsOperationTypeStart = 2, 20 HcsOperationTypeShutdown = 3, 21 HcsOperationTypePause = 4, 22 HcsOperationTypeResume = 5, 23 HcsOperationTypeSave = 6, 24 HcsOperationTypeTerminate = 7, 25 HcsOperationTypeModify = 8, 26 HcsOperationTypeGetProperties = 9, 27 HcsOperationTypeCreateProcess = 10, 28 HcsOperationTypeSignalProcess = 11, 29 HcsOperationTypeGetProcessInfo = 12, 30 HcsOperationTypeGetProcessProperties = 13, 31 HcsOperationTypeModifyProcess = 14, 32 HcsOperationTypeCrash = 15, 33 HcsOperationTypeLiveMigration = 19, 34 HcsOperationTypeReserved1 = 16, 35 HcsOperationTypeReserved2 = 17, 36 HcsOperationTypeReserved3 = 18 37 } HCS_OPERATION_TYPE; 38 39 #define HCS_INVALID_OPERATION_ID (UINT64)(-1) 40 41 typedef void (CALLBACK *HCS_OPERATION_COMPLETION)(HCS_OPERATION operation, void *context); 42 43 typedef enum HCS_EVENT_TYPE { 44 HcsEventInvalid = 0x00000000, 45 HcsEventSystemExited = 0x00000001, 46 HcsEventSystemCrashInitiated = 0x00000002, 47 HcsEventSystemCrashReport = 0x00000003, 48 HcsEventSystemRdpEnhancedModeStateChanged = 0x00000004, 49 HcsEventSystemSiloJobCreated = 0x00000005, 50 HcsEventSystemGuestConnectionClosed = 0x00000006, 51 HcsEventProcessExited = 0x00010000, 52 HcsEventOperationCallback = 0x01000000, 53 HcsEventServiceDisconnect = 0x02000000, 54 HcsEventGroupVmLifecycle = 0x80000002, 55 HcsEventGroupLiveMigration = 0x80000003, 56 HcsEventGroupOperationInfo = 0xC0000001 57 } HCS_EVENT_TYPE; 58 59 typedef struct HCS_EVENT { 60 HCS_EVENT_TYPE Type; 61 PCWSTR EventData; 62 HCS_OPERATION Operation; 63 } HCS_EVENT; 64 65 typedef enum HCS_EVENT_OPTIONS { 66 HcsEventOptionNone = 0x00000000, 67 HcsEventOptionEnableOperationCallbacks = 0x00000001, 68 HcsEventOptionEnableVmLifecycle = 0x00000002, 69 HcsEventOptionEnableLiveMigrationEvents = 0x00000004 70 } HCS_EVENT_OPTIONS; 71 72 DEFINE_ENUM_FLAG_OPERATORS(HCS_EVENT_OPTIONS); 73 74 typedef enum HCS_OPERATION_OPTIONS { 75 HcsOperationOptionNone = 0x00000000, 76 HcsOperationOptionProgressUpdate = 0x00000001, 77 HcsOperationOptionReserved1 = 0x00000002 78 } HCS_OPERATION_OPTIONS; 79 80 DEFINE_ENUM_FLAG_OPERATORS(HCS_OPERATION_OPTIONS); 81 82 typedef void (CALLBACK *HCS_EVENT_CALLBACK)(HCS_EVENT *event, void *context); 83 84 typedef enum HCS_RESOURCE_TYPE { 85 HcsResourceTypeNone = 0, 86 HcsResourceTypeFile = 1, 87 HcsResourceTypeJob = 2, 88 HcsResourceTypeComObject = 3, 89 HcsResourceTypeSocket = 4 90 } HCS_RESOURCE_TYPE; 91 92 typedef enum HCS_NOTIFICATION_FLAGS { 93 HcsNotificationFlagSuccess = 0x00000000, 94 HcsNotificationFlagFailure = 0x80000000 95 } HCS_NOTIFICATION_FLAGS; 96 97 typedef enum HCS_NOTIFICATIONS { 98 HcsNotificationInvalid = 0x00000000, 99 HcsNotificationSystemExited = 0x00000001, 100 HcsNotificationSystemCreateCompleted = 0x00000002, 101 HcsNotificationSystemStartCompleted = 0x00000003, 102 HcsNotificationSystemPauseCompleted = 0x00000004, 103 HcsNotificationSystemResumeCompleted = 0x00000005, 104 HcsNotificationSystemCrashReport = 0x00000006, 105 HcsNotificationSystemSiloJobCreated = 0x00000007, 106 HcsNotificationSystemSaveCompleted = 0x00000008, 107 HcsNotificationSystemRdpEnhancedModeStateChanged = 0x00000009, 108 HcsNotificationSystemShutdownFailed = 0x0000000A, 109 HcsNotificationSystemShutdownCompleted = 0x0000000A, 110 HcsNotificationSystemGetPropertiesCompleted = 0x0000000B, 111 HcsNotificationSystemModifyCompleted = 0x0000000C, 112 HcsNotificationSystemCrashInitiated = 0x0000000D, 113 HcsNotificationSystemGuestConnectionClosed = 0x0000000E, 114 HcsNotificationSystemOperationCompletion = 0x0000000F, 115 HcsNotificationSystemPassThru = 0x00000010, 116 HcsNotificationOperationProgressUpdate = 0x00000100, 117 HcsNotificationProcessExited = 0x00010000, 118 HcsNotificationServiceDisconnect = 0x01000000, 119 HcsNotificationFlagsReserved = 0xF0000000 120 } HCS_NOTIFICATIONS; 121 122 typedef void (CALLBACK *HCS_NOTIFICATION_CALLBACK)(DWORD notificationType, void *context, HRESULT notificationStatus, PCWSTR notificationData); 123 124 typedef struct { 125 DWORD ProcessId; 126 DWORD Reserved; 127 HANDLE StdInput; 128 HANDLE StdOutput; 129 HANDLE StdError; 130 } HCS_PROCESS_INFORMATION; 131 132 typedef enum HCS_CREATE_OPTIONS { 133 HcsCreateOptions_1 = 0x00010000 134 }HCS_CREATE_OPTIONS; 135 136 typedef struct { 137 HCS_CREATE_OPTIONS Version; 138 HANDLE UserToken; 139 SECURITY_DESCRIPTOR* SecurityDescriptor; 140 HCS_EVENT_OPTIONS CallbackOptions; 141 void* CallbackContext; 142 HCS_EVENT_CALLBACK Callback; 143 } HCS_CREATE_OPTIONS_1; 144 145 #endif /* _HYPERV_COMPUTEDEFS_H_ */