#pragma autorecover
#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\DeviceGuard")

Instance of __Win32Provider as $prov
{
  Name = "Win32_DeviceGuard";
  ClsId = "{71F3A4A2-DC3F-4AD1-A1AD-81E2109D4414}";
  ImpersonationLevel = 1;
  HostingModel = "NetworkServiceHost";
  version = 1073741825;
};

Instance of __InstanceProviderRegistration
{
  Provider = $prov;
  supportsGet = TRUE;
  supportsPut = TRUE;
  supportsDelete = TRUE;
  supportsEnumeration = TRUE;
  QuerySupportLevels;
};

[dynamic : ToInstance,provider("Win32_DeviceGuard") : ToInstance,locale(1033)] 
class Win32_DeviceGuard
{
  [key] string InstanceIdentifier;
  string Version;
  [ValueMap{"1", "2", "3", "4", "5", "6", "7"} : ToSubclass,ArrayType("Indexed") : ToSubclass DisableOverride] uint32 RequiredSecurityProperties[];
  [ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"} : ToSubclass,ArrayType("Indexed") : ToSubclass DisableOverride] uint32 AvailableSecurityProperties[];
  [ValueMap{"0", "1", "2"} : ToSubclass] uint32 VirtualizationBasedSecurityStatus;
  [ValueMap{"1", "2", "3", "4"} : ToSubclass,ArrayType("Indexed") : ToSubclass DisableOverride] uint32 SecurityServicesConfigured[];
  [ValueMap{"1", "2", "3", "4"} : ToSubclass,ArrayType("Indexed") : ToSubclass DisableOverride] uint32 SecurityServicesRunning[];
  [ValueMap{"0", "1", "2"} : ToSubclass] uint32 CodeIntegrityPolicyEnforcementStatus;
  [ValueMap{"0", "1", "2"} : ToSubclass] uint32 UsermodeCodeIntegrityPolicyEnforcementStatus;
  boolean VirtualMachineIsolation;
  [ValueMap{"1", "2", "3"} : ToSubclass,ArrayType("Indexed") : ToSubclass DisableOverride] uint32 VirtualMachineIsolationProperties[];
};
