// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
#pragma namespace("\\\\.\\root")

instance of __Namespace
{
Name = "MS_CIM";
};

#pragma namespace("\\\\.\\root\\MS_CIM")

instance of __Win32Provider as $DataProv
{
	Name = "MS_VIEW_INSTANCE_PROVIDER";
	ClsId = "{AA70DDF4-E11C-11D1-ABB0-00C04FD9159E}";
	ImpersonationLevel = 1;
	PerUserInitialization = "True";
	
};

instance of __InstanceProviderRegistration
{
	Provider = $DataProv;
	SupportsPut = True;
	SupportsGet = True;
	SupportsDelete = True;
	SupportsEnumeration = True;
	QuerySupportLevels = {"WQL:UnarySelect"};
};

instance of __MethodProviderRegistration
{
	Provider = $DataProv;
};


[Abstract, Locale(1033): ToInstance, UUID("{8502C517-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_ManagedSystemElement
{
	[MaxLen(64): ToSubClass, read: ToSubClass] string Caption;
	[read: ToSubClass] string Description;
	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass] datetime InstallDate;
	[read: ToSubClass] string Name;
	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass] string Status;
};

[Abstract, Locale(1033): ToInstance, UUID("{8502C518-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_LogicalElement : CIM_ManagedSystemElement
{
};

[Abstract, Locale(1033): ToInstance, UUID("{8502C524-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_System : CIM_LogicalElement
{
	[key, read: ToSubClass, Override("Name"): ToSubClass] string Name = NULL;
	[key, read: ToSubClass] string CreationClassName;
	[read: ToSubClass] string NameFormat;
	[read: ToSubClass] string PrimaryOwnerContact;
	[read: ToSubClass] string PrimaryOwnerName;
	[read: ToSubClass] string Roles[];
};

[Abstract, Locale(1033): ToInstance, UUID("{8502C525-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_ComputerSystem : CIM_System
{
	[read: ToSubClass, Override("NameFormat"): ToSubClass, ValueMap{"IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "Other"}: ToSubClass] string NameFormat = NULL;
};

[Abstract, Locale(1033): ToInstance, UUID("{8502C526-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_UnitaryComputerSystem : CIM_ComputerSystem
{
	[read: ToSubClass] string InitialLoadInfo[];
	[read: ToSubClass] string LastLoadInfo;
	[read: ToSubClass] boolean PowerManagementSupported;
	[read: ToSubClass, MappingStrings{"MIF.DMTF|System Power Controls|001.2"}: ToSubClass] uint16 PowerManagementCapabilities[];
	[read: ToSubClass] uint16 PowerState;
	[read: ToSubClass, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, MappingStrings{"MIF.DMTF|System Hardware Security|001.4"}: ToSubClass] uint16 ResetCapability;
	 uint32 SetPowerState([IN] uint16 PowerState, [IN] datetime Time);
};

[
Union,
ViewSources {"Select * From Win32_ComputerSystem"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_ComputerSystem : CIM_UnitaryComputerSystem
{
	[MaxLen(64): ToSubClass, read: ToSubClass,
	PropertySources{"Caption"}
	]
	string Caption;

	[read: ToSubClass, Override("CreationClassName"): ToSubClass, 
	PropertySources{"CreationClassName"}
	]
	string CreationClassName ;

	[read: ToSubClass,
	PropertySources{"Description"}
	]
	string Description;

	[read: ToSubClass,
	PropertySources{"InitialLoadInfo"}
	]
	string InitialLoadInfo[];

	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass,
	PropertySources{"InstallDate"}
	]
	datetime InstallDate;

	[read: ToSubClass,
	PropertySources{"LastLoadInfo"}
	]
	string LastLoadInfo;
		
	[read: ToSubClass, Override("Name"): ToSubClass, 
	PropertySources{"Name"}
	]
	string Name;
	
	[read: ToSubClass,
	PropertySources{"NameFormat"}
	]
	string NameFormat;

	[read: ToSubClass, MappingStrings{"MIF.DMTF|System Power Controls|001.2"}: ToSubClass,
	PropertySources{"PowerManagementCapabilities"}
	]
	uint16 PowerManagementCapabilities[];

	[read: ToSubClass,
	PropertySources{"PowerManagementSupported"}
	]
	boolean PowerManagementSupported;
		
	[read: ToSubClass,
	PropertySources{"PowerState"}
	]
	uint16 PowerState;

	[read: ToSubClass,
	PropertySources{"PrimaryOwnerContact"}
	]
	string PrimaryOwnerContact;

	[read: ToSubClass,
	PropertySources{"PrimaryOwnerName"}
	]
	string PrimaryOwnerName;
	
	[read: ToSubClass, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, MappingStrings{"MIF.DMTF|System Hardware Security|001.4"}: ToSubClass,
	PropertySources{"ResetCapability"}
	]
	uint16 ResetCapability;

	[read: ToSubClass,
	PropertySources{"Roles"}]
	string Roles[];

	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass,
	PropertySources{"Status"}
	]
	string Status;

	//Win32 Stuff...
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 24|Hardware Security Settings|AdminPasswordStatus"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass,
	PropertySources{"AdminPasswordStatus"}
	]
	uint16 AdminPasswordStatus;

	[read: ToSubClass, MappingStrings{"Win32Registry|HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\CrashControl|AutoReboot"}: ToSubClass,
	PropertySources{"AutomaticResetBootOption"}
	]
	boolean AutomaticResetBootOption;

	[read: ToSubClass, MappingStrings{"WMI|ComputerSystem|GetCompSysInfo"}: ToSubClass,
	PropertySources{"AutomaticResetCapability"}
	]
	boolean AutomaticResetCapability;

	[read: ToSubClass, MappingStrings{"WMI|ComputerSystem|GetCompSysInfo"}: ToSubClass,
	PropertySources{"BootROMSupported"}
	]
	boolean BootROMSupported;

	[read: ToSubClass, MappingStrings{"Win32API|GetSystemMetrics|SM_CLEANBOOT"}: ToSubClass,
	PropertySources{"BootupState"}
	]
	string BootupState;

	[read: ToSubClass, Units("Minutes"): ToSubClass, MappingStrings{"Win32API|Time Structures|TIME_ZONE_INFORMATION|Bias"}: ToSubClass,
	PropertySources{"CurrentTimeZone"}
	]
	sint16 CurrentTimeZone;

	[read: ToSubClass, MappingStrings{"Win32API|Network Management Structures|WKSTA_INFO_100|wki100_langroup"}: ToSubClass,
	PropertySources{"Domain"}
	]
	string Domain;

	[read: ToSubClass, MappingStrings{"WMI|GetDeviceListFilterByClass"}: ToSubClass,
	PropertySources{"InfraredSupported"}
	]
	boolean InfraredSupported;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 1|System Information|Manufacturer"}: ToSubClass,
	PropertySources{"Manufacturer"}
	]
	string Manufacturer;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 1|System Information|Product Name"}: ToSubClass,
	PropertySources{"Model"}
	]
	string Model;

	[read: ToSubClass, MappingStrings{"Win32API|Network Management Structures|SERVER_INFO_101|sv101_type|SV_TYPE_SERVER"}: ToSubClass,
	PropertySources{"NetworkServerModeEnabled"}
	]
	boolean NetworkServerModeEnabled;

	[read: ToSubClass, MappingStrings{"WMI|IDS_OemLogoBmp|OemLogo.Bmp"}: ToSubClass,
	PropertySources{"OEMLogoBitmap"}
	]
	uint8 OEMLogoBitmap[];

	[read: ToSubClass, MappingStrings{"Win32API|GetPrivateProfileString|Support Information"}: ToSubClass,
	PropertySources{"SupportContactDescription"}
	]
	string SupportContactDescription[];

	[read: ToSubClass, write: ToSubClass, units("Seconds"): ToSubClass, MappingStrings{"Win32API|GetPrivateProfileInt|Boot Loader|timeout"}: ToSubClass,
	PropertySources{"SystemStartupDelay"}
	]
	uint16 SystemStartupDelay;

	[read: ToSubClass, MappingStrings{"Win32API|GetPrivateProfileSection|Operating Systems"}: ToSubClass,
	PropertySources{"SystemStartupOptions"}
	]
	string SystemStartupOptions[];

	[read: ToSubClass, write: ToSubClass, MappingStrings{"WMI|GetStartupOptions"}: ToSubClass,
	PropertySources{"SystemStartupSetting"}
	]
	uint8 SystemStartupSetting;

	[read: ToSubClass, MappingStrings{"Win32API|System Information Structures|SYSTEM_INFO|wProcessorArchitecture"}: ToSubClass, ValueMap{"X86-based PC", "MIPS-based PC", "Alpha-based PC", "Power PC", "SH-x PC", "StrongARM PC", "64-bit Intel PC", "64-bit Alpha PC", "Unknown", "X86-Nec98 PC"}: ToSubClass,
	PropertySources{"SystemType"}
	]
	string SystemType;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Functions|GetUserName"}: ToSubClass,
	PropertySources{"UserName"}
	]
	string UserName;

	[read: ToSubClass, MappingStrings{"Win32API|Directory Service (Ds) Structures| DSROLE_PRIMARY_DOMAIN_INFO_BASIC|DSROLE_MACHINE_ROLE| MachineRole"}: ToSubClass, ValueMap{"0", "1", "2", "3", "4", "5"}: ToSubClass,
	PropertySources{"DomainRole"}
	]
	uint16 DomainRole;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 1|System Information|Wake-up Type"}: ToSubClass, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"}: ToSubClass,
	PropertySources{"WakeUpType"}
	]
	uint16 WakeUpType;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 11|OEM Strings"}: ToSubClass,
	PropertySources{"OEMStringArray"}
	]
	string OEMStringArray[];

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 23|Capabilites|Boot Option on Limit"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass,
	PropertySources{"BootOptionOnLimit"}
	]
	uint16 BootOptionOnLimit;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 23|Capabilities|Boot Option"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass,
	PropertySources{"BootOptionOnWatchDog"}
	]
	uint16 BootOptionOnWatchDog;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 23|System Reset|Reset Count"}: ToSubClass,
	PropertySources{"ResetCount"}
	]
	sint16 ResetCount;

	[read: ToSubClass, MappingStrings{"SMBIOS|Type 23|System Reset| Reset Limit"}: ToSubClass,
	PropertySources{"ResetLimit"}
	]
	sint16 ResetLimit;
	
	[read: ToSubClass, Units("Milliseconds"): ToSubClass, MappingStrings{"SMBIOS|Type 23|Timeout"}: ToSubClass,
	PropertySources{"PauseAfterReset"}
	]
	sint64 PauseAfterReset;
	
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 24|Hardware Security Settings|PowerOnPasswordStatus"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass,
	PropertySources{"PowerOnPasswordStatus"}
	]
	uint16 PowerOnPasswordStatus;
	
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 24|Hardware Security Settings|KeyboardPasswordStatus"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass,
	PropertySources{"KeyboardPasswordStatus"}
	]
	uint16 KeyboardPasswordStatus;
	
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 24|Hardware Security Settings|FrontPanelResetStatus"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass,
	PropertySources{"FrontPanelResetStatus"}
	]
	uint16 FrontPanelResetStatus;
	
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 3|Bootup State"}: ToSubClass, ValueMap{"1", "2", "3", "4", "5", "6"}: ToSubClass,
	PropertySources{"ChassisBootupState"}
	]
	uint16 ChassisBootupState;
	
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 3|System Enclosure or Chassis|Power Supply State"}: ToSubClass, ValueMap{"1", "2", "3", "4", "5", "6"}: ToSubClass,
	PropertySources{"PowerSupplyState"}
	]
	uint16 PowerSupplyState;
	
	[read: ToSubClass, MappingStrings{"SMBIOS|Type 3|System Enclosure or Chassis|Thermal State"}: ToSubClass, ValueMap{"1", "2", "3", "4", "5", "6"}: ToSubClass,
	PropertySources{"ThermalState"}
	]
	uint16 ThermalState;
	
	[read: ToSubClass, MappingStrings{"Win32API|Time Functions|GetTimeZoneInformation"}: ToSubClass,
	PropertySources{"DaylightInEffect"}
	]
	boolean DaylightInEffect;
	
	[read: ToSubClass, MappingStrings("Win32API|System Information Structures|SYSTEM_INFO|dwNumberOfProcessors"): ToSubClass,
	PropertySources{"NumberOfProcessors"}
	]
	uint32 NumberOfProcessors;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass, MappingStrings{"Win32API|Memory Management Structures|MEMORYSTATUS|dwTotalPhys"}: ToSubClass,
	PropertySources{"TotalPhysicalMemory"}
	]
	uint64 TotalPhysicalMemory;
};

[Abstract, Locale(1033): ToInstance, UUID("{8502C565-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_OperatingSystem : CIM_LogicalElement
{
	[key, read: ToSubClass, Override("Name"): ToSubClass] string Name = NULL;
	[Propagated("CIM_ComputerSystem.CreationClassName"): ToSubClass, Key, read: ToSubClass] string CSCreationClassName;
	[Propagated("CIM_ComputerSystem.Name"): ToSubClass, key, read: ToSubClass] string CSName;
	[key, read: ToSubClass] string CreationClassName;
	[read: ToSubClass] boolean Distributed;
	[Units("KiloBytes"): ToSubClass, read: ToSubClass] uint64 FreePhysicalMemory;
	[Units("KiloBytes"): ToSubClass, read: ToSubClass] uint64 FreeVirtualMemory;
	[read: ToSubClass, Units("KiloBytes"): ToSubClass] uint64 MaxProcessMemorySize;
	[read: ToSubClass, ModelCorrespondence{"CIM_OperatingSystem.OtherTypeDescription"}: ToSubClass] uint16 OSType;
	[read: ToSubClass, MaxLen(64): ToSubClass, ModelCorrespondence{"CIM_OperatingSystem.OSType"}: ToSubClass] string OtherTypeDescription;
	[read: ToSubClass, MappingStrings{"MIF.DMTF|Operating System|001.3"}: ToSubClass] string Version;
	[read: ToSubClass, MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemDate", "MIF.DMTF|General Information|001.6"}: ToSubClass] datetime LocalDateTime;
	[read: ToSubClass, Units("Minutes"): ToSubClass] sint16 CurrentTimeZone;
	[read: ToSubClass, Units("KiloBytes"): ToSubClass, MappingStrings{"MIF.DMTF|System Memory Settings|001.3"}: ToSubClass] uint64 SizeStoredInPagingFiles;
	[read: ToSubClass, Units("KiloBytes"): ToSubClass, MappingStrings{"MIF.DMTF|System Memory Settings|001.4"}: ToSubClass] uint64 FreeSpaceInPagingFiles;
	[read: ToSubClass] datetime LastBootUpTime;
	[MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemMaxProcesses"}: ToSubClass, read: ToSubClass] uint32 MaxNumberOfProcesses;
	[read: ToSubClass] uint32 NumberOfLicensedUsers;
	[MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemProcesses"}: ToSubClass, read: ToSubClass] uint32 NumberOfProcesses;
	[MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemNumUsers"}: ToSubClass, read: ToSubClass] uint32 NumberOfUsers;
	[Units("KiloBytes"): ToSubClass, read: ToSubClass] uint64 TotalSwapSpaceSize;
	[Units("KiloBytes"): ToSubClass, read: ToSubClass] uint64 TotalVirtualMemorySize;
	[read: ToSubClass, Units("KiloBytes"): ToSubClass] uint64 TotalVisibleMemorySize;
	 uint32 Reboot();
	 uint32 Shutdown();
};

[
Union,
ViewSources {"Select * From Win32_OperatingSystem"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_OperatingSystem : CIM_OperatingSystem
{
//CIM_ManagedSystemElement...
	[MaxLen(64): ToSubClass, read: ToSubClass,
	PropertySources{"Caption"}
	]
	string Caption;

	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass,
	PropertySources{"InstallDate"}
	]
	datetime InstallDate;
	
	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass,
	PropertySources{"Status"}
	]
	string Status;

//CIM_OS...
	[read: ToSubClass, Override("Name"): ToSubClass, 
	PropertySources{"Name"}
	]
	string Name;
	
	[Propagated("CIM_ComputerSystem.CreationClassName"): ToSubClass, read: ToSubClass,
	PropertySources{"CSCreationClassName"}
	]
	string CSCreationClassName;
	
	[Propagated("CIM_ComputerSystem.Name"): ToSubClass, read: ToSubClass, 
	PropertySources{"CSName"}
	]
	string CSName;
	
	[
	PropertySources{"CreationClassName"}
	]
	string CreationClassName;
	
	[read: ToSubClass,
	PropertySources{"Distributed"}
	]
	boolean Distributed;
	
	[Units("KiloBytes"): ToSubClass, read: ToSubClass,
	PropertySources{"FreePhysicalMemory"}
	]
	uint64 FreePhysicalMemory;
	
	[Units("KiloBytes"): ToSubClass, read: ToSubClass,
	PropertySources{"FreeVirtualMemory"}
	]
	uint64 FreeVirtualMemory;
	
	[read: ToSubClass, Units("KiloBytes"): ToSubClass,
	PropertySources{"MaxProcessMemorySize"}
	]
	uint64 MaxProcessMemorySize;
	
	[read: ToSubClass, ModelCorrespondence{"CIM_OperatingSystem.OtherTypeDescription"}: ToSubClass,
	PropertySources{"OSType"}
	]
	uint16 OSType;
	
	[read: ToSubClass, MaxLen(64): ToSubClass, ModelCorrespondence{"CIM_OperatingSystem.OSType"}: ToSubClass,
	PropertySources{"OtherTypeDescription"}
	]
	string OtherTypeDescription;
	
	[read: ToSubClass, MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemDate", "MIF.DMTF|General Information|001.6"}: ToSubClass,
	PropertySources{"LocalDateTime"}
	]
	datetime LocalDateTime;
	
	[read: ToSubClass, Units("Minutes"): ToSubClass,
	PropertySources{"CurrentTimeZone"}
	]
	sint16 CurrentTimeZone;
	
	[read: ToSubClass, Units("KiloBytes"): ToSubClass, MappingStrings{"MIF.DMTF|System Memory Settings|001.3"}: ToSubClass,
	PropertySources{"SizeStoredInPagingFiles"}
	]
	uint64 SizeStoredInPagingFiles;
	
	[read: ToSubClass, Units("KiloBytes"): ToSubClass, MappingStrings{"MIF.DMTF|System Memory Settings|001.4"}: ToSubClass,
	PropertySources{"FreeSpaceInPagingFiles"}
	]
	uint64 FreeSpaceInPagingFiles;
	
	[read: ToSubClass,
	PropertySources{"LastBootUpTime"}
	]
	datetime LastBootUpTime;
	
	[MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemMaxProcesses"}: ToSubClass, read: ToSubClass,
	PropertySources{"MaxNumberOfProcesses"}
	]
	uint32 MaxNumberOfProcesses;
	
	[read: ToSubClass,
	PropertySources{"NumberOfLicensedUsers"}
	]
	uint32 NumberOfLicensedUsers;
	
	[MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemProcesses"}: ToSubClass, read: ToSubClass,
	PropertySources{"NumberOfProcesses"}
	]
	uint32 NumberOfProcesses;
	
	[MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrSystemNumUsers"}: ToSubClass, read: ToSubClass,
	PropertySources{"NumberOfUsers"}
	]
	uint32 NumberOfUsers;
	
	[Units("KiloBytes"): ToSubClass, read: ToSubClass,
	PropertySources{"TotalSwapSpaceSize"}
	]
	uint64 TotalSwapSpaceSize;
	
	[Units("KiloBytes"): ToSubClass, read: ToSubClass,
	PropertySources{"TotalVirtualMemorySize"}
	]
	uint64 TotalVirtualMemorySize;
	
	[read: ToSubClass, Units("KiloBytes"): ToSubClass,
	PropertySources{"TotalVisibleMemorySize"}
	]
	uint64 TotalVisibleMemorySize;

//Win32 Stuff
	[read: ToSubClass, write: ToSubClass, Override("Description"): ToSubClass, MappingStrings{"WMI"}: ToSubClass,
	PropertySources{"Description"}
	]
	string Description = NULL;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Structures|OSVERSIONINFOEX|dwMajorVersion, dwMinorVersion"}: ToSubClass, Override("Version"): ToSubClass,
	PropertySources{"Version"}
	]
	string Version = NULL;
	
	[read: ToSubClass, MappingStrings{"Win32API|DRIVE_MAP_INFO|btInt13Unit"}: ToSubClass,
	PropertySources{"BootDevice"}
	]
	string BootDevice;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Structures|OSVERSIONINFOEX|dwBuildNumber"}: ToSubClass,
	PropertySources{"BuildNumber"}
	]
	string BuildNumber;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|Software\\Microsoft\\Windows\\CurrentVersion|CurrentType"}: ToSubClass,
	PropertySources{"BuildType"}
	]
	string BuildType;
	
	[read: ToSubClass, MaxLen(6): ToSubClass, MappingStrings{"Win32API|National Language Support Functions|GetLocaleInfo|LOCALE_IDEFAULTANSICODEPAGE"}: ToSubClass,
	PropertySources{"CodeSet"}
	]
	string CodeSet;
	
	[read: ToSubClass, MappingStrings{"Win32API|National Language Support Functions|GetLocaleInfo|LOCALE_ICOUNTRY "}: ToSubClass,
	PropertySources{"CountryCode"}
	]
	string CountryCode;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Structures|OSVERSIONINFOEX|szCSDVersion"}: ToSubClass,
	PropertySources{"CSDVersion"}
	]
	string CSDVersion;
	
	[read: ToSubClass, MappingStrings{"Win32API|GetSystemMetrics|SM_DEBUG"}: ToSubClass,
	PropertySources{"Debug"}
	]
	boolean Debug;
	
	[read: ToSubClass, write: ToSubClass, MappingStrings{"Win32Registry|SYSTEM\\CurrentControlSet\\Control\\PriorityControl|Win32PrioritySeparation"}: ToSubClass,
	PropertySources{"ForegroundApplicationBoost"}
	]
	uint8 ForegroundApplicationBoost;

	[read: ToSubClass, MappingStrings{"Win32API|National Language Support Functions|GetLocaleInfo|LOCALE_ILANGUAGE"}: ToSubClass,
	PropertySources{"Locale"}
	]
	string Locale;
	
	[read: ToSubClass, MappingStrings{"WMI"}: ToSubClass,
	PropertySources{"Manufacturer"}
	]
	string Manufacturer;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|Software\\Microsoft\\Windows\\CurrentVersion|RegisteredOrganization"}: ToSubClass,
	PropertySources{"Organization"}
	]
	string Organization;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|DEFAULT\\Control Panel\\International|Locale"}: ToSubClass,
	PropertySources{"OSLanguage"}
	]
	uint32 OSLanguage;
	
	[read: ToSubClass, BitMap{"0x0001", "0x0002", "0x0004", "0x0008", "0x0010", "0x0020", "0x0040", "0x0080"}: ToSubClass, MappingStrings{"Win32Registry|SYSTEM\\CurrentControlSet\\Control\\ProductOptions|ProductSuite"}: ToSubClass,
	PropertySources{"OSProductSuite"}
	]
	uint32 OSProductSuite;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|Software\\Microsoft\\Windows NT\\CurrentVersion|Plus! ProductId"}: ToSubClass,
	PropertySources{"PlusProductID"}
	]
	string PlusProductID;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|Software\\Microsoft\\Windows NT\\CurrentVersion|Plus! VersionNumber"}: ToSubClass,
	PropertySources{"PlusVersionNumber"}
	]
	string PlusVersionNumber;

	[read: ToSubClass, MappingStrings{"WMI"}: ToSubClass,
	PropertySources{"Primary"}
	]
	boolean Primary;
	
	[read: ToSubClass, write: ToSubClass, MappingStrings{"Win32Registry|SYSTEM\\CurrentControlSet\\Control\\PriorityControl|Win32PrioritySeparation"}: ToSubClass,
	PropertySources{"QuantumLength"}
	]
	uint8 QuantumLength;
	
	[read: ToSubClass, write: ToSubClass, MappingStrings{"Win32Registry|SYSTEM\\CurrentControlSet\\Control\\PriorityControl|Win32PrioritySeparation"}: ToSubClass,
	PropertySources{"QuantumType"}
	]
	uint8 QuantumType;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|Software\\Microsoft\\Windows NT\\CurrentVersion|RegisteredOwner"}: ToSubClass,
	PropertySources{"RegisteredUser"}
	]
	string RegisteredUser;
	
	[read: ToSubClass, MappingStrings{"Win32Registry|Software\\Microsoft\\Windows NT\\CurrentVersion|ProductId"}: ToSubClass,
	PropertySources{"SerialNumber"}
	]
	string SerialNumber;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Structures|OSVERSIONINFOEX|wServicePackMajor"}: ToSubClass,
	PropertySources{"ServicePackMajorVersion"}
	]
	uint16 ServicePackMajorVersion;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Structures|OSVERSIONINFOEX|wServicePackMinor"}: ToSubClass,
	PropertySources{"ServicePackMinorVersion"}
	]
	uint16 ServicePackMinorVersion;
	
	[read: ToSubClass, MappingStrings{"Win32API|Registry Functions|GetPrivateProfileString|Paths|TargetDevice"}: ToSubClass,
	PropertySources{"SystemDevice"}
	]
	string SystemDevice;

	[read: ToSubClass, MappingStrings{"Win32API|System Information Functions|GetSystemDirectory"}: ToSubClass,
	PropertySources{"SystemDirectory"}
	]
	string SystemDirectory;
	
	[read: ToSubClass, MappingStrings{"Win32API|System Information Functions|GetWindowsDirectory"}: ToSubClass,
	PropertySources{"WindowsDirectory"}
	]
	string WindowsDirectory;

//Methods
    [implemented,
	MethodSource{"Reboot"}
	] 
    uint32 Reboot();

    [implemented, Privileges{"SeShutdownPrivilege"},
	MethodSource{"Shutdown"}
	]
    uint32 Shutdown();

	[implemented: ToSubClass, Privileges{"SeShutdownPrivilege"}: ToSubClass, MappingStrings{"Win32API|System Shutdown Functions|ExitWindowsEx"}: ToSubClass,
	MethodSource{"Win32Shutdown"}
	]
	uint32 Win32Shutdown([in, MappingStrings{"Win32API|System Shutdown Functions|ExitWindowsEx"}: ToSubClass, BitMap{"0x00000000", "0x00000001", "0x00000002", "0x00000004", "0x00000008"}: ToSubClass] sint32 Flags, [in, MappingStrings{"Win32API|System Shutdown Functions|ExitWindowsEx"}: ToSubClass] sint32 Reserved = 0);

};

[Abstract, Locale(1033): ToInstance, UUID("{8502C566-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_Process : CIM_LogicalElement
{
	[Propagated("CIM_OperatingSystem.CSCreationClassName"): ToSubClass, key, read: ToSubClass] string CSCreationClassName;
	[Propagated("CIM_OperatingSystem.CSName"): ToSubClass, key, read: ToSubClass] string CSName;
	[key, read: ToSubClass] string CreationClassName;
	[read: ToSubClass] datetime CreationDate;
	[key, read: ToSubClass] string Handle;
	[Units("Milliseconds"): ToSubClass, read: ToSubClass] uint64 KernelModeTime;
	[Propagated("CIM_OperatingSystem.CreationClassName"): ToSubClass, key, read: ToSubClass] string OSCreationClassName;
	[Propagated("CIM_OperatingSystem.Name"): ToSubClass, key, read: ToSubClass] string OSName;
	[read: ToSubClass] uint32 Priority;
	[read: ToSubClass] uint16 ExecutionState;
	[read: ToSubClass] datetime TerminationDate;
	[Units("Milliseconds"): ToSubClass, read: ToSubClass] uint64 UserModeTime;
	[read: ToSubClass, Units("Bytes"): ToSubClass] uint64 WorkingSetSize;
};


[
Union,
ViewSources {"Select * From Win32_Process"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_Process : CIM_Process
{
	[MaxLen(64): ToSubClass, read: ToSubClass,
	PropertySources{"Caption"}
	]
	string Caption;

	[read: ToSubClass,
	PropertySources{"Description"}
	]
	string Description;
	
	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass,
	PropertySources{"InstallDate"}
	]
	datetime InstallDate;
	
	[read: ToSubClass,
	PropertySources{"Name"}
	]
	string Name;
	
	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass,
	PropertySources{"Status"}
	]
	string Status;

//CIM_Process...
	[Propagated("CIM_OperatingSystem.CSCreationClassName"): ToSubClass, read: ToSubClass, 
	PropertySources{"CSCreationClassName"}
	]
	string CSCreationClassName;
	
	[Propagated("CIM_OperatingSystem.CSName"): ToSubClass, read: ToSubClass, 
	PropertySources{"CSName"}
	]
	string CSName;
	
	[read: ToSubClass, 
	PropertySources{"CreationClassName"}
	]
	string CreationClassName;
	
	[read: ToSubClass,
	PropertySources{"CreationDate"}
	]
	datetime CreationDate;
	
	[read: ToSubClass,
	PropertySources{"Handle"}
	]
	string Handle;
	
	[Units("Milliseconds"): ToSubClass, read: ToSubClass,
	PropertySources{"KernelModeTime"}
	]
	uint64 KernelModeTime;
	
	[Propagated("CIM_OperatingSystem.CreationClassName"): ToSubClass, read: ToSubClass, 
	PropertySources{"OSCreationClassName"}
	]
	string OSCreationClassName;
	
	[Propagated("CIM_OperatingSystem.Name"): ToSubClass, read: ToSubClass,
	PropertySources{"OSName"}
	]
	string OSName;
	
	[read: ToSubClass,
	PropertySources{"ExecutionState"}
	]
	uint16 ExecutionState;
	
	[read: ToSubClass,
	PropertySources{"TerminationDate"}
	]
	datetime TerminationDate;
	
	[Units("Milliseconds"): ToSubClass, read: ToSubClass,
	PropertySources{"UserModeTime"}
	]
	uint64 UserModeTime;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass,
	PropertySources{"WorkingSetSize"}
	]
	uint64 WorkingSetSize;

//Win32 Stuff
	[read: ToSubClass, Override("Priority"): ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|BasePriority"}: ToSubClass,
	PropertySources{"Priority"}
	]
	uint32 Priority = NULL;
	
	[read: ToSubClass, Privileges{"SeDebugPrivilege"}: ToSubClass, MappingStrings{"Win32API|Tool Help Structures|MODULEENTRY32|szExePath"}: ToSubClass,
	PropertySources{"ExecutablePath"}
	]
	string ExecutablePath;
	
	[read: ToSubClass, Units("Kilobytes"): ToSubClass, Privileges{"SeDebugPrivilege"}: ToSubClass, MappingStrings{"Win32|WINNT.H|QUOTA_LIMITS|MaximumWorkingSetSize"}: ToSubClass,
	PropertySources{"MaximumWorkingSetSize"}
	]
	uint32 MaximumWorkingSetSize;
	
	[read: ToSubClass, Units("Kilobytes"): ToSubClass, Privileges{"SeDebugPrivilege"}: ToSubClass, MappingStrings{"Win32|WINNT.H|QUOTA_LIMITS|MinimumWorkingSetSize"}: ToSubClass,
	PropertySources{"MinimumWorkingSetSize"}
	]
	uint32 MinimumWorkingSetSize;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|PageFaultCount"}: ToSubClass,
	PropertySources{"PageFaults"}
	]
	uint32 PageFaults;
	
	[read: ToSubClass, Units("Kilobytes"): ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|PagefileUsage"}: ToSubClass,
	PropertySources{"PageFileUsage"}
	]
	uint32 PageFileUsage;
	
	[read: ToSubClass, Units("Kilobytes"): ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|PeakPagefileUsage"}: ToSubClass,
	PropertySources{"PeakPageFileUsage"}
	]
	uint32 PeakPageFileUsage;
	
	[read: ToSubClass, Units("Kilobytes"): ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|PeakWorkingSetSize"}: ToSubClass,
	PropertySources{"PeakWorkingSetSize"}
	]
	uint32 PeakWorkingSetSize;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|PROCESS_INFORMATION|dwProcessId "}: ToSubClass,
	PropertySources{"ProcessId"}
	]
	uint32 ProcessId;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|QuotaNonPagedPoolUsage"}: ToSubClass,
	PropertySources{"QuotaNonPagedPoolUsage"}
	]
	uint32 QuotaNonPagedPoolUsage;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|QuotaPagedPoolUsage"}: ToSubClass,
	PropertySources{"QuotaPagedPoolUsage"}
	]
	uint32 QuotaPagedPoolUsage;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|QuotaPeakNonPagedPoolUsage"}: ToSubClass,
	PropertySources{"QuotaPeakNonPagedPoolUsage"}
	]
	uint32 QuotaPeakNonPagedPoolUsage;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|QuotaPeakPagedPoolUsage"}: ToSubClass,
	PropertySources{"QuotaPeakPagedPoolUsage"}
	]
	uint32 QuotaPeakPagedPoolUsage;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process and Thread Functions|GetProcessVersion"}: ToSubClass,
	PropertySources{"WindowsVersion"}
	]
	string WindowsVersion;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|NumberOfThreads"}: ToSubClass,
	PropertySources{"ThreadCount"}
	]
	uint32 ThreadCount;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|HandleCount"}: ToSubClass,
	PropertySources{"HandleCount"}
	]
	uint32 HandleCount;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|InheritedFromUniqueProcessId"}: ToSubClass,
	PropertySources{"ParentProcessId"}
	]
	uint32 ParentProcessId;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|SessionId"}: ToSubClass,
	PropertySources{"SessionId"}
	]
	uint32 SessionId;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|PrivatePageCount"}: ToSubClass,
	PropertySources{"PrivatePageCount"}
	]
	uint64 PrivatePageCount;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|PeakVirtualSize"}: ToSubClass,
	PropertySources{"PeakVirtualSize"}
	]
	uint64 PeakVirtualSize;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass, MappingStrings{"Win32API|Process Status|SYSTEM_PROCESS_INFORMATION|VirtualSize"}: ToSubClass,
	PropertySources{"VirtualSize"}
	]
	uint64 VirtualSize;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|SYSTEM_PROCESS_INFORMATION|ReadOperationCount"}: ToSubClass,
	PropertySources{"ReadOperationCount"}
	]
	uint64 ReadOperationCount;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|SYSTEM_PROCESS_INFORMATION|WriteOperationCount"}: ToSubClass,
	PropertySources{"WriteOperationCount"}
	]
	uint64 WriteOperationCount;
	
	[read: ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|SYSTEM_PROCESS_INFORMATION|OtherOperationCount"}: ToSubClass,
	PropertySources{"OtherOperationCount"}
	]
	uint64 OtherOperationCount;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|SYSTEM_PROCESS_INFORMATION|ReadTransferCount"}: ToSubClass,
	PropertySources{"ReadTransferCount"}
	]
	uint64 ReadTransferCount;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|SYSTEM_PROCESS_INFORMATION|WriteTransferCount"}: ToSubClass,
	PropertySources{"WriteTransferCount"}
	]
	uint64 WriteTransferCount;
	
	[read: ToSubClass, Units("Bytes"): ToSubClass, MappingStrings{"Win32API|Process and Thread Structures|SYSTEM_PROCESS_INFORMATION|OtherTransferCount"}: ToSubClass,
	PropertySources{"OtherTransferCount"}
	]
	uint64 OtherTransferCount;
	
};


[Abstract, Locale(1033): ToInstance, UUID("{8502C527-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_Service : CIM_LogicalElement
{
	[read: ToSubClass, Override("Name"): ToSubClass, key] string Name = NULL;
	[key, read: ToSubClass] string CreationClassName;
	[ValueMap{"Automatic", "Manual"}: ToSubClass, read: ToSubClass] string StartMode;
	[read: ToSubClass] boolean Started;
	[Propagated("CIM_System.CreationClassName"): ToSubClass, key, read: ToSubClass] string SystemCreationClassName;
	[Propagated("CIM_System.Name"): ToSubClass, key, read: ToSubClass] string SystemName;
	 uint32 StartService();
	 uint32 StopService();
};

[
Union,
ViewSources {"Select * From Win32_BaseService"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
Abstract, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_BaseService : CIM_Service
{
//CIM_ManagedSystemElement...
	[MaxLen(64): ToSubClass, read: ToSubClass,
	PropertySources{"Caption"}
	]
	string Caption;

	[read: ToSubClass,
	PropertySources{"Description"}
	]
	string Description;

	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass,
	PropertySources{"InstallDate"}
	]
	datetime InstallDate;
	
	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass,
	PropertySources{"Status"}
	]
	string Status;


//CIM_Service
	[read: ToSubClass, Override("Name"): ToSubClass,
	PropertySources{"Name"}
	]
	string Name;
	
	[read: ToSubClass,
	PropertySources{"CreationClassName"}
	]
	string CreationClassName;
	
	[read: ToSubClass,
	PropertySources{"Started"}
	]
	boolean Started;
	
	[Propagated("CIM_System.CreationClassName"): ToSubClass, read: ToSubClass,
	PropertySources{"SystemCreationClassName"}
	]
	string SystemCreationClassName;
	
	[Propagated("CIM_System.Name"): ToSubClass, read: ToSubClass,
	PropertySources{"SystemName"}
	]
	string SystemName;

//Win32 Stuff
	[ValueMap{"Boot", "System", "Auto", "Manual", "Disabled"}: ToSubClass, read: ToSubClass, Override("StartMode"): ToSubClass,
	PropertySources{"StartMode"}
	]
	string StartMode = NULL;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_PAUSE_CONTINUE"}: ToSubClass,
	PropertySources{"AcceptPause"}
	]
	boolean AcceptPause;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_STOP"}: ToSubClass,
	PropertySources{"AcceptStop"}
	]
	boolean AcceptStop;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType|SERVICE_INTERACTIVE_PROCESS"}: ToSubClass,
	PropertySources{"DesktopInteract"}
	]
	boolean DesktopInteract;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDisplayName"}: ToSubClass,
	PropertySources{"DisplayName"}
	]
	string DisplayName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwErrorControl"}: ToSubClass, ValueMap{"Ignore", "Normal", "Severe", "Critical", "Unknown"}: ToSubClass,
	PropertySources{"ErrorControl"}
	]
	string ErrorControl;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpBinaryPathName"}: ToSubClass,
	PropertySources{"PathName"}
	]
	string PathName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType"}: ToSubClass, ValueMap{"Kernel Driver", "File System Driver", "Adapter", "Recognizer Driver", "Own Process", "Win32 Share Process", "Interactive Process"}: ToSubClass,
	PropertySources{"ServiceType"}
	]
	string ServiceType;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpServiceStartName"}: ToSubClass,
	PropertySources{"StartName"}
	]
	string StartName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwCurrentState "}: ToSubClass, ValueMap{"Stopped", "Start Pending", "Stop Pending", "Running", "Continue Pending", "Pause Pending", "Paused", "Unknown"}: ToSubClass,
	PropertySources{"State"}
	]
	string State;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwTagId"}: ToSubClass,
	PropertySources{"TagId"}
	]
	uint32 TagId;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwWin32ExitCode"}: ToSubClass,
	PropertySources{"ExitCode"}
	]
	uint32 ExitCode;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwServiceSpecificExitCode"}: ToSubClass,
	PropertySources{"ServiceSpecificExitCode"}
	]
	uint32 ServiceSpecificExitCode;

//CIM Methods	
	[Override("StartService"): ToSubClass, Implemented, MappingStrings{"Win32API|Service Functions|StartService"}: ToSubClass,
	MethodSource{"StartService"}
	]
	uint32 StartService();
	
	[Override("StopService"): ToSubClass, Implemented, MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_STOP"}: ToSubClass,
	MethodSource{"StopService"}
	]
	uint32 StopService();

//Win32 Methods
	[Implemented: ToSubClass, MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_PAUSE"}: ToSubClass,
	MethodSource{"PauseService"}
	]
	uint32 PauseService();
	
	[Implemented: ToSubClass, MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_CONTINUE"}: ToSubClass,
	MethodSource{"ResumeService"}
	]
	uint32 ResumeService();
	
	[Implemented: ToSubClass, MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_INTERROGATE"}: ToSubClass,
	MethodSource{"InterrogateService"}
	]
	uint32 InterrogateService();
	
	[Implemented: ToSubClass, MappingStrings{"Win32API|Service Functions|CreateService|dwDesiredAccess|SERVICE_USER_DEFINED_CONTROL"}: ToSubClass,
	MethodSource{"UserControlService"}
	]
	uint32 UserControlService([In, MappingStrings{"Win32API|Service Functions|ControlService|dwControl"}: ToSubClass] uint8 ControlCode);
	
	[Constructor, Implemented, Static, MappingStrings{"Win32API|Service Functions|CreateService"}: ToSubClass,
	MethodSource{"Create"}
	]
	uint32 Create([In, MappingStrings{"Win32API|Service Functions|CreateServicelpServiceName"}: ToSubClass] string Name, [In, MappingStrings{"Win32API|Service Functions|CreateServicelpDisplayName"}: ToSubClass] string DisplayName, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpBinaryPathName "}: ToSubClass] string PathName, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType"}: ToSubClass, BitMap{"0x00000001", "0x00000002", "0x00000004", "0x00000008", "0x00000010", "0x00000020", "0x00000100"}: ToSubClass] uint32 ServiceType, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwErrorControl"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass] uint8 ErrorControl, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwStartType"}: ToSubClass, ValueMap{"Boot", "System", "Automatic", "Manual", "Disabled"}: ToSubClass] string StartMode, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType|SERVICE_INTERACTIVE_PROCESS"}: ToSubClass] boolean DesktopInteract, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpServiceStartName"}: ToSubClass] string StartName, [In, MappingStrings{"Win32API|Service Functions|CreateService|lpPassword"}: ToSubClass] string StartPassword, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpLoadOrderGroup"}: ToSubClass] string LoadOrderGroup, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDependencies"}: ToSubClass] string LoadOrderGroupDependencies[], [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDependencies"}: ToSubClass] string ServiceDependencies[]);
	
	[Implemented, MappingStrings{"Win32API|Service Functions|ChangeServiceConfig"}: ToSubClass,
	MethodSource{"Change"}
	]
	uint32 Change([In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDisplayName"}: ToSubClass] string DisplayName, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpBinaryPathName"}: ToSubClass] string PathName, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType"}: ToSubClass, BitMap{"0x00000001", "0x00000002", "0x00000004", "0x00000008", "0x00000010", "0x00000020", "0x00000100"}: ToSubClass] uint8 ServiceType, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwErrorControl"}: ToSubClass, ValueMap{"0", "1", "2", "3"}: ToSubClass] uint8 ErrorControl, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwStartType"}: ToSubClass, ValueMap{"Boot", "System", "Automatic", "Manual", "Disabled"}: ToSubClass] string StartMode, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType|SERVICE_INTERACTIVE_PROCESS"}: ToSubClass] boolean DesktopInteract, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpServiceStartName"}: ToSubClass] string StartName, [In, MappingStrings{"Win32API|Service Functions|CreateService|lpPassword"}: ToSubClass] string StartPassword, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpLoadOrderGroup"}: ToSubClass] string LoadOrderGroup, [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDependencies"}: ToSubClass] string LoadOrderGroupDependencies[], [In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDependencies"}: ToSubClass] string ServiceDependencies[]);
	
	[Implemented, MappingStrings{"Service Functions|ChangeServiceConfig|dwStartType"}: ToSubClass,
	MethodSource{"ChangeStartMode"}
	]
	uint32 ChangeStartMode([In, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwStartType"}: ToSubClass, ValueMap{"Boot", "System", "Automatic", "Manual", "Disabled"}: ToSubClass] string StartMode = "Automatic");
	
	[Destructor, Implemented, MappingStrings{"Win32API|Service Functions|ChangeServiceConfig|DeleteService"}: ToSubClass,
	MethodSource{"Delete"}
	]
	uint32 Delete();
};

[
Union,
ViewSources {"Select * From Win32_SystemDriver"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_SystemDriver : Win32_BaseService
{
//See Win32_BaseService
	[MaxLen(64): ToSubClass, read: ToSubClass,
	PropertySources{"Caption"}
	]
	string Caption;

	[read: ToSubClass,
	PropertySources{"Description"}
	]
	string Description;

	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass,
	PropertySources{"InstallDate"}
	]
	datetime InstallDate;
	
	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass,
	PropertySources{"Status"}
	]
	string Status;

	[read: ToSubClass, Override("Name"): ToSubClass,
	PropertySources{"Name"}
	]
	string Name;
	
	[read: ToSubClass,
	PropertySources{"CreationClassName"}
	]
	string CreationClassName;
	
	[read: ToSubClass,
	PropertySources{"Started"}
	]
	boolean Started;
	
	[Propagated("CIM_System.CreationClassName"): ToSubClass, read: ToSubClass,
	PropertySources{"SystemCreationClassName"}
	]
	string SystemCreationClassName;
	
	[Propagated("CIM_System.Name"): ToSubClass, read: ToSubClass,
	PropertySources{"SystemName"}
	]
	string SystemName;

	[ValueMap{"Boot", "System", "Auto", "Manual", "Disabled"}: ToSubClass, read: ToSubClass, Override("StartMode"): ToSubClass,
	PropertySources{"StartMode"}
	]
	string StartMode = NULL;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_PAUSE_CONTINUE"}: ToSubClass,
	PropertySources{"AcceptPause"}
	]
	boolean AcceptPause;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_STOP"}: ToSubClass,
	PropertySources{"AcceptStop"}
	]
	boolean AcceptStop;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType|SERVICE_INTERACTIVE_PROCESS"}: ToSubClass,
	PropertySources{"DesktopInteract"}
	]
	boolean DesktopInteract;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDisplayName"}: ToSubClass,
	PropertySources{"DisplayName"}
	]
	string DisplayName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwErrorControl"}: ToSubClass, ValueMap{"Ignore", "Normal", "Severe", "Critical", "Unknown"}: ToSubClass,
	PropertySources{"ErrorControl"}
	]
	string ErrorControl;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpBinaryPathName"}: ToSubClass,
	PropertySources{"PathName"}
	]
	string PathName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType"}: ToSubClass, ValueMap{"Kernel Driver", "File System Driver", "Adapter", "Recognizer Driver", "Own Process", "Win32 Share Process", "Interactive Process"}: ToSubClass,
	PropertySources{"ServiceType"}
	]
	string ServiceType;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpServiceStartName"}: ToSubClass,
	PropertySources{"StartName"}
	]
	string StartName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwCurrentState "}: ToSubClass, ValueMap{"Stopped", "Start Pending", "Stop Pending", "Running", "Continue Pending", "Pause Pending", "Paused", "Unknown"}: ToSubClass,
	PropertySources{"State"}
	]
	string State;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwTagId"}: ToSubClass,
	PropertySources{"TagId"}
	]
	uint32 TagId;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwWin32ExitCode"}: ToSubClass,
	PropertySources{"ExitCode"}
	]
	uint32 ExitCode;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwServiceSpecificExitCode"}: ToSubClass,
	PropertySources{"ServiceSpecificExitCode"}
	]
	uint32 ServiceSpecificExitCode;
};


[
Union,
ViewSources {"Select * From Win32_Service"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_Service : Win32_BaseService
{
//See Win32_BaseService
	[MaxLen(64): ToSubClass, read: ToSubClass,
	PropertySources{"Caption"}
	]
	string Caption;

	[read: ToSubClass,
	PropertySources{"Description"}
	]
	string Description;

	[MappingStrings{"MIF.DMTF|ComponentID|001.5"}: ToSubClass, read: ToSubClass,
	PropertySources{"InstallDate"}
	]
	datetime InstallDate;
	
	[MaxLen(10): ToSubClass, ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"}: ToSubClass,
	PropertySources{"Status"}
	]
	string Status;

	[read: ToSubClass, Override("Name"): ToSubClass,
	PropertySources{"Name"}
	]
	string Name;
	
	[read: ToSubClass,
	PropertySources{"CreationClassName"}
	]
	string CreationClassName;
	
	[read: ToSubClass,
	PropertySources{"Started"}
	]
	boolean Started;
	
	[Propagated("CIM_System.CreationClassName"): ToSubClass, read: ToSubClass,
	PropertySources{"SystemCreationClassName"}
	]
	string SystemCreationClassName;
	
	[Propagated("CIM_System.Name"): ToSubClass, read: ToSubClass,
	PropertySources{"SystemName"}
	]
	string SystemName;

	[ValueMap{"Boot", "System", "Auto", "Manual", "Disabled"}: ToSubClass, read: ToSubClass, Override("StartMode"): ToSubClass,
	PropertySources{"StartMode"}
	]
	string StartMode = NULL;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_PAUSE_CONTINUE"}: ToSubClass,
	PropertySources{"AcceptPause"}
	]
	boolean AcceptPause;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_STOP"}: ToSubClass,
	PropertySources{"AcceptStop"}
	]
	boolean AcceptStop;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType|SERVICE_INTERACTIVE_PROCESS"}: ToSubClass,
	PropertySources{"DesktopInteract"}
	]
	boolean DesktopInteract;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDisplayName"}: ToSubClass,
	PropertySources{"DisplayName"}
	]
	string DisplayName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwErrorControl"}: ToSubClass, ValueMap{"Ignore", "Normal", "Severe", "Critical", "Unknown"}: ToSubClass,
	PropertySources{"ErrorControl"}
	]
	string ErrorControl;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpBinaryPathName"}: ToSubClass,
	PropertySources{"PathName"}
	]
	string PathName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwServiceType"}: ToSubClass, ValueMap{"Kernel Driver", "File System Driver", "Adapter", "Recognizer Driver", "Own Process", "Win32 Share Process", "Interactive Process"}: ToSubClass,
	PropertySources{"ServiceType"}
	]
	string ServiceType;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpServiceStartName"}: ToSubClass,
	PropertySources{"StartName"}
	]
	string StartName;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwCurrentState "}: ToSubClass, ValueMap{"Stopped", "Start Pending", "Stop Pending", "Running", "Continue Pending", "Pause Pending", "Paused", "Unknown"}: ToSubClass,
	PropertySources{"State"}
	]
	string State;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwTagId"}: ToSubClass,
	PropertySources{"TagId"}
	]
	uint32 TagId;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwWin32ExitCode"}: ToSubClass,
	PropertySources{"ExitCode"}
	]
	uint32 ExitCode;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwServiceSpecificExitCode"}: ToSubClass,
	PropertySources{"ServiceSpecificExitCode"}
	]
	uint32 ServiceSpecificExitCode;

//Win32_Service Stuff
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwCheckPoint"}: ToSubClass,
	PropertySources{"CheckPoint"}
	]
	uint32 CheckPoint;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwWaitHint"}: ToSubClass,
	PropertySources{"WaitHint"}
	]
	uint32 WaitHint;
	
	[read: ToSubClass, MappingStrings{"Win32API|Service Structures|SERVICE_STATUS_PROCESS|dwProcessId"}: ToSubClass,
	PropertySources{"ProcessId"}
	]
	uint32 ProcessId;
};

[Association: DisableOverride ToInstance ToSubClass, Abstract, Locale(1033): ToInstance, UUID("{8502C53A-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_Dependency
{
	[read: ToSubClass] CIM_ManagedSystemElement ref Antecedent;
	[read: ToSubClass] CIM_ManagedSystemElement ref Dependent;
};

[Abstract, Locale(1033): ToInstance, UUID("{8502C53B-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_ServiceServiceDependency : CIM_Dependency
{
	[Override("Antecedent"): ToSubClass] CIM_Service ref Antecedent = NULL;
	[Override("Dependent"): ToSubClass] CIM_Service ref Dependent = NULL;
	uint16 TypeOfDependency;
};

[
ViewSources {"Select * From Win32_DependentService"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_DependentService : CIM_ServiceServiceDependency
{
	[Override("Antecedent"): ToSubClass, read: ToSubClass, key, MappingStrings{"WMI|Win32_BaseService"}: ToSubClass,
	PropertySources{"Antecedent"}
	]
	Win32_BaseService ref Antecedent = NULL;
	
	[Override("Dependent"): ToSubClass, read: ToSubClass, key, MappingStrings{"WMI|Win32_BaseService"}: ToSubClass,
	PropertySources{"Dependent"}
	]
	Win32_BaseService ref Dependent = NULL;
	
	[
	PropertySources{"TypeOfDependency"}
	]
	uint16 TypeOfDependency;
};

[Association: DisableOverride ToInstance ToSubClass, Abstract, Aggregation: ToSubClass, Locale(1033): ToInstance, UUID("{8502C573-5FBB-11D2-AAC1-006008C78BC7}"): ToInstance]
class CIM_Component
{
	[read: ToSubClass, Aggregate: ToSubClass] CIM_ManagedSystemElement ref GroupComponent;
	[read: ToSubClass] CIM_ManagedSystemElement ref PartComponent;
};

[Abstract, Locale(1033): ToInstance, UUID("{527BC6CE-BAFE-11d2-85E5-0000F8102E5F}"): ToInstance]
class CIM_SystemComponent : CIM_Component
{
	[read: ToSubClass, Override("GroupComponent"): ToSubClass] CIM_System ref GroupComponent = NULL;
	[read: ToSubClass, Override("PartComponent"): ToSubClass] CIM_ManagedSystemElement ref PartComponent = NULL;
};

[
ViewSources {"Select * From Win32_SystemServices"}, 
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Win32_SystemServices : CIM_SystemComponent
{
	[read: ToSubClass, Override("GroupComponent"): ToSubClass, key, MappingStrings{"WMI|Win32_ComputerSystem"}: ToSubClass,
	PropertySources{"GroupComponent"}
	]
	Win32_ComputerSystem ref GroupComponent = NULL;

	[read: ToSubClass, Override("PartComponent"): ToSubClass, key, MappingStrings{"WMI|Win32_ComputerSystem"}: ToSubClass,
	PropertySources{"PartComponent"}
	]
	Win32_Service ref PartComponent = NULL;
};
