#pragma autorecover
#pragma namespace("\\\\.\\Root")

Instance of __Namespace
{
  Name = "Microsoft";
};
#pragma namespace("\\\\.\\Root\\Microsoft")

Instance of __Namespace
{
  Name = "SqlServer";
};
#pragma namespace("\\\\.\\root\\Microsoft\\SqlServer")

Instance of __Namespace
{
  Name = "ComputerManagement12";
};
#pragma namespace("\\\\.\\root\\Microsoft\\SqlServer\\ComputerManagement12")

Instance of __Win32Provider as $InstProv
{
  Name = "RegProv";
  ClsId = "{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}";
  ImpersonationLevel = 1;
  PerUserInitialization = TRUE;
};

Instance of __InstanceProviderRegistration
{
  Provider = $InstProv;
  SupportsPut = TRUE;
  SupportsGet = TRUE;
  SupportsDelete = TRUE;
  SupportsEnumeration = TRUE;
};

Instance of __Win32Provider as $P
{
  Name = "MSSQL_ManagementProvider";
  ClsId = "{60E01B07-DF80-4C9B-B7E3-998D515BBD76}";
  ImpersonationLevel = 1;
  PerUserInitialization = TRUE;
};

Instance of __InstanceProviderRegistration
{
  Provider = $P;
  SupportsGet = TRUE;
  SupportsPut = TRUE;
  SupportsDelete = TRUE;
  SupportsEnumeration = TRUE;
  QuerySupportLevels = {"WQL:UnarySelect"};
};

Instance of __MethodProviderRegistration
{
  Provider = $P;
};

[dynamic,provider("RegProv"),ClassContext("local|HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SQL Server\\Services\\")] 
class RegServices
{
  [key] string ServiceType;
  [PropertyContext("Name")] string Name;
  [PropertyContext("LName")] string LName;
  [PropertyContext("Type")] uint32 Type;
};

Instance of RegServices
{
  LName = "msftesql$";
  Name = "msftesql";
  ServiceType = "Full Text";
  Type = 3;
};

Instance of RegServices
{
  LName = "MSOLAP$";
  Name = "MSSQLServerOLAPService";
  ServiceType = "Analysis Server";
  Type = 5;
};

Instance of RegServices
{
  LName = "SQLAgent$";
  Name = "SQLSERVERAGENT";
  ServiceType = "SQL Agent";
  Type = 2;
};

Instance of RegServices
{
  LName = "MSSQL$";
  Name = "MSSQLServer";
  ServiceType = "SQL Server";
  Type = 1;
};

Instance of RegServices
{
  LName = "ReportServer$";
  Name = "ReportServer";
  ServiceType = "Report Server";
  Type = 6;
};

Instance of RegServices
{
  LName = "";
  Name = "MsDtsServer";
  ServiceType = "SSIS Server";
  Type = 4;
};

Instance of RegServices
{
  LName = "";
  Name = "SQLBrowser";
  ServiceType = "SQL Browser";
  Type = 7;
};

Instance of RegServices
{
  LName = "NS$";
  Name = "NsService";
  ServiceType = "Notification Services";
  Type = 8;
};

Instance of RegServices
{
  LName = "MSSQLFDLauncher$";
  Name = "MSSQLFDLauncher";
  ServiceType = "Full-text Filter Daemon Launcher";
  Type = 9;
};

[dynamic,provider("MSSQL_ManagementProvider")] 
class SqlService
{
  [key,read : ToInstance] string ServiceName;
  [key,read : ToInstance] uint32 SQLServiceType;
  [read,MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpBinaryPathName"}] string BinaryPath;
  [read] string HostName;
  [ValueMap{"0", "1", "2", "3", "4"},Values{"Boot", "System", "Automatic", "Manual", "Disabled"} : ToInstance,read] uint32 StartMode;
  [read,MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_PAUSE_CONTINUE"}] boolean AcceptPause;
  [read,MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_STOP"}] boolean AcceptStop;
  [read,MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpDisplayName"}] string DisplayName;
  [read,MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|dwErrorControl"},Values{"Ignore", "Normal", "Severe", "Critical", "Unknown"},ValueMap{"Ignore", "Normal", "Severe", "Critical", "Unknown"}] uint32 ErrorControl;
  [read,MappingStrings{"Win32API|Service Structures|QUERY_SERVICE_CONFIG|lpServiceStartName"}] string StartName;
  [read,MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwCurrentState "},Values{"1", "2", "3", "4", "5", "6", "7"},ValueMap{"Stopped", "Start Pending", "Stop Pending", "Running", "Continue Pending", "Pause Pending", "Paused"}] uint32 State;
  [read,MappingStrings{"Win32API|Service Structures|SERVICE_STATUS_PROCESS|dwProcessId"}] uint32 ProcessId;
  [read,MappingStrings{"Win32API|Service Structures|SERVICE_STATUS|dwWin32ExitCode"}] uint32 ExitCode;
  [read] string Description;
  [read] string Dependencies[];
  [Implemented,MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_STOP"} : ToSubclass] uint32 StopService();
  [Implemented,Values{"Success", "Not Supported", "Access Denied", "Dependent Services Running", "Invalid Service Control", "Service Cannot Accept Control", "Service Not Active", "Service Request Timeout", "Unknown Failure", "Path Not Found", "Service Already Running", "Service Database Locked", "Service Dependency Deleted", "Service Dependency Failure", "Service Disabled", "Service Logon Failed", "Service Marked For Deletion", "Service No Thread", "Status Circular Dependency", "Status Duplicate Name", "Status Invalid Name", "Status Invalid Parameter", "Status Invalid Service Account", "Status Service Exists", "Service Already Paused"},MappingStrings{"Win32API|Service Functions|StartService"}] uint32 StartService();
  [Implemented,MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_PAUSE"}] uint32 PauseService();
  [Implemented,MappingStrings{"Win32API|Service Functions|ControlService|dwControl|SERVICE_CONTROL_CONTINUE"}] uint32 ResumeService();
  [Implemented] uint32 SetServiceAccount([in] string ServiceStartName,[in] string ServiceStartPassword);
  [Implemented] uint32 SetServiceAccountPassword([in] string AccountOldPassword,[in] string AccountNewPassword);
  [Implemented] uint32 SetStartMode([in] uint32 StartMode);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class SqlServiceAdvancedProperty
{
  [key,read : ToInstance] string ServiceName;
  [key,read : ToInstance] uint32 SqlServiceType;
  [key,read] string PropertyName;
  [key,read] uint32 PropertyIndex;
  [read] uint32 PropertyValueType;
  [read] uint32 PropertyNumValue;
  [read] string PropertyStrValue;
  [read] boolean IsReadOnly;
  [Implemented] uint32 SetNumericalValue([IN] uint32 NumValue);
  [Implemented] uint32 SetStringValue([IN] string StrValue);
  [Implemented] uint32 SetBoolValue([IN] uint32 BoolValue);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class SecurityCertificate
{
  [key,read : ToInstance] string SHA;
  [read] string IssuedTo;
  [read] string IssuedBy;
  [read] string FriendlyName;
  [key,read : ToInstance] string Name;
  [read] uint32 ExpirationDate;
  [read] uint32 StartDate;
  [read] sint32 Context[];
  [key,read : ToInstance] string SystemStore;
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ClientSettings
{
  [key,read : ToInstance] string InstanceName;
  [Implemented] uint32 SetDefaults([IN] boolean OverwriteAll);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ClientNetLibInfo
{
  [key,read : ToInstance] string ProtocolName;
  [key,read : ToInstance] string FileName;
  [read] string ProtocolDisplayName;
  [read] string Version;
  [read] uint32 Date;
  [read] uint32 Size;
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ClientNetworkProtocol
{
  [key,read : ToInstance] string ProtocolName;
  [read] uint32 ProtocolOrder;
  [read] string ProtocolDisplayName;
  [read] string ProtocolDLL;
  [read] boolean SupportAlias;
  [Implemented] uint32 GetNextOrderValue();
  [Implemented] uint32 SetOrderValue([IN] uint32 OrderValue);
  [Implemented] uint32 SetEnable();
  [Implemented] uint32 SetDisable();
  [Implemented] uint32 SetProtocolsOrder([IN] string ProtocolOrderList[]);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ClientNetworkProtocolProperty
{
  [key,read : ToInstance] string ProtocolName;
  [key,read : ToInstance] uint32 PropertyType;
  [key,read : ToInstance] uint32 PropertyIdx;
  [read] string PropertyName;
  [read] uint32 PropertyValType;
  [read] uint32 PropertyNumVal;
  [read] string PropertyStrVal;
  [Implemented] uint32 SetNumericalValue([IN] uint32 NumValue);
  [Implemented] uint32 SetStringValue([IN] string StrValue);
  [Implemented] uint32 SetFlag([IN] boolean BoolValue);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class SqlServerAlias
{
  [key] string AliasName;
  string ServerName;
  string ProtocolName;
  string ConnectionString;
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ServerNetworkProtocol
{
  [key,read : ToInstance] string InstanceName;
  [key,read : ToInstance] string ProtocolName;
  [read] string ProtocolDisplayName;
  [read] boolean Enabled;
  [read] boolean MultiIpConfigurationSupport;
  [Implemented] uint32 SetEnable();
  [Implemented] uint32 SetDisable();
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ServerNetworkProtocolIPAddress
{
  [key,read : ToInstance] string InstanceName;
  [key,read : ToInstance] string ProtocolName;
  [key,read : ToInstance] string IpAddressName;
  [read] boolean Enabled;
  [Implemented] uint32 SetEnable();
  [Implemented] uint32 SetDisable();
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ServerNetworkProtocolProperty
{
  [key,read : ToInstance] string InstanceName;
  [key,read : ToInstance] string ProtocolName;
  [key,read : ToInstance] string IPAddressName;
  [key,read : ToInstance] string PropertyName;
  [key,read : ToInstance] uint32 PropertyType;
  [read] uint32 PropertyValType;
  [read] uint32 PropertyNumVal;
  [read] string PropertyStrVal;
  [Implemented] uint32 SetNumericalValue([IN] uint32 NumValue);
  [Implemented] uint32 SetStringValue([IN] string StrValue);
  [Implemented] uint32 SetFlag([IN] boolean BoolValue);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ServerSettings
{
  [key,read : ToInstance] string InstanceName;
  [Implemented] uint32 SetDefaults([IN] boolean OverwriteAll);
  [Implemented] uint32 GetCurrentCertificate([OUT] string SHA);
  [Implemented] uint32 SetCurrentCertificate([IN] string SHA);
  [Implemented] uint32 RemoveCertificate();
  [Implemented] uint32 GetDacTcpPort([OUT] string Port);
  [Implemented] uint32 SetDacTcpPort([IN] string Port);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ServerSettingsGeneralFlag
{
  [key,read : ToInstance] string InstanceName;
  [key,read : ToInstance] string FlagName;
  [read] boolean FlagValue;
  [Implemented] uint32 SetValue([IN] boolean Value);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ClientSettingsGeneralFlag
{
  [key,read : ToInstance] string InstanceName;
  [key,read : ToInstance] uint32 FlagIndex;
  [read] string FlagName;
  [read] boolean FlagValue;
  [Implemented] uint32 SetValue([IN] boolean Value);
};

[provider("MSSQL_ManagementProvider") : ToInstance ToSubclass,dynamic : ToInstance DisableOverride] 
class ServerSettingsExtendedProtection
{
  [key,read : ToInstance] string InstanceName;
  uint32 ExtendedProtection;
  string AcceptedNTLMSPNs[];
};
