zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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_ */