| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _HYPERV_COMPUTEDEFS_H_ | |
| #define _HYPERV_COMPUTEDEFS_H_ | |
| DECLARE_HANDLE(HCS_SYSTEM); | |
| DECLARE_HANDLE(HCS_PROCESS); | |
| DECLARE_HANDLE(HCS_OPERATION); | |
| DECLARE_HANDLE(HCS_CALLBACK); | |
| typedef enum HCS_OPERATION_TYPE { | |
| HcsOperationTypeNone = -1, | |
| HcsOperationTypeEnumerate = 0, | |
| HcsOperationTypeCreate = 1, | |
| HcsOperationTypeStart = 2, | |
| HcsOperationTypeShutdown = 3, | |
| HcsOperationTypePause = 4, | |
| HcsOperationTypeResume = 5, | |
| HcsOperationTypeSave = 6, | |
| HcsOperationTypeTerminate = 7, | |
| HcsOperationTypeModify = 8, | |
| HcsOperationTypeGetProperties = 9, | |
| HcsOperationTypeCreateProcess = 10, | |
| HcsOperationTypeSignalProcess = 11, | |
| HcsOperationTypeGetProcessInfo = 12, | |
| HcsOperationTypeGetProcessProperties = 13, | |
| HcsOperationTypeModifyProcess = 14, | |
| HcsOperationTypeCrash = 15, | |
| HcsOperationTypeLiveMigration = 19, | |
| HcsOperationTypeReserved1 = 16, | |
| HcsOperationTypeReserved2 = 17, | |
| HcsOperationTypeReserved3 = 18 | |
| } HCS_OPERATION_TYPE; | |
| #define HCS_INVALID_OPERATION_ID (UINT64)(-1) | |
| typedef void (CALLBACK *HCS_OPERATION_COMPLETION)(HCS_OPERATION operation, void *context); | |
| typedef enum HCS_EVENT_TYPE { | |
| HcsEventInvalid = 0x00000000, | |
| HcsEventSystemExited = 0x00000001, | |
| HcsEventSystemCrashInitiated = 0x00000002, | |
| HcsEventSystemCrashReport = 0x00000003, | |
| HcsEventSystemRdpEnhancedModeStateChanged = 0x00000004, | |
| HcsEventSystemSiloJobCreated = 0x00000005, | |
| HcsEventSystemGuestConnectionClosed = 0x00000006, | |
| HcsEventProcessExited = 0x00010000, | |
| HcsEventOperationCallback = 0x01000000, | |
| HcsEventServiceDisconnect = 0x02000000, | |
| HcsEventGroupVmLifecycle = 0x80000002, | |
| HcsEventGroupLiveMigration = 0x80000003, | |
| HcsEventGroupOperationInfo = 0xC0000001 | |
| } HCS_EVENT_TYPE; | |
| typedef struct HCS_EVENT { | |
| HCS_EVENT_TYPE Type; | |
| PCWSTR EventData; | |
| HCS_OPERATION Operation; | |
| } HCS_EVENT; | |
| typedef enum HCS_EVENT_OPTIONS { | |
| HcsEventOptionNone = 0x00000000, | |
| HcsEventOptionEnableOperationCallbacks = 0x00000001, | |
| HcsEventOptionEnableVmLifecycle = 0x00000002, | |
| HcsEventOptionEnableLiveMigrationEvents = 0x00000004 | |
| } HCS_EVENT_OPTIONS; | |
| DEFINE_ENUM_FLAG_OPERATORS(HCS_EVENT_OPTIONS); | |
| typedef enum HCS_OPERATION_OPTIONS { | |
| HcsOperationOptionNone = 0x00000000, | |
| HcsOperationOptionProgressUpdate = 0x00000001, | |
| HcsOperationOptionReserved1 = 0x00000002 | |
| } HCS_OPERATION_OPTIONS; | |
| DEFINE_ENUM_FLAG_OPERATORS(HCS_OPERATION_OPTIONS); | |
| typedef void (CALLBACK *HCS_EVENT_CALLBACK)(HCS_EVENT *event, void *context); | |
| typedef enum HCS_RESOURCE_TYPE { | |
| HcsResourceTypeNone = 0, | |
| HcsResourceTypeFile = 1, | |
| HcsResourceTypeJob = 2, | |
| HcsResourceTypeComObject = 3, | |
| HcsResourceTypeSocket = 4 | |
| } HCS_RESOURCE_TYPE; | |
| typedef enum HCS_NOTIFICATION_FLAGS { | |
| HcsNotificationFlagSuccess = 0x00000000, | |
| HcsNotificationFlagFailure = 0x80000000 | |
| } HCS_NOTIFICATION_FLAGS; | |
| typedef enum HCS_NOTIFICATIONS { | |
| HcsNotificationInvalid = 0x00000000, | |
| HcsNotificationSystemExited = 0x00000001, | |
| HcsNotificationSystemCreateCompleted = 0x00000002, | |
| HcsNotificationSystemStartCompleted = 0x00000003, | |
| HcsNotificationSystemPauseCompleted = 0x00000004, | |
| HcsNotificationSystemResumeCompleted = 0x00000005, | |
| HcsNotificationSystemCrashReport = 0x00000006, | |
| HcsNotificationSystemSiloJobCreated = 0x00000007, | |
| HcsNotificationSystemSaveCompleted = 0x00000008, | |
| HcsNotificationSystemRdpEnhancedModeStateChanged = 0x00000009, | |
| HcsNotificationSystemShutdownFailed = 0x0000000A, | |
| HcsNotificationSystemShutdownCompleted = 0x0000000A, | |
| HcsNotificationSystemGetPropertiesCompleted = 0x0000000B, | |
| HcsNotificationSystemModifyCompleted = 0x0000000C, | |
| HcsNotificationSystemCrashInitiated = 0x0000000D, | |
| HcsNotificationSystemGuestConnectionClosed = 0x0000000E, | |
| HcsNotificationSystemOperationCompletion = 0x0000000F, | |
| HcsNotificationSystemPassThru = 0x00000010, | |
| HcsNotificationOperationProgressUpdate = 0x00000100, | |
| HcsNotificationProcessExited = 0x00010000, | |
| HcsNotificationServiceDisconnect = 0x01000000, | |
| HcsNotificationFlagsReserved = 0xF0000000 | |
| } HCS_NOTIFICATIONS; | |
| typedef void (CALLBACK *HCS_NOTIFICATION_CALLBACK)(DWORD notificationType, void *context, HRESULT notificationStatus, PCWSTR notificationData); | |
| typedef struct { | |
| DWORD ProcessId; | |
| DWORD Reserved; | |
| HANDLE StdInput; | |
| HANDLE StdOutput; | |
| HANDLE StdError; | |
| } HCS_PROCESS_INFORMATION; | |
| typedef enum HCS_CREATE_OPTIONS { | |
| HcsCreateOptions_1 = 0x00010000 | |
| }HCS_CREATE_OPTIONS; | |
| typedef struct { | |
| HCS_CREATE_OPTIONS Version; | |
| HANDLE UserToken; | |
| SECURITY_DESCRIPTOR* SecurityDescriptor; | |
| HCS_EVENT_OPTIONS CallbackOptions; | |
| void* CallbackContext; | |
| HCS_EVENT_CALLBACK Callback; | |
| } HCS_CREATE_OPTIONS_1; | |
| #endif /* _HYPERV_COMPUTEDEFS_H_ */ |