Compartilhar via


MgmtClassGen (gerenciamento gerador de classe com rigidez de tipos)

A ferramenta de gerenciamento altamente digitado classe Generator permite gerar rapidamente uma classe de early-bound gerenciada para uma classe específica do Windows Management Instrumentation (WMI). A classe gerada simplifica o código que você deve escrever para acessar uma instância da classe WMI.

A ferramenta de gerenciamento altamente digitado classe geradora é instalada automaticamente com o Visual Studio. Para iniciar a ferramenta, use o Prompt de comando Visual Studio. No prompt de comando, digite o seguinte:

mgmtclassgen WMIClass [options] 

Argumento

Descrição

WMIClass

A classe de instrumentação de gerenciamento do Windows para o qual gerar uma classe de early-bound gerenciada.

Opção

Descrição

/l idioma

Especifica o idioma no qual gerar a classe de early-bound gerenciada. Você pode especificar CS (C#; o padrão), VB (Visual Basic), MC (Managed Extensions for C++) ou JS (JScript) como o argumento de idioma.

/m máquina

Especifica o computador para se conectar, onde reside a classe WMI. O padrão é o computador local.

/n caminho

Especifica o caminho para o namespace do WMI que contém a classe WMI. Se você não especificar esta opção, a ferramenta gera código para WMIClass no padrão Root\cimv2 espaço para nome.

/o classnamespace

Especifica o.NET namespace no qual gerar a classe de código gerenciado. Se você não especificar esta opção, a ferramenta gera o namespace usando o namespace do WMI e o prefixo do esquema. O prefixo do esquema é a parte do nome da classe que precedem o caractere de sublinhado. Por exemplo, para o Win32_OperatingSystem classe no Root\cimv2 espaço para nome, a ferramenta geraria a classe raiz.CIMV2.Win32.

/p filepath

Especifica o caminho para o arquivo no qual salvar o código gerado. Se você não especificar esta opção, a ferramenta cria o arquivo no diretório atual. Nomes de classe e do arquivo no qual ele gera a classe usando o WMIClass argumento. O nome da classe e o arquivo são o mesmo que o nome da WMIClass. Se WMIClass contém um caractere de sublinhado, a ferramenta usa a parte do nome da classe que segue o caractere de sublinhado. Por exemplo, se o WMIClass nome está no formato Win32_LogicalDisk, a classe gerada e o arquivo é denominado "logicaldisk". Se um arquivo já existir, a ferramenta substitui o arquivo existente.

/pw senha

Especifica a senha para usar ao fazer logon em um computador especificado pelo /m opção.

/u nome de usuário

Especifica o nome de usuário para usar ao fazer logon em um computador especificado pelo /m opção.

/?

Exibe sintaxe de comando e opções para a ferramenta.

Comentários

MgmtClassGen. exe usa o ManagementClass.GetStronglyTypedClassCode método. Portanto, você pode usar qualquer provedor de código personalizado para gerar o código gerenciadas linguagens diferentes, por exemplo, C#, Visual Basic e JScript.

Observe que as classes geradas estão vinculados ao esquema para o qual eles são gerados. Se o esquema subjacente for alterado, você deve regenerar a classe se desejar para refletir as alterações no esquema.

A tabela a seguir mostra como os tipos de WMI Common Information Model (CIM) são mapeados para tipos de dados em uma classe gerada:

Tipo CIM

Tipo de dados na classe gerada

CIM_SINT8

SByte

CIM_UINT8

Byte

CIM_SINT16

Int16

CIM_UINT16

UInt16

CIM_SINT32

Int32

SIM_UINT32

UInt32

CIM_SINT64

Int64

CIM_UINT64

UInt64

CIM_REAL32

Simples

CIM_REAL64

Double

CIM_BOOLEAN

Boolean

CIM_String

String

CIM_DATETIME

DateTime ou TimeSpan

CIM_REFERENCE

ManagementPath

CIM_CHAR16

Char

CIM_OBJECT

ManagementBaseObject

CIM_IUNKNOWN

Object

CIM_ARRAY

Matriz de objetos mencionados acima

Quando você gera uma classe WMI, observe os seguintes comportamentos:

  • É possível para um pública propriedade ou método padrão para ter o mesmo nome de um método ou propriedade existente. Se isso ocorrer, a ferramenta altera o nome da propriedade ou método na classe gerada para evitar conflitos de nomes.

  • É possível que o nome de uma propriedade ou método em uma classe gerada para ser uma palavra-chave na linguagem de programação de destino. Se isso ocorrer, a ferramenta altera o nome da propriedade ou método na classe gerada para evitar conflitos de nomes.

  • No WMI, os qualificadores são modificadores que contêm informações para descrever uma classe, ocorrência, propriedade ou método. O WMI usa os qualificadores padrão como leitura, gravar, e chave para descrever uma propriedade em uma classe gerada. Por exemplo, uma propriedade que é modificada com um leitura qualificador é definido somente com uma propriedade obter acessador na classe gerada. Porque uma propriedade marcada com o leitura qualificador destina-se a ser somente leitura, um set acessador não está definido.

  • Uma propriedade numérica pode ser modificada com o valores e ValueMaps qualificadores para indicar que a propriedade pode ser definida apenas para especificados os valores permitidos. Uma enumeração é gerada com esses valores e ValueMaps e a propriedade é mapeada para a enumeração.

  • O WMI usa singleton termo para descrever uma classe que pode ter apenas uma instância. Portanto, o construtor padrão para uma classe singleton inicializará a classe para a única instância da classe.

  • Uma classe WMI pode ter propriedades que são objetos. Quando você gera uma classe com rigidez de tipos para esse tipo de classe do WMI, você deve considerar Gerando classes de rigidez de tipos para os tipos de propriedades do objeto incorporado. Isso permitirá que você acesse objetos incorporados de maneira rigidez de tipos. Observe que o código gerado pode não ser capaz de detectar o tipo de objeto incorporado. Nesse caso, um comentário será criado no código gerado para notificá-lo desse problema. Em seguida, você pode modificar o código gerado para digitar a propriedade para a classe gerada.

  • No WMI, o valor de dados do tipo de dados CIM_DATETIME pode representar uma determinada data e hora ou um intervalo de tempo. Se o valor de dados representa uma data e hora, o tipo de dados na classe gerado é DateTime. Se o valor de dados representa um intervalo de tempo, o tipo de dados na classe gerado é TimeSpan.

Como alternativa, você pode gerar uma classe com rigidez de tipos, usando a extensão de gerenciamento do Server Explorer em Visual Studio.NET.

Para obter mais informações sobre o WMI, consulte o Windows Management Instrumentation tópico na documentação do Platform SDK.

Exemplos

O comando a seguir gera uma classe gerenciada no código do C# para o Win32_LogicalDisk classe WMI a Root\cimv2 espaço para nome. A ferramenta grava a classe gerenciada para o arquivo de origem em c:\disk.cs na raiz.CIMV2.Win32 espaço para nome.

mgmtclassgen Win32_LogicalDisk /n root\cimv2 /l CS /p c:\disk.cs

O exemplo de código a seguir mostra como usar uma classe gerada através de programação. Primeiro, uma instância da classe é enumerada e o caminho é impresso. Em seguida, uma instância da classe gerada para ser inicializado é criada com uma instância de WMI. Processé a classe gerada para Win32_Process e LogicalDisk é a classe gerada para Win32_LogicalDisk na Root\cimv2 espaço para nome.

Imports System
Imports System.Management
Imports ROOT.CIMV2.Win32

Public Class App   
   Public Shared Sub Main()      
      ' Enumerate instances of the Win32_process.
      ' Print the Name property of the instance.
      Dim ps As Process   
      For Each ps In  Process.GetInstances()
         Console.WriteLine(ps.Name)
      Next ps
      
      ' Initialize the instance of LogicalDisk with
      ' the WMI instance pointing to logical drive d:.
      Dim dskD As New LogicalDisk(New _
         ManagementPath("win32_LogicalDisk.DeviceId=""d:"""))
      Console.WriteLine(dskD.Caption)
   End Sub
End Class
using System;
using System.Management;
using ROOT.CIMV2.Win32;

public class App
{
   public static void Main()
   {
      // Enumerate instances of the Win32_process.
      // Print the Name property of the instance.
      foreach(Process ps in Process.GetInstances())
      {
         Console.WriteLine(ps.Name);
      }

      // Initialize the instance of LogicalDisk with
      // the WMI instance pointing to logical drive d:.
      LogicalDisk dskD = new LogicalDisk(new ManagementPath(
        "win32_LogicalDisk.DeviceId=\"d:\""));
      Console.WriteLine(dskD.Caption);
   }
}

Consulte também

Referência

System.Management

ManagementClass.GetStronglyTypedClassCode

System.CodeDom.Compiler.CodeDomProvider

Prompt de comando Visual Studio

Outros recursos

Ferramentas.NET Framework