Cómo utilizar objetos con establecimiento inflexible de tipos

Para satisfacer las necesidades de extensión de los clientes, los objetos WMI se suelen enlazar en tiempo de ejecución, lo que no fuerza el establecimiento inflexible de los tipos. En el entorno .NET Framework, WMI permite generar automáticamente contenedores enlazados en tiempo de compilación para objetos WMI.

Los contenedores con establecimiento inflexible de tipos permiten a las aplicaciones aprovechar todas las características de ayuda de Microsoft Visual Studio disponibles, como Intellisense y exploración de objetos, para los objetos con establecimiento inflexible de tipos. Por ejemplo, puede generar un contenedor de enlace en tiempo de ejecución para la clase Win32_Service a fin de poder utilizar Intellisense para buscar rápidamente los miembros en la clase Win32_Service. La siguiente lista contiene las herramientas y los métodos que generan contenedores para objetos WMI.

Los contenedores se implementan como clases de código administrado y, como tales, proporcionan compatibilidad con varios lenguajes para poder utilizarlos con cualquier lenguaje de programación.

Ejemplo

En el siguiente ejemplo de código se incluye la clase con establecimiento inflexible de tipos Service, que es un contenedor de la clase Win32_Service. Para ejecutar este ejemplo, antes debe generar una clase específica mediante el siguiente comando desde la línea de comandos de Visual Studio 2005 (cambie el valor del lenguaje de código en función de si desea generar un archivo de código C# o Visual Basic .NET):

C:\> MgmtClassGen Win32_Service /L CS /N root\cimv2 /P C:\temp\service.cs

El resultado de la herramienta de generador será el archivo de código .cs del servicio, que se debe agregar a continuación al proyecto junto con el código que aparece abajo. Observe el uso de la clase con establecimiento inflexible de tipos "Service" en la instrucción foreach en vez de la clase genérica ManagementObject y el uso de la notación estándar simplificada que emplea puntos para el acceso a las propiedades de los objetos devueltos.

Imports System
Imports ROOT.CIMv2.Win32
' Contains the strongly typed generated class "Service" 
' in ROOT.CIMV2.Win32 namespace. This namespace was
' generated using the MgmtClassGen tool for
' the Win32_Service class

Public Class Sample

    Public Function EnumerateServices()
        Console.WriteLine("List services and their state")

        ' Enumerate through the collection
        Dim serv As Service
        For Each serv In Services.GetInstances()
            Console.WriteLine("Service: {0} is {1}", _
            serv.Name, serv.State)
        Next serv

    End Function

    Public Overloads Shared Function _
        Main(ByVal args() As String) As Integer

        Dim test As New Sample
        test.EnumerateServices()
    End Function
End Class
using System;
using ROOT.CIMV2.Win32;
// Contains the strongly typed generated class "Service" 
// in ROOT.CIMV2.Win32 namespace. This namespace was
// generated using the MgmtClassGen tool for
// the Win32_Service class
   
class Sample 
{
    // Enumerate instances of Win32_Service class
    void EnumerateServices() 
    {
        Console.WriteLine("List services and their state");
        foreach(Service ser in Service.GetInstances())
        Console.WriteLine(
            "Service: "+ ser.Name + " is " + ser.State);
    }
   
    public static void Main(string[] args) 
    {
        Sample test = new Sample();
        test.EnumerateServices();
        return;
    }
}

Compilar el código

El ejemplo requiere referencias al espacio de nombres System.

Consulte también

Conceptos

Advanced Programming Topics in WMI .NET

Send comments about this topic to Microsoft.

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.