Freigeben über


MOF-Arrays

Ein Array ist eine indizierte Liste von Datenwerten, die denselben Datentyp aufweisen, auf den Sie verweisen können. Zusätzlich zu Zeichenfolgen und numerischen Arrays unterstützt MOF Arrays eingebetteter Objekte und Verweise.

Die folgenden Regeln definieren ein MOF-Array:

  • 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 aufweisen.

    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, wodurch WMI arraydimensionen zur Laufzeit variieren kann. Wenn Sie ein Array mit einer expliziten Größe deklarieren, speichert WMI die Größe als Qualifizierer und behandelt die Größe als vorgeschlagene maximale Größe. WMI kann die Größe jedoch bei Bedarf 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 Array von Objektpfadzeichenfolgen deklariert.

    Platzieren Sie beim Deklarieren einer Objektpfadzeichenfolge keinen Leerraum zwischen den Elementen des Objektpfads. Im folgenden Beispiel wird das Deklarieren eines Objektpfadverweises beschrieben.

    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 verwenden, aber nicht als Rückgabewert für einen Eingabe- oder Eingabeausgabeparameter.

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

    Wenn die Elemente eines Arrays vom Objekttyp Typs sind, können Sie eine beliebige Art von Objekt im Array platzieren. Wenn Sie dagegen einen bestimmten Objekttyp deklarieren, lässt WMI nur Objekte dieser Klasse oder Unterklasse im Array zu. Die folgenden Beispiele zeigen Arraydeklarationen, die das Objekt Typ verwenden.

    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;}
                   };
    };