MOF-Arrays

Ein Array ist eine indizierte Liste von Datenwerten desselben Datentyps, auf den Sie verweisen können. Zusätzlich zu Zeichenfolgen- und numerischen Arrays unterstützt MOF Arrays von eingebetteten Objekten und Verweisen.

Die folgenden Regeln definieren ein MOF-Array:

  • Eckige Klammern, die nach dem Eigenschaftenbezeichner verwendet werden, geben ein Array in einer Klassendefinition an.

    Class ArrayDataSample1
    {
        string strArray1[];
    };
    
  • Alle Arrays müssen eindimensional sein.

  • Arrays können ungebunden sein oder eine explizite Größe haben.

    Class MyClass
    {
        sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]);
        sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]);
    };
    

    WMI implementiert gebundene und ungebundene Arrays als SAFEARRAY-Strukturen, sodass WMI Arraydimensionen zur Laufzeit variieren kann. Wenn Sie ein Array mit einer expliziten Größe deklarieren, wird sie von WMI als Qualifizierer gespeichert und als die vorgeschlagene maximale Größe behandelt. WMI kann die Größe bei Bedarf jedoch erweitern. Das Ändern der expliziten Größe hat keine Auswirkungen auf die tatsächlichen Daten.

  • Arrays werden initialisiert, indem Werte des entsprechenden Typs in einer durch Trennzeichen getrennten Liste angegeben werden.

    Class ArrayDataSample2
    {
        [key] string s;
        string strArray2[] = {"hello", "there"};
        sint32 dwArray[] = {1,2,3};
    };
    
  • Ein Array von Verweisen wird als ein Array von Objektpfadzeichenfolgen deklariert.

    Fügen Sie beim Deklarieren einer Objektpfadzeichenfolge keinen Leerraum zwischen den Elementen des Objektpfads ein. Im folgenden Beispiel wird beschrieben, wie Sie einen Objektpfadverweis deklarieren.

    Class ClassWithRefArray
        { 
        [key] string s; 
        object ref refArray[]; 
        };
    
    instance of ClassWithRefArray
        {
        s = 23;
        refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""};
        };
    
  • Sie können ein Array als Parameter für eine Methode, aber nicht als Rückgabewert für einen Eingabe- oder Ein-/Ausgabeparameter verwenden.

  • Alle Elemente in einem Array werden als Werte desselben Typs erstellt.

    Wenn die Elemente eines Arrays vom Typ Objekt sind, können Sie eine beliebige Art von Objekt im Array einfügen. Wenn Sie aber einen bestimmten Objekttyp deklarieren, lässt WMI nur Objekte dieser Klasse oder Unterklasse im Array zu. Die folgenden Beispiele zeigen Arraydeklarationen, in denen die Verwendung des Typs Objekt enthalten ist.

    Class EmbedClass
    {
        [key] sint32 PropOfClass;
    };
    
    Class ArrayDataClass
    {
        [key] string s;
        string strArray1[];
        string strArray2[] = {"hello", "there"};
        sint32 dwArray[] = {1,2,3};
        EmbedClass objArray[];
    };
    
    instance of ArrayDataClass
    { 
        s = "keyStuff";
        strArray1 = { "1.2.3.4", "1.2.3.5", "1.2.3.7"};
        strArray2 = 
            {
                "SELECT * FROM RegistryKeyChangeEvent",
                "SELECT * FROM RegistryValueChangeEvent",
                "SELECT * FROM RegistryTreeChangeEvent"
            };
        dwArray  = { 1,2,3,5,6 };
        objArray = {
                       instance of EmbedClass{PropOfClass=3;},
                       instance of EmbedClass{PropOfClass=4;}
                   };
    };