#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\root\\StandardCimV2")
instance of __namespace{ name="MS_809";};
#pragma namespace("\\\\.\\root\\StandardCimV2\\MS_809")

[Version("2.19.0") : Amended,Description("ManagedElement is an abstract class that provides a common superclass (or top of the inheritance tree) for the non-association classes in the CIM Schema.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class CIM_ManagedElement
{
  [Description("InstanceID is an optional property that may be used to opaquely and uniquely identify an instance of this class within the scope of the instantiating Namespace. Various subclasses of this class may override this property to make it required, or a key. Such subclasses may also modify the preferred algorithms for ensuring uniqueness that are defined below.\nTo ensure uniqueness within the NameSpace, the value of InstanceID should be constructed using the following \"preferred\" algorithm: \n<OrgID>:<LocalID> \nWhere <OrgID> and <LocalID> are separated by a colon (:), and where <OrgID> must include a copyrighted, trademarked, or otherwise unique name that is owned by the business entity that is creating or defining the InstanceID or that is a registered ID assigned to the business entity by a recognized global authority. (This requirement is similar to the <Schema Name>_<Class Name> structure of Schema class names.) In addition, to ensure uniqueness, <OrgID> must not contain a colon (:). When using this algorithm, the first colon to appear in InstanceID must appear between <OrgID> and <LocalID>. \n<LocalID> is chosen by the business entity and should not be reused to identify different underlying (real-world) elements. If not null and the above \"preferred\" algorithm is not used, the defining entity must assure that the resulting InstanceID is not reused across any InstanceIDs produced by this or other providers for the NameSpace of this instance. \nIf not set to null for DMTF-defined instances, the \"preferred\" algorithm must be used with the <OrgID> set to CIM.") : Amended ToSubclass] string InstanceID;
  [Description("The Caption property is a short textual description (one- line string) of the object.") : Amended ToSubclass] string Caption;
  [Description("The Description property provides a textual description of the object.") : Amended ToSubclass] string Description;
  [Description("A user-friendly name for the object. This property allows each instance to define a user-friendly name in addition to its key properties, identity data, and description information. \nNote that the Name property of ManagedSystemElement is also defined as a user-friendly name. But, it is often subclassed to be a Key. It is not reasonable that the same property can convey both identity and a user-friendly name, without inconsistencies. Where Name exists and is not a Key (such as for instances of LogicalDevice), the same information can be present in both the Name and ElementName properties. Note that if there is an associated instance of CIM_EnabledLogicalElementCapabilities, restrictions on this properties may exist as defined in ElementNameMask and MaxElementNameLen properties defined in that class.") : Amended ToSubclass] string ElementName;
};

[Description("CIM_ManagedSystemElement is the base class for the System Element hierarchy. Any distinguishable component of a System is a candidate for inclusion in this class. Examples of system components include: \n- software components such as application servers, databases, and applications \n- operating system components such as files, processes, and threads \n- device components such as disk drives, controllers, processors, and printers \n- physical components such as chips and cards.") : Amended ToSubclass,Version("2.22.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class CIM_ManagedSystemElement : CIM_ManagedElement
{
  [Description("A datetime value that indicates when the object was installed. Lack of a value does not indicate that the object is not installed.") : Amended ToSubclass] datetime InstallDate;
  [Description("The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.") : Amended ToSubclass] string Name;
  [Description("Indicates the current statuses of the element. Various operational statuses are defined. Many of the enumeration\\'s values are self-explanatory. However, a few are not and are described here in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, and so on. \n\"Predictive Failure\" indicates that an element is functioning nominally but predicting a failure in the near future. \n\"In Service\" describes an element being configured, maintained, cleaned, or otherwise administered. \n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it. \n\"Lost Communication\" indicates that the ManagedSystem Element is known to exist and has been contacted successfully in the past, but is currently unreachable. \n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the state and configuration of the element might need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" indicates that this element might be \"OK\" but that another element, on which it is dependent, is in error. An example is a network service or endpoint that cannot function due to lower-layer networking problems. \n\"Completed\" indicates that the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can tell if the complete operation Completed with OK (passed), Completed with Error (failed), or Completed with Degraded (the operation finished, but it did not complete OK or did not report an error). \n\"Power Mode\" indicates that the element has additional power model information contained in the Associated PowerManagementService association. \nOperationalStatus replaces the Status property on ManagedSystemElement to provide a consistent approach to enumerations, to address implementation needs for an array property, and to provide a migration path from today\\'s environment to the future. This change was not made earlier because it required the deprecated qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly recommended that providers or instrumentation provide both the Status and OperationalStatus properties. Further, the first value of OperationalStatus should contain the primary status for the element. When instrumented, Status (because it is single-valued) should also provide the primary status of the element.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];
  [Description("Strings describing the various OperationalStatus array values. For example, if \"Stopping\" is the value assigned to OperationalStatus, then this property may contain an explanation as to why an object is being stopped. Note that entries in this array are correlated with those at the same array index in OperationalStatus.") : Amended ToSubclass] string StatusDescriptions[];
  [Description("A string indicating the current status of the object. Various operational and non-operational statuses are defined. This property is deprecated in lieu of OperationalStatus, which includes the same semantics in its enumeration. This change is made for 3 reasons: \n1) Status is more correctly defined as an array. This definition overcomes the limitation of describing status using a single value, when it is really a multi-valued property (for example, an element might be OK AND Stopped. \n2) A MaxLen of 10 is too restrictive and leads to unclear enumerated values. \n3) The change to a uint16 data type was discussed when CIM V2.0 was defined. However, existing V1.0 implementations used the string property and did not want to modify their code. Therefore, Status was grandfathered into the Schema. Use of the deprecated qualifier allows the maintenance of the existing property, but also permits an improved definition using OperationalStatus.") : Amended ToSubclass] string Status;
  [Description("Indicates the current health of the element. This attribute expresses the health of this element but not necessarily that of its subcomponents. The possible values are 0 to 30, where 5 means the element is entirely healthy and 30 means the element is completely non-functional. The following continuum is defined: \n\"Non-recoverable Error\" (30) - The element has completely failed, and recovery is not possible. All functionality provided by this element has been lost. \n\"Critical Failure\" (25) - The element is non-functional and recovery might not be possible. \n\"Major Failure\" (20) - The element is failing. It is possible that some or all of the functionality of this component is degraded or not working. \n\"Minor Failure\" (15) - All functionality is available but some might be degraded. \n\"Degraded/Warning\" (10) - The element is in working order and all functionality is provided. However, the element is not working to the best of its abilities. For example, the element might not be operating at optimal performance or it might be reporting recoverable errors. \n\"OK\" (5) - The element is fully functional and is operating within normal operational parameters and without error. \n\"Unknown\" (0) - The implementation cannot report on HealthState at this time. \nDMTF has reserved the unused portion of the continuum for additional HealthStates in the future.") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"} : Amended ToSubclass] uint16 HealthState;
  [Description("CommunicationStatus indicates the ability of the instrumentation to communicate with the underlying ManagedElement. CommunicationStatus consists of one of the following values: Unknown, None, Communication OK, Lost Communication, or No Contact. \nA Null return indicates the implementation (provider) does not implement this property. \n\"Unknown\" indicates the implementation is in general capable of returning this property, but is unable to do so at this time. \n\"Not Available\" indicates that the implementation (provider) is capable of returning a value for this property, but not ever for this particular piece of hardware/software or the property is intentionally not used because it adds no meaningful information (as in the case of a property that is intended to add additional info to another property). \n\"Communication OK \" indicates communication is established with the element, but does not convey any quality of service. \n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it. \n\"Lost Communication\" indicates that the Managed Element is known to exist and has been contacted successfully in the past, but is currently unreachable.") : Amended ToSubclass,Values{"Unknown", "Not Available", "Communication OK", "Lost Communication", "No Contact", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 CommunicationStatus;
  [Description("DetailedStatus compliments PrimaryStatus with additional status detail. It consists of one of the following values: Not Available, No Additional Information, Stressed, Predictive Failure, Error, Non-Recoverable Error, SupportingEntityInError. Detailed status is used to expand upon the PrimaryStatus of the element. \nA Null return indicates the implementation (provider) does not implement this property. \n\"Not Available\" indicates that the implementation (provider) is capable of returning a value for this property, but not ever for this particular piece of hardware/software or the property is intentionally not used because it adds no meaningful information (as in the case of a property that is intended to add additional info to another property). \n\"No Additional Information\" indicates that the element is functioning normally as indicated by PrimaryStatus = \"OK\". \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, and so on. \n\"Predictive Failure\" indicates that an element is functioning normally but a failure is predicted in the near future. \n\"Non-Recoverable Error \" indicates that this element is in an error condition that requires human intervention. \n\"Supporting Entity in Error\" indicates that this element might be \"OK\" but that another element, on which it is dependent, is in error. An example is a network service or endpoint that cannot function due to lower-layer networking problems.") : Amended ToSubclass,Values{"Not Available", "No Additional Information", "Stressed", "Predictive Failure", "Non-Recoverable Error", "Supporting Entity in Error", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 DetailedStatus;
  [Description("OperatingStatus provides a current status value for the operational condition of the element and can be used for providing more detail with respect to the value of EnabledState. It can also provide the transitional states when an element is transitioning from one state to another, such as when an element is transitioning between EnabledState and RequestedState, as well as other transitional conditions.\nOperatingStatus consists of one of the following values: Unknown, Not Available, In Service, Starting, Stopping, Stopped, Aborted, Dormant, Completed, Migrating, Emmigrating, Immigrating, Snapshotting. Shutting Down, In Test \nA Null return indicates the implementation (provider) does not implement this property. \n\"Unknown\" indicates the implementation is in general capable of returning this property, but is unable to do so at this time. \n\"None\" indicates that the implementation (provider) is capable of returning a value for this property, but not ever for this particular piece of hardware/software or the property is intentionally not used because it adds no meaningful information (as in the case of a property that is intended to add additional info to another property). \n\"Servicing\" describes an element being configured, maintained, cleaned, or otherwise administered. \n\"Starting\" describes an element being initialized. \n\"Stopping\" describes an element being brought to an orderly stop. \n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the state and configuration of the element might need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Completed\" indicates that the element has completed its operation. This value should be combined with either OK, Error, or Degraded in the PrimaryStatus so that a client can tell if the complete operation Completed with OK (passed), Completed with Error (failed), or Completed with Degraded (the operation finished, but it did not complete OK or did not report an error). \n\"Migrating\" element is being moved between host elements. \n\"Immigrating\" element is being moved to new host element. \n\"Emigrating\" element is being moved away from host element. \n\"Shutting Down\" describes an element being brought to an abrupt stop. \n\"In Test\" element is performing test functions. \n\"Transitioning\" describes an element that is between states, that is, it is not fully available in either its previous state or its next state. This value should be used if other values indicating a transition to a specific state are not applicable.\n\"In Service\" describes an element that is in service and operational.") : Amended ToSubclass,Values{"Unknown", "Not Available", "Servicing", "Starting", "Stopping", "Stopped", "Aborted", "Dormant", "Completed", "Migrating", "Emigrating", "Immigrating", "Snapshotting", "Shutting Down", "In Test", "Transitioning", "In Service", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 OperatingStatus;
  [Description("PrimaryStatus provides a high level status value, intended to align with Red-Yellow-Green type representation of status. It should be used in conjunction with DetailedStatus to provide high level and detailed health status of the ManagedElement and its subcomponents. \nPrimaryStatus consists of one of the following values: Unknown, OK, Degraded or Error. \"Unknown\" indicates the implementation is in general capable of returning this property, but is unable to do so at this time. \n\"OK\" indicates the ManagedElement is functioning normally. \n\"Degraded\" indicates the ManagedElement is functioning below normal. \n\"Error\" indicates the ManagedElement is in an Error condition.") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 PrimaryStatus;
};

[Description("Represents a print queue and its associated settings.") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_Printer : CIM_ManagedSystemElement
{
  [Description("The name of this printer.") : Amended ToSubclass,key] string Name;
  [key,Description("The name of the server which this printer resides on.") : Amended ToSubclass] string ComputerName;
  [Description("The name under which this printer is shared.") : Amended ToSubclass] string ShareName;
  [Description("The name of the port associated with this printer.") : Amended ToSubclass] string PortName;
  [Description("The name of the printer driver associated with this printer.") : Amended ToSubclass] string DriverName;
  [Description("A textual description of the physical location of the printer.") : Amended ToSubclass] string Location;
  [Description("A textual comment describing the printer.") : Amended ToSubclass] string Comment;
  [Description("Path to a file containing PDL for a separator page.") : Amended ToSubclass] string SeparatorPageFile;
  [Description("The name of the print processor for this device.") : Amended ToSubclass] string PrintProcessor;
  [Description("The data type the printer will use to record print jobs.") : Amended ToSubclass] string Datatype;
  [Description("Indicates whether this printer is currently shared.") : Amended ToSubclass] boolean Shared;
  [Description("Indicates whether this printer has been published to the Active Directory.") : Amended ToSubclass] boolean Published;
  [Description("The SDDL representation of the permissions set on this printer.") : Amended ToSubclass] string PermissionSDDL;
  [Description("Describes the rendering mode for connections made to this printer.") : Amended ToSubclass] uint32 RenderingMode;
  [Description("The priority of this printer when scheduling print jobs.") : Amended ToSubclass] uint32 Priority;
  [Description("The default job priority for jobs printed to this printer.") : Amended ToSubclass] uint32 DefaultJobPriority;
  [Description("The earliest time at which the printer will print a job, expressed as minutes elapsed since 12:00 AM GMT (Greenwich Mean Time).") : Amended ToSubclass] uint32 StartTime;
  [Description("The latest time at which the printer will print a job, expressed as minutes elapsed since 12:00 AM GMT (Greenwich Mean Time).") : Amended ToSubclass] uint32 UntilTime;
  [Description("The status of the printer device.") : Amended ToSubclass,BitValues{"Paused", "Error", "Pending Deletion", "Paper Jam", "Paper Out", "Manual Feed", "Paper Problem", "Offline", "IO Active", "Busy", "Printing", "Output Bin Full", "Not Available", "Waiting", "Processing", "Initializing", "Warming Up", "Toner Low", "No Toner", "Page Punt", "User Intervention", "Out Of Memory", "Door Open", "Server Unknown", "Power Save", "Server Offline", "Driver Update Needed"} : Amended ToSubclass] uint32 PrinterStatus;
  [Description("The number of currently queued print jobs for this printer.") : Amended ToSubclass] uint32 JobCount;
  [Description("Specifies whether print jobs in the queue should be kept after they are printed.") : Amended ToSubclass] boolean KeepPrintedJobs;
  [Description("Specifies whether Branch Office Remote Logging is disabled for this printer.") : Amended ToSubclass] boolean DisableBranchOfficeLogging;
  [Description("Specifies the maximum size (in MB) of the Branch Office Remote Offline Logging file for this printer.") : Amended ToSubclass] uint32 BranchOfficeOfflineLogSizeMB;
  [Description("Describes the workflow application policy for connections made to this printer.") : Amended ToSubclass] uint32 WorkflowPolicy;
  [key,Description("Indicates the type of this queue (Connection or Local queue).") : Amended ToSubclass] uint32 Type;
  [key,Description("Indicates the type of this device (Standard or 3D Printer).") : Amended ToSubclass] uint32 DeviceType;
  [Description("Adds a new connection to a shared print queue.") : Amended ToSubclass] uint32 AddConnection([In,Description("Specifies the name of the shared queue.") : Amended ToSubclass] string ConnectionName);
  [Description("Adds a new printer to the specified server using an existing printer port.") : Amended ToSubclass] uint32 AddByExistingPort([In,Description("Specifies the printer comment.") : Amended ToSubclass] string Comment,[In,Description("Specifies the data type the printer will use to record print jobs") : Amended ToSubclass] string Datatype,[In,Description("Specifies the name of the print driver to be associated with the printer.") : Amended ToSubclass] string DriverName,[In,Description("Specifies the latest time at which the printer will print a job, expressed as minutes elapsed since 12:00 AM GMT (Greenwich Mean Time).") : Amended ToSubclass] uint32 UntilTime,[In,Description("Specifies whether printer jobs in the queue should be kept after spooling.") : Amended ToSubclass] boolean KeepPrintedJobs,[In,Description("Specifies the location of the printer.") : Amended ToSubclass] string Location,[In,Description("Specifies the name of the printer to be added.") : Amended ToSubclass] string Name,[In,Description("Specifies the permissions for the printer as an SDDL string.") : Amended ToSubclass] string PermissionSDDL,[In,Description("Specifies the name of the port used or created for the printer.") : Amended ToSubclass] string PortName,[In,Description("Specifies the name of the print processor used by the printer.") : Amended ToSubclass] string PrintProcessor,[In,Description("Specifies relative queue priority.") : Amended ToSubclass] uint32 Priority,[In,Description("Specifies whether to publish the printer in the AD.") : Amended ToSubclass] boolean Published,[In,Description("Specifies the Rendering mode for the printer: SSR, CSR, or Branch Office Direct Printing.") : Amended ToSubclass] uint32 RenderingMode,[In,Description("Specifies the path to a file containing PDL for a separator page.") : Amended ToSubclass] string SeparatorPageFile,[In,Description("Specifies the name of the computer that the printer will be added to.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the share name for this printer.") : Amended ToSubclass] string ShareName,[In,Description("Specifies whether this printer will be shared.") : Amended ToSubclass] boolean Shared,[In,Description("Specifies the earliest time at which the printer will print a job, expressed as minutes elapsed since 12:00 AM GMT (Greenwich Mean Time).") : Amended ToSubclass] uint32 StartTime,[In,Description("Specifies whether Branch Office Remote Logging is disabled for this printer.") : Amended ToSubclass] boolean DisableBranchOfficeLogging,[In,Description("Specifies the maximum size (in MB) of the Branch Office Remote Offline Logging file for this printer.") : Amended ToSubclass] uint32 BranchOfficeOfflineLogSizeMB,[In,Description("Specifies the workflow application policy for the printer: Uninitialized, Disabled, or Enabled.") : Amended ToSubclass] uint32 WorkflowPolicy);
  [Description("Adds a new printer to the specified server using a new WSD or IPP printer port.") : Amended ToSubclass] uint32 AddByAdaptivePort([In,Description("Specifies the printer comment.") : Amended ToSubclass] string Comment,[In,Description("Specifies the data type the printer will use to record print jobs") : Amended ToSubclass] string Datatype,[In,Description("Device URL for directed discovery used for a WSD port, this parameter can not be specified at the same time with IppUrl") : Amended ToSubclass] string DeviceURL,[In,Description("Specifies the latest time at which the printer will print a job, expressed as minutes elapsed since 12:00 AM GMT (Greenwich Mean Time).") : Amended ToSubclass] uint32 UntilTime,[In,Description("Multicast UUID for device detection for the WSD Port, this parameter can not be specified at the same time with IppUrl") : Amended ToSubclass] string DeviceUUID,[In,Description("URL for directed discovery used for an Ipp port, this parameter can not be specified at the same time with DeviceURL or DeviceUUID") : Amended ToSubclass] string IppUrl,[In,Description("Specifies whether printer jobs in the queue should be kept after spooling.") : Amended ToSubclass] boolean KeepPrintedJobs,[In,Description("Specifies the location of the printer.") : Amended ToSubclass] string Location,[In,Description("Specifies the name of the printer to be added.") : Amended ToSubclass] string Name,[In,Description("Specifies the permissions for the printer as an SDDL string.") : Amended ToSubclass] string PermissionSDDL,[In,Description("Specifies the name of the print processor used by the printer.") : Amended ToSubclass] string PrintProcessor,[In,Description("Specifies relative queue priority.") : Amended ToSubclass] uint32 Priority,[In,Description("Specifies whether to publish the printer in the A.D") : Amended ToSubclass] boolean Published,[In,Description("Specifies the Rendering mode for the printer: SSR, CSR, or Branch Office Direct Printing.") : Amended ToSubclass] uint32 RenderingMode,[In,Description("Specifies the path to a file containing PDL for a separator page.") : Amended ToSubclass] string SeparatorPageFile,[In,Description("Specifies the name of the computer that the printer will be added to.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the share name for this printer.") : Amended ToSubclass] string ShareName,[In,Description("Specifies whether this printer will be shared.") : Amended ToSubclass] boolean Shared,[In,Description("Specifies the earliest time at which the printer will print a job, expressed as minutes elapsed since 12:00 AM GMT (Greenwich Mean Time).") : Amended ToSubclass] uint32 StartTime,[In,Description("Specifies whether Branch Office Remote Logging is disabled for this printer.") : Amended ToSubclass] boolean DisableBranchOfficeLogging,[In,Description("Specifies the maximum size (in MB) of the Branch Office Remote Offline Logging file for this printer.") : Amended ToSubclass] uint32 BranchOfficeOfflineLogSizeMB,[In,Description("Specifies the workflow application policy for the printer: Uninitialized, Disabled, or Enabled.") : Amended ToSubclass] uint32 WorkflowPolicy);
  [Description("Renames the specified printer.") : Amended ToSubclass] uint32 RenameByName([In,Description("The name of the printer to be renamed") : Amended ToSubclass] string Name,[In,Description("The new name for the printer.") : Amended ToSubclass] string NewName,[In,Description("The name of the server this printer resides on.") : Amended ToSubclass] string ComputerName);
  [Description("Renames the specified printer") : Amended ToSubclass] uint32 RenameByObject([In,Description("An MSFT_Printer instance specifying the printer to be renamed.") : Amended ToSubclass] MSFT_Printer InputObject,[In,Description("The new name for the printer.") : Amended ToSubclass] string NewName);
};

[Description("Represents a 3D print queue and its associated settings.") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_3DPrinter : MSFT_Printer
{
};

[Description("Base class for printer ports.") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterPort : CIM_ManagedSystemElement
{
  [Description("The description of this port.") : Amended ToSubclass] string Description;
  [Description("The name of this port.") : Amended ToSubclass,key] string Name;
  [key,Description("The name of the port monitor for this port.") : Amended ToSubclass] string PortMonitor;
  [key,Description("The name of the server this port resides on.") : Amended ToSubclass] string ComputerName;
};

[Description("Represents a WSD or IPP printer port") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_AdaptivePrinterPort : MSFT_PrinterPort
{
  [Description("The discovery method for this port (Multicast or Directed).") : Amended ToSubclass] uint32 DiscoveryMethod;
  [Description("The UUID of this device (when discovered via Multicast).") : Amended ToSubclass] string DeviceUUID;
  [Description("The URL of this device (when discovered via WSD Directed discovery).") : Amended ToSubclass] string DeviceURL;
  [Description("The URL of this device (when discovered via IPP Directed discovery)") : Amended ToSubclass] string IppUrl;
};

[Description("Represents a local printer port.") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_LocalPrinterPort : MSFT_PrinterPort
{
};

[Description("Represents an LPR printer port") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_LprPrinterPort : MSFT_PrinterPort
{
  [Description("The server hosting the LPR printer.") : Amended ToSubclass] string HostName;
  [Description("The printer this LPR port points to.") : Amended ToSubclass] string PrinterName;
};

[Description("Represents a Print Job on a print queue") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrintJob : CIM_ManagedSystemElement
{
  [key,Description("The job ID for this job.") : Amended ToSubclass] uint32 Id;
  [Description("The server associated with this job.") : Amended ToSubclass] string ComputerName;
  [key,Description("The printer associated with this job.") : Amended ToSubclass] string PrinterName;
  [Description("The user who submitted this job.") : Amended ToSubclass] string UserName;
  [Description("The name of this job.") : Amended ToSubclass] string DocumentName;
  [Description("The datatype of this job.") : Amended ToSubclass] string Datatype;
  [Description("The priority of this job.") : Amended ToSubclass] uint32 Priority;
  [Description("The position of this  job in the print queue.") : Amended ToSubclass] uint32 Position;
  [Description("The time of this job’s submission.") : Amended ToSubclass] datetime SubmittedTime;
  [Description("The size (in bytes) of this job.") : Amended ToSubclass] uint32 Size;
  [Description("The time (in milliseconds) spent processing this job.") : Amended ToSubclass] uint32 JobTime;
  [Description("The number of pages printed in this job.") : Amended ToSubclass] uint32 PagesPrinted;
  [Description("The number of pages total in this job.") : Amended ToSubclass] uint32 TotalPages;
  [Description("The status of this job.") : Amended ToSubclass,BitValues{"Paused", "Error", "Deleting", "Spooling", "Printing", "Offline", "Paper Out", "Printed", "Deleted", "Blocked", "User Intervention", "Restart", "Complete", "Retained", "Rendering Locally"} : Amended ToSubclass] uint32 JobStatus;
  [Description("Returns the print jobs in a given print queue.") : Amended ToSubclass] uint32 GetByName([In,Description("Specifies the name of the server.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the ID of the job to get.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the name of the printer that will be used.") : Amended ToSubclass] string PrinterName,[Out,Description("The returned print job.") : Amended ToSubclass] MSFT_PrintJob cmdletOutput[]);
  [Description("Return the print jobs in a given print queue") : Amended ToSubclass] uint32 GetByObject([In,Description("Specifies the ID of the job to get.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the printer that will be used.") : Amended ToSubclass] MSFT_Printer PrinterObject,[Out,Description("The returned print job.") : Amended ToSubclass] MSFT_PrintJob cmdletOutput[]);
  [Description("Deletes a printjob from a given queue.") : Amended ToSubclass] uint32 DeleteJobByObject([In,Description("Specifies the print job to delete.") : Amended ToSubclass] MSFT_PrintJob InputObject);
  [Description("Deletes a print job from a given queue.") : Amended ToSubclass] uint32 DeleteJobById([In,Description("Specifies the name of the server on which the job resides.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the ID of the print job to delete.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the name of the print queue to delete the job from.") : Amended ToSubclass] string PrinterName);
  [Description("Deletes a print job from a given queue.") : Amended ToSubclass] uint32 DeleteJobByPrinterObject([In,Description("Specifies the ID of a print job to delete.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the print queue to delete the job from.") : Amended ToSubclass] MSFT_Printer PrinterObject);
  [Description("Restarts a print job in a print queue.") : Amended ToSubclass] uint32 RestartJobByObject([In,Description("Specifies the print job to restart.") : Amended ToSubclass] MSFT_PrintJob InputObject);
  [Description("Restarts a print job in a print queue.") : Amended ToSubclass] uint32 RestartJobById([In,Description("Specifies the name of the server on which the job resides.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the ID of the print job to restart.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the name of the print queue to restart the job on.") : Amended ToSubclass] string PrinterName);
  [Description("Restarts a print job in a print queue.") : Amended ToSubclass] uint32 RestartJobByPrinterObject([In,Description("Specifies the ID of a print job to restart.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the printer that will be used.") : Amended ToSubclass] MSFT_Printer PrinterObject);
  [Description("The resume-printjob cmdlet will resume a print job") : Amended ToSubclass] uint32 ResumeJobByObject([In,Description("Specifies the print job to resume.") : Amended ToSubclass] MSFT_PrintJob InputObject);
  [Description("Resumes a paused print job") : Amended ToSubclass] uint32 ResumeJobById([In,Description("Specifies the name of the server used.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the ID of the print job to resume.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies a printer name.") : Amended ToSubclass] string PrinterName);
  [Description("Resumes a paused print job") : Amended ToSubclass] uint32 ResumeJobByPrinterObject([In,Description("Specifies the ID of the print job to resume.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the printer that will be used.") : Amended ToSubclass] MSFT_Printer PrinterObject);
  [Description("Pauses a print job in a print queue.") : Amended ToSubclass] uint32 SuspendJobByObject([In,Description("Specifies the print job to be paused.") : Amended ToSubclass] MSFT_PrintJob InputObject);
  [Description("Pauses a print job in a print queue.") : Amended ToSubclass] uint32 SuspendJobById([In,Description("Specifies the name of the server on which the job resides.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the ID of the print job to suspend.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the name of the print queue to suspend the job on.") : Amended ToSubclass] string PrinterName);
  [Description("Pauses a print job in a print queue.") : Amended ToSubclass] uint32 SuspendJobByPrinterObject([In,Description("Specifies the ID of the print job to be paused.") : Amended ToSubclass] uint32 ID,[In,Description("Specifies the printer that will be used.") : Amended ToSubclass] MSFT_Printer PrinterObject);
};

[Version("1.0") : Amended,Description("Encapsulates configuration information for a printer.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterConfiguration
{
  [key,Description("The printer this configuration is associated with.") : Amended ToSubclass] string PrinterName;
  [key,Description("The name of the server the printer resides on.") : Amended ToSubclass] string ComputerName;
  [Description("The Print Ticket XML defining default print settings for this device.") : Amended ToSubclass] string PrintTicketXML;
  [Description("The Print Capabilities XML defining print capabilities for this device.") : Amended ToSubclass] string PrintCapabilitiesXML;
  [Description("Represents the duplexing mode of the printer.") : Amended ToSubclass] uint32 DuplexingMode;
  [Description("Indicates if collating is enabled/disabled.") : Amended ToSubclass] boolean Collate;
  [Description("Represents whether the printer should use color.") : Amended ToSubclass] boolean Color;
  [Description("Indicates the selected paper size.") : Amended ToSubclass] uint32 PaperSize;
  [Description("Retrieves the configuration information for a Printer.") : Amended ToSubclass] uint32 GetByPrinterName([In,Description("The server on which the printer is located.") : Amended ToSubclass] string ComputerName,[In,Description("The name of the printer for which to retrieve printer configuration.") : Amended ToSubclass] string PrinterName,[Out,Description("The returned configuration of the requested printer.") : Amended ToSubclass] MSFT_PrinterConfiguration cmdletOutput);
  [Description("Retrieves the configuration information for a Printer.") : Amended ToSubclass] uint32 GetByPrinterObject([In,Description("The printer for which to retrieve printer configuration.") : Amended ToSubclass] MSFT_Printer PrinterObject,[Out,Description("The returned configuration of the requested printer.") : Amended ToSubclass] MSFT_PrinterConfiguration cmdletOutput);
  [Description("Sets configuration information for a printer") : Amended ToSubclass] uint32 SetByPrinterName([In,Description("Specifies whether to collate this printer's output by default.") : Amended ToSubclass] boolean Collate,[In,Description("Specifies whether the printer should use color.") : Amended ToSubclass] boolean Color,[In,Description("Specifies the duplexing mode the printer should use by default.") : Amended ToSubclass] uint32 DuplexingMode,[In,Description("Specifies the paper size the printer should use by default.") : Amended ToSubclass] uint32 PaperSize,[In,Description("Specifies the print ticket XML defining default print settings for this printer.") : Amended ToSubclass] string PrintTicketXML,[In,Description("Specifies the server on which the printer is located.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the printer for which to set configuration information.") : Amended ToSubclass] string PrinterName);
  [Description("Sets configuration information for a printer") : Amended ToSubclass] uint32 SetByPrinterObject([In,Description("Specifies whether to collate this printer's output by default.") : Amended ToSubclass] boolean Collate,[In,Description("Specifies whether the printer should use color.") : Amended ToSubclass] boolean Color,[In,Description("Specifies the duplexing mode the printer should use by default.") : Amended ToSubclass] uint32 DuplexingMode,[In,Description("Specifies the paper size the printer should use by default.") : Amended ToSubclass] uint32 PaperSize,[In,Description("Specifies the print ticket XML defining default print settings for this printer.") : Amended ToSubclass] string PrintTicketXML,[In,Description("Specifies a printer object for which to change configuration settings.") : Amended ToSubclass] MSFT_Printer PrinterObject);
  [Description("Sets configuration information for a printer.") : Amended ToSubclass] uint32 SetByPrintConfigObject([In,Description("Specifies the printer configuration settings to set.") : Amended ToSubclass] MSFT_PrinterConfiguration InputObject);
};

[Description("Represents a printer driver") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterDriver : CIM_ManagedSystemElement
{
  [Description("The name of this driver.") : Amended ToSubclass,key] string Name;
  [key,Description("The server this driver is installed on.") : Amended ToSubclass] string ComputerName;
  [key,Description("The environment of this driver.") : Amended ToSubclass] string PrinterEnvironment;
  [Description("The path to this driver in the driver store.") : Amended ToSubclass] string Path;
  [Description("The data file for this driver.") : Amended ToSubclass] string DataFile;
  [Description("The config file for this driver.") : Amended ToSubclass] string ConfigFile;
  [Description("The help file for this driver.") : Amended ToSubclass] string HelpFile;
  [Description("The dependent files for this driver.") : Amended ToSubclass] string DependentFiles[];
  [Description("The name of the language monitor for this driver.") : Amended ToSubclass] string Monitor;
  [Description("The default datatype for this driver.") : Amended ToSubclass] string DefaultDatatype;
  [Description("The timestamp for this driver.") : Amended ToSubclass] datetime Date;
  [Description("The major version of this driver (e.g. 3 or 4).") : Amended ToSubclass] uint32 MajorVersion;
  [Description("The driver-specific version of this driver.") : Amended ToSubclass] uint64 DriverVersion;
  [Description("The manufacturer of this driver.") : Amended ToSubclass] string Manufacturer;
  [Description("The URL of the manufacturer of this driver.") : Amended ToSubclass] string OEMUrl;
  [Description("The hardware ID of this driver.") : Amended ToSubclass] string HardwareID;
  [Description("The print provider needed for this driver.") : Amended ToSubclass] string provider;
  [Description("The print processor needed for this driver.") : Amended ToSubclass] string PrintProcessor;
  [Description("The vendor’s setup dll and entrypoint for this driver.") : Amended ToSubclass] string VendorSetup;
  [Description("Any color profiles associated with this driver.") : Amended ToSubclass] string ColorProfiles[];
  [key,Description("Path to this driver’s INF file in the driver store.") : Amended ToSubclass] string InfPath;
  [Description("Indicates whether this driver is package-aware.") : Amended ToSubclass] boolean IsPackageAware;
  [Description("A list of core printer drivers this driver depends on.") : Amended ToSubclass] string CoreDriverDependencies[];
  [Description("A list previous driver names that are compatible with this driver.") : Amended ToSubclass] string PreviousCompatibleNames[];
  [Description("Installs a print driver into the print server's driver store.") : Amended ToSubclass] uint32 Add([In,Description("The name for the driver.") : Amended ToSubclass] string Name,[In,Description("The path to the driver's INF file.") : Amended ToSubclass] string InfPath,[In,Description("The environment for the server.") : Amended ToSubclass] string PrinterEnvironment,[In,Description("The name of the server that the printer driver will be added to.") : Amended ToSubclass] string ComputerName);
};

[Version("1.0") : Amended,Description("Contains printer data for an NFC tag.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterNfcTag
{
  [Description("UNC share paths for the printer.") : Amended ToSubclass] string SharePath[];
  [Description("WSD addresses for the printer.") : Amended ToSubclass] string WsdAddress[];
  [Description("Indicates whether the tag is locked, preventing changes to the tag's contents.") : Amended ToSubclass] boolean Locked;
};

[Description("Exposes methods for reading and writing Printer NFC tags.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterNfcTagTasks
{
  [Description("Writes printer connection data to the next NFC tag tapped against the system\\'s default NFC writer.") : Amended ToSubclass] uint32 WriteByManualSpecification([In,Description("Specifies one or more share paths (e.g. \\printServer\\shareName) to be written to the tag") : Amended ToSubclass] string SharePath[],[In,Description("Specifies one or more WSD host addresses to be written to the tag.") : Amended ToSubclass] string WsdAddress[],[In,Description("Specifies whether to lock the tag to prevent changes to the tag's contents.") : Amended ToSubclass] boolean Lock);
  [Description("Writes printer connection data to the next NFC tag tapped against the system\\'s default NFC writer.") : Amended ToSubclass] uint32 WriteByPrinterNfcTag([In,Description("Specifies the printer to encode on the NFC tag, by NfcTag object (as returned from read-printernfctag)") : Amended ToSubclass] MSFT_PrinterNfcTag InputObject);
  [Description("Reads printer connection data from the next NFC tag tapped against the system\\'s default NFC reader.") : Amended ToSubclass] uint32 Read([Out,Description("The returned NFC data.") : Amended ToSubclass] MSFT_PrinterNfcTag cmdletOutput);
};

[Version("1.0") : Amended,Description("Provides static methods for adding ports.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterPortTasks
{
  [Description("Creates a new local printer port on a given server") : Amended ToSubclass] uint32 AddByLocalPort([In,Description("The name of the server that the printer port will be added to.") : Amended ToSubclass] string ComputerName,[In,Description("The name of the port.") : Amended ToSubclass] string Name);
  [Description("Creates a new LPR printer port on a given server") : Amended ToSubclass] uint32 AddByLprPort([In,Description("The name of the server that the printer port will be added to.") : Amended ToSubclass] string ComputerName,[In,Description("The name of the server hosting the LPR device.") : Amended ToSubclass] string HostName,[In,Description("The LPR name of the printer.") : Amended ToSubclass] string PrinterName);
  [Description("Creates a new TCP/IP printer port on a given server in TCP mode.") : Amended ToSubclass] uint32 AddByTcpPort([In,Description("The name of the server that the printer port will be added to.") : Amended ToSubclass] string ComputerName,[In,Description("The name of the port.") : Amended ToSubclass] string Name,[In,Description("The TCP/IP port number.  Defaults to 9100.") : Amended ToSubclass] uint32 PortNumber,[In,Description("The host address of the tcp port.") : Amended ToSubclass] string PrinterHostAddress,[In,Description("Enables SNMP and specifies the index.") : Amended ToSubclass] uint32 SNMP,[In,Description("The SNMP Community Name.  Must be specified if SNMP is enabled.") : Amended ToSubclass] string SNMPCommunity);
  [Description("Creates a new TCP/IP printer port on a given server in LPR mode.") : Amended ToSubclass] uint32 AddByTcpPortLprMode([In,Description("Specifies the name of the server that the printer port will be added to. ") : Amended ToSubclass] string ComputerName,[In,Description("Enables LPR Byte Counting.") : Amended ToSubclass] boolean LprByteCounting,[In,Description("The host address of the LPR port.") : Amended ToSubclass] string LprHostAddress,[In,Description("The LPR queue name.") : Amended ToSubclass] string LprQueueName,[In,Description("The name of the port.") : Amended ToSubclass] string Name,[In,Description("The TCP/IP port number.  Defaults to 515.") : Amended ToSubclass] uint32 PortNumber,[In,Description("Enables SNMP and specifies the index.") : Amended ToSubclass] uint32 SNMP,[In,Description("The SNMP Community Name.  Must be specified if SNMP is enabled.") : Amended ToSubclass] string SNMPCommunity);
};

[Description("Represents a driver property set on a print queue") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_PrinterProperty : CIM_ManagedElement
{
  [key,Description("The name of the server the printer resides on.") : Amended ToSubclass] string ComputerName;
  [key,Description("The name of the printer this property belongs to.") : Amended ToSubclass] string PrinterName;
  [key,Description("The name of the property set on the printer.") : Amended ToSubclass] string PropertyName;
  [key,Description("The type (boolean, integer or string) of the property.") : Amended ToSubclass] uint32 Type;
  [Description("The value of the property.") : Amended ToSubclass] string Value;
  [Description("Sets properties on the specified printer") : Amended ToSubclass] uint32 SetByPrinterName([In,Description("Specifies the server on which the printer is located.") : Amended ToSubclass] string ComputerName,[In,Description("Specifies the printer for which to set properties.") : Amended ToSubclass] string PrinterName,[In,Description("Specifies the property to modify.") : Amended ToSubclass] string PropertyName,[In,Description("Specifies the new property value.") : Amended ToSubclass] string Value);
  [Description("Sets properties via an MSFT_PrinterProperty object") : Amended ToSubclass] uint32 SetByPrinterPropertyObject([In,Description("Specifies the property to set.") : Amended ToSubclass] MSFT_PrinterProperty InputObject);
  [Description("Sets driver properties via an MSFT_Printer object") : Amended ToSubclass] uint32 SetByPrinterObject([In,Description("Specifies a printer object to change the property on.") : Amended ToSubclass] MSFT_Printer PrinterObject,[In,Description("Specifies the property to modify.") : Amended ToSubclass] string PropertyName,[In,Description("Specifies the new property value.") : Amended ToSubclass] string Value);
};

[Description("Represents a TCP/IP printer port") : Amended ToSubclass,Version("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_TcpIpPrinterPort : MSFT_PrinterPort
{
  [Description("The host address or IP of this port.") : Amended ToSubclass] string PrinterHostAddress;
  [Description("The host IP address of this port.") : Amended ToSubclass] string PrinterHostIP;
  [Description("The TCP/IP port address of this port.") : Amended ToSubclass] uint32 PortNumber;
  [Description("The SNMP Community for this port.") : Amended ToSubclass] string SNMPCommunity;
  [Description("The SNMP index for this port.") : Amended ToSubclass] uint32 SNMPIndex;
  [Description("Specifies whether SNMP is enabled for this port.") : Amended ToSubclass] boolean SNMPEnabled;
  [Description("The protocol (RAW or LPR) for this port.") : Amended ToSubclass] uint32 Protocol;
  [Description("The LPR Queue name for this port when configured for the LPR protocol.") : Amended ToSubclass] string LprQueueName;
  [Description("Specifies whether LPR byte counting is enabled for this port when configured for the LPR protocol.") : Amended ToSubclass] boolean LprByteCounting;
};
