// Copyright (c) 1997-2003 Microsoft Corporation, All Rights Reserved

#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root\\CIMV2")
instance of __namespace{ name="ms_804";};
#pragma namespace("\\\\.\\Root\\CIMV2\\ms_804")

[Description("The Win32_NamedJobObject class represents a kernel object that is used to group processes for the sake of controlling the life and resources of the processes within the job object. Only the job objects that have been named are instrumented.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObject : CIM_CollectionOfMSEs
{
  [Key : ToInstance ToSubclass DisableOverride,Description("This property indicates a number that identifies the job object. \nAs a Kernel object job object names are case sensitive.  Because WMI keys are case insensitive, the name of the named job object must be decorated as follows: a capital letter should be preceded by a backslash.  As a consequence of this convention, 'A' and 'a' are lower case and '\\A' and '\\a' are upper case.") : Amended ToSubclass] string CollectionID;
  [Description("The UIRestrictions property indicates the restrictions on the job regarding the UI.") : Amended ToSubclass,Bitvalues{"Desktop", "Display Settings", "Exit Windows", "Global Atoms", "Handles", "Read Clipboard", "System Parameters", "Write Clipboard"} : Amended ToSubclass] uint32 BasicUIRestrictions;
};

[Description("The Win32_NamedJobObjectProcess association class relates a job object and a process contained in the job object. A job can contain multiple processes.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectProcess : CIM_CollectedMSEs
{
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance of Win32_NamedJobObject in which the processes are contained.") : Amended ToSubclass] Win32_NamedJobObject Ref Collection;
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance of Win32_Process that is part of the job object.") : Amended ToSubclass] Win32_Process Ref Member;
};

[Description("This class represents the IO accounting information for a job object.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectActgInfo : CIM_StatisticalInformation
{
  [Description("The Name property defines the label by which the statistic or metric is known. When subclassed, the property can be overridden to be a Key property. \nAs a Kernel object job object names are case sensitive.  Because WMI keys are case insensitive, the name of the named job object must be decorated as follows: a capital letter should be preceded by a backslash.  As a consequence of this convention, 'A' and 'a' are lower case and '\\A' and '\\a' are upper case.") : Amended ToSubclass,Key : ToInstance ToSubclass DisableOverride] string Name;
  [Description("Specifies the total amount of user-mode execution time, in 100 nanoseconds, for all active processes associated with the job, as well as all terminated processes no longer associated with the job.") : Amended ToSubclass,Units("100 nanoseconds") : Amended ToSubclass] uint64 TotalUserTime;
  [Description("Specifies the total amount of kernel-mode execution time, in 100 nanoseconds, for all active processes associated with the job, as well as all terminated processes no longer associated with the job.") : Amended ToSubclass,Units("100 nanoseconds") : Amended ToSubclass] uint64 TotalKernelTime;
  [Description("Specifies the total amount of user-mode execution time, in 100 nanoseconds, for all active processes associated with the job (as well as all terminated processes no longer associated with the job) since the last call that set a per-job user-mode time limit.   This property is set to 0 on creation of the job, and each time a per-job user-mode time limit is established") : Amended ToSubclass,Units("100 nanoseconds") : Amended ToSubclass] uint64 ThisPeriodTotalUserTime;
  [Description("Specifies the total amount of kernel-mode execution time, in 100 nanoseconds, for all active processes associated with the job (as well as all terminated processes no longer associated with the job) since the last call that set a per-job kernel-mode time limit.  This property is set to 0 on creation of the job, and each time a per-job kernel-mode time limit is established. ") : Amended ToSubclass,Units("100 nanoseconds") : Amended ToSubclass] uint64 ThisPeriodTotalKernelTime;
  [Description("Specifies the total number of page faults encountered by all active processes associated with the job, as well as all terminated processes no longer associated with the job. ") : Amended ToSubclass] uint32 TotalPageFaultCount;
  [Description("Specifies the total number of processes associated with the job during its lifetime, including those that have terminated. For example, when a process is associated with a job, but the association fails because of a limit violation, this value is incremented. ") : Amended ToSubclass] uint32 TotalProcesses;
  [Description("Specifies the total number of processes currently associated with the job. When a process is associated with a job, but the association fails because of a limit violation, this value is temporarily incremented. When the terminated process exits and all references to the process are released, this value is decremented. ") : Amended ToSubclass] uint32 ActiveProcesses;
  [Description("Specifies the total number of processes terminated because of a limit violation. ") : Amended ToSubclass] uint32 TotalTerminatedProcesses;
  [Description("Specifies the number of read operations performed by all processes that have ever been associated with the job, in addition to all processes currently associated with the job.  ") : Amended ToSubclass] uint64 ReadOperationCount;
  [Description("Specifies the number of write operations performed by all processes that have ever been associated with the job, in addition to all processes currently associated with the job.") : Amended ToSubclass] uint64 WriteOperationCount;
  [Description("Specifies the number of I/O operations performed, other than read and write operations, by all processes that have ever been associated with the job, in addition to all processes currently associated with the job.  ") : Amended ToSubclass] uint64 OtherOperationCount;
  [Description("Specifies the number of bytes read by all processes that have ever been associated with the job, in addition to all processes currently associated with the job.") : Amended ToSubclass] uint64 ReadTransferCount;
  [Description("Specifies the number of bytes written by all processes that have ever been associated with the job, in addition to all processes currently associated with the job.") : Amended ToSubclass] uint64 WriteTransferCount;
  [Description("Specifies the number of bytes transferred during operations, other than read and write operations, by all processes that have ever been associated with the job, in addition to all processes currently associated with the job.") : Amended ToSubclass] uint64 OtherTransferCount;
  [Description("Specifies the most process memory in kilobytes used by any process ever associated with the job. ") : Amended ToSubclass,Units("kilobytes") : Amended ToSubclass] uint32 PeakProcessMemoryUsed;
  [Description("Specifies the peak memory in kilobytes usage of all processes associated with the job. ") : Amended ToSubclass,Units("kilobytes") : Amended ToSubclass] uint32 PeakJobMemoryUsed;
};

[Description("The Win32_NamedJobObjectStatistics association class relates a job object instance and the I/O accounting information instance containing accounting information for the job.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectStatistics : Win32_CollectionStatistics
{
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance that contains statistical information about the job object.") : Amended ToSubclass] Win32_NamedJobObjectActgInfo Ref Stats;
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance of a job object.") : Amended ToSubclass] Win32_NamedJobObject Ref Collection;
};

[Description("The Win32_NamedJobObjectLimit association class relates a job object and the job object limit settings for that job.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectLimit : CIM_CollectionSetting
{
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance that contains limit settings for the job object.") : Amended ToSubclass] Win32_NamedJobObjectLimitSetting Ref Setting;
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance of a job object.") : Amended ToSubclass] Win32_NamedJobObject Ref Collection;
};

[Description("The Win32_NamedJobObjectLimitSetting class represents the limit settings for a job object. The limit settings specify the resources available to the job in accord with how the limit setting flags are set.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectLimitSetting : CIM_Setting
{
  [Key : ToInstance ToSubclass DisableOverride,Description("The identifier by which the job object limit setting instance is known. \nAs a Kernel object job object names are case sensitive.  Because WMI keys are case insensitive, the name of the named job object must be decorated as follows: a capital letter should be preceded by a backslash.  As a consequence of this convention, 'A' and 'a' are lower case and '\\A' and '\\a' are upper case.") : Amended ToSubclass] string SettingID;
  [Description(" Specifies the per-process memory limit in kilobytes. It is ignored unless the LimitFlags specifies the Limit Process Memory.") : Amended ToSubclass,Units("kilobytes") : Amended ToSubclass] uint32 ProcessMemoryLimit;
  [Description(" Specifies the per-job memory limit in kilobytes. It is ignored unless the LimitFlags specifies the Limit Job Memory value.") : Amended ToSubclass] uint32 JobMemoryLimit;
  [Description(" Specifies the per-process user-mode execution time limit, in 100 nanoseconds. It is ignored unless LimitFlags specifies Limit Process Time.The system periodically checks to determine whether each process associated with the job has accumulated more user-mode time than the set limit. If it has, the process is terminated. ") : Amended ToSubclass,Units("100 nanoseconds") : Amended ToSubclass] uint64 PerProcessUserTimeLimit;
  [Description("Specifies the per-job user-mode execution time limit, in 100 nanoseconds. The system adds the current time of the processes associated with the job to this limit. For example, if you set this limit to 1 minute, and the job has a process that has accumulated 5 minutes of user-mode time, the limit actually enforced is 6 minutes.") : Amended ToSubclass,Units("100 nanoseconds") : Amended ToSubclass] uint64 PerJobUserTimeLimit;
  [Description("The LimitFlags property indicates the limits that are in effect. One or more of the following limits can be in effect: \nLimit Working Set - Causes all processes associated with the job to use the same minimum and maximum working set sizes.\nLimit Process Time - Establishes a user-mode execution time limit for each currently active process and for all future processes associated with the job.\nLimit Job Time - Establishes a user-mode execution time limit for the job. This flag cannot be used with Limit Preserve Job Time. \nActive Process Limit - Establishes a maximum number of simultaneously active processes associated with the job.\nLimit Affinity - Causes all processes associated with the job to use the same processor affinity.\nLimit Priority Class - Causes all processes associated with the job to use the same priority class. \nLimit Preserve Job Time - Preserves any job time limits you previously set. As long as this flag is set, you can establish a per-job time limit once, then alter other limits in subsequent calls. This flag cannot be used with Limit Job Time. \nLimit Scheduling Class - Causes all processes in the job to use the same scheduling class. \nLimit Process Memory - Causes all processes associated with the job to limit their committed memory. When a process attempts to commit memory that would exceed the per-process limit, it fails. If the job object is associated with a completion port, a JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT message is sent to the completion port. \nLimit Job Memory - Causes all processes associated with the job to limit the job-wide sum of their committed memory. When a process attempts to commit memory that would exceed the job-wide limit, it fails. If the job object is associated with a completion port, a JOB_OBJECT_MSG_JOB_MEMORY_LIMIT message is sent to the completion port. \nLimit Die On Unhandled Exception - Forces a call to the SetErrorMode function with the SEM_NOGPFAULTERRORBOX flag for each process associated with the job.\nLimit Breakaway OK - If any process associated with the job creates a child process using the CREATE_BREAKAWAY_FROM_JOB flag while this limit is in effect, the child process is not associated with the job.\nSilent Breakaway OK - Allows any process associated with the job to create child processes that are not associated with the job. ") : Amended ToSubclass,BitValues{"Limit Working Set", "Limit Process Time", "Limit Job Time", "Active Process Limit", "Limit Affinity", "Limit Priority Class", "Limit Preserve Job Time", "Limit Scheduling Class", "Limit Process Memory", "Limit Job Memory", "Limit Die On Unhandled Exception", "Limit Breakaway OK", "Silent Breakaway OK"} : Amended ToSubclass] uint32 LimitFlags;
  [Description("Specifies the minimum working set size for all processes associated with the job. Ignored unless LimitFlags specifies Limit Working Set") : Amended ToSubclass] uint32 MinimumWorkingSetSize;
  [Description("Specifies the maximum working set size for all processes associated with the job. Ignored unless LimitFlags specifies Limit Working Set") : Amended ToSubclass] uint32 MaximumWorkingSetSize;
  [Description("Specifies the active process limit for the job. If you try to associate a process with a job, and this causes the active process count to exceed this limit, the process is terminated and the association fails. Ignored unless LimitFlags specifies Active Process Limit.") : Amended ToSubclass] uint32 ActiveProcessLimit;
  [Description("Specifies the processor affinity for all processes associated with the job. The affinity of each thread is set to this value, but threads are free to subsequently set their affinity, as long as it is a subset of the specified affinity mask. Processes cannot set their own affinity mask. Ignored unless LimitFlags specifies Limit Affinity.") : Amended ToSubclass] uint32 Affinity;
  [Description("Specifies the priority class for all processes associated with the job. Processes and threads cannot modify their priority class. Ignored unless LimitFlags specifies Limit Priority.") : Amended ToSubclass] uint32 PriorityClass;
  [Description("Specifies the scheduling class for all processes associated with the job. The valid values are 0 to 9. Use 0 for the least favorable scheduling class relative to other threads, and 9 for the most favorable scheduling class relative to other threads. Ignored unless LimitFlags specifies Limit Scheduling Class.") : Amended ToSubclass] uint32 SchedulingClass;
};

[Description("The Win32_NamedJobObjectSecLimit association class relates a job object and the job object security limit settings.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectSecLimit : CIM_CollectionSetting
{
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance that contains security limit settings for the job object.") : Amended ToSubclass] Win32_NamedJobObjectSecLimitSetting Ref Setting;
  [Key : ToInstance ToSubclass DisableOverride,Description("This property is a reference to the instance of a job object.") : Amended ToSubclass] Win32_NamedJobObject Ref Collection;
};

[Description("The Win32_NamedJobObjectSecLimitSetting class represents the security limit settings for a job object. For more information about job object security limit settings, see the Job Object Security and Access Rights topic in the Platform SDK Base Services documentation.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_NamedJobObjectSecLimitSetting : CIM_Setting
{
  [Key : ToInstance ToSubclass DisableOverride,Description("The identifier by which the job object security limit setting instance is known. \nAs a Kernel object job object names are case sensitive.  Because WMI keys are case insensitive, the name of the named job object must be decorated as follows: a capital letter should be preceded by a backslash.  As a consequence of this convention, 'A' and 'a' are lower case and '\\A' and '\\a' are upper case.") : Amended ToSubclass] string SettingID;
  [Description("Specifies the security limitations for the job.A value of No Administrator prevents any process in the job from using a token that specifies the local administrators group.A value of Rescricted Token prevents any process in the job from using a token that was not created with the CreateRestrictedToken function.A value of Specific Token forces processes in the job to run under.A value Filter Tokens of applies a filter to the token when a process impersonates a client. Requires at least one of the following properties to be set - SidsToDisable, PrivilegesToDelete, or RestrictedSids.") : Amended ToSubclass,Values{"No Administrator", "Restricted Token", "Specific Token", "Filter Tokens"} : Amended ToSubclass] uint32 SecurityLimitFlags;
  [Description("This property specifies the SIDs to disable for access checking, if SecurityLimitFlagss is Filter Tokens.This property can be NULL if you do not want to disable any SIDs.") : Amended ToSubclass] Win32_TokenGroups SIDsToDisable;
  [Description("This property specifies the deny-only SIDs that will be added to the access token, if SecurityLimitFlags is Filter Tokens. This property can be NULL if you do not want to specify any deny-only SIDs.") : Amended ToSubclass] Win32_TokenGroups RestrictedSIDs;
  [Description("This property specifies the privileges to delete from the token, if SecurityLimitFlags is Filter Tokens. This property can be NULL if you do not want to delete any privileges. ") : Amended ToSubclass] Win32_TokenPrivileges PrivilegesToDelete;
};

[Description("The Win32_TokenGroups abstract class contains information about the group account security identifiers (SIDs) associated with an access token. For more information about token groups and the TOKEN_GROUPS structure, see the Access Tokens topic in the Platform SDK Access Control documentation.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_TokenGroups
{
  [Description("Specifies the number of groups in the access token.") : Amended ToSubclass] uint32 GroupCount;
  [Description("Specifies an array of SIDs and attributes.") : Amended ToSubclass] Win32_SIDandAttributes Groups[];
};

[Description("The Win32_TokenPrivileges abstract class contains information about a set of privileges for an access token. Each process or thread in the job object has an access token specifying what resources and actions are available to it. For more information, see the Access Tokens topic in the Platform SDK Access Control documentation.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_TokenPrivileges
{
  [Description("Specifies the number of entries in the Privileges array.") : Amended ToSubclass] uint32 PrivilegeCount;
  [Description("Specifies an array of LUIDs and attributes.") : Amended ToSubclass] Win32_LUIDandAttributes Privileges[];
};

[Description("This class represents a security identifier (SID) and its attributes.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_SIDandAttributes
{
  [Description("Specifies a security identifier (SID).") : Amended ToSubclass] Win32_SID SID;
  [Description("Specifies attributes of the SID. This value contains up to 32 one-bit flags. Its meaning depends on the definition and use of the SID.") : Amended ToSubclass] uint32 Attributes;
};

[Description("The Win32_LUIDandAttributes abstract class represents a locally unique identifier (LUID) of a privilege and a set of bit flags that indicate the attributes of the privilege, such as whether the privilege is enabled. Each LUID and attributes structure defines the availability of a security privilege for the process. For more information, see LUID_AND_ATTRIBUTES.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_LUIDandAttributes
{
  [Description("Specifies a LUID value.") : Amended ToSubclass] Win32_LUID LUID;
  [Description("Specifies attributes of the LUID. This value contains two 32-bit flags. Its meaning is dependent on the definition and use of the LUIDSpecifies attributes of the LUID.") : Amended ToSubclass] uint32 Attributes;
};

[Description("The Win32_LUID abstract class represents a locally unique identifier (LUID), an identifier unique only on the local computer. Instances of the Win32_LUID class identify a process or thread so that they can be associated with security token privileges represented by instances of the Win32_LUIDandAttributes class. For more information about the role of LUIDs in security, see LUID.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_LUID
{
  [Description("Specifies the most significant bits of the LUID.") : Amended ToSubclass] uint32 HighPart;
  [Description("Specifies the least significant bits of the LUID.") : Amended ToSubclass] uint32 LowPart;
};

[Description("The Win32_JobObjectStatus class reports error information obtained while attempting any failed operation in the Job Object provider.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804) : ToInstance] 
class Win32_JobObjectStatus : __ExtendedStatus
{
  [Description("The Win32ErrorCode property contains the Win32 error code most recently encountered that caused the operation to fail.") : Amended ToSubclass] uint32 Win32ErrorCode;
  [Description("The AdditionalDescription property contains additional information relating to the error.") : Amended ToSubclass] string AdditionalDescription;
};
