Udostępnij za pośrednictwem


Tablice MOF

Tablica jest indeksowaną listą wartości danych, które są tego samego typu danych, do których można się odwołać. Oprócz tablic ciągowych i liczbowych moF obsługuje tablice obiektów osadzonych i odwołań.

Następujące reguły definiują tablicę MOF:

  • Nawiasy używane po identyfikatorze właściwości określają tablicę w definicji klasy.

    Class ArrayDataSample1
    {
        string strArray1[];
    };
    
  • Wszystkie tablice muszą być jednowymiarowe.

  • Tablice mogą być niezwiązane lub mają jawny rozmiar.

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

    Usługa WMI implementuje powiązane i niezwiązane tablice jako struktury SAFEARRAY, dzięki czemu usługa WMI może różnić wymiary tablicy w czasie wykonywania. W przypadku deklarowania tablicy o jawnym rozmiarze usługa WMI przechowuje rozmiar jako kwalifikator i traktuje rozmiar jako sugerowany maksymalny rozmiar. Jednak w razie potrzeby usługa WMI może rozszerzyć rozmiar. Zmiana jawnego rozmiaru nie ma wpływu na rzeczywiste dane.

  • Tablice są inicjowane przez określenie wartości odpowiedniego typu na liście rozdzielanej przecinkami.

    Class ArrayDataSample2
    {
        [key] string s;
        string strArray2[] = {"hello", "there"};
        sint32 dwArray[] = {1,2,3};
    };
    
  • Tablica odwołań jest zadeklarowana jako tablica ciągów ścieżki obiektu.

    Podczas deklarowania ciągu ścieżki obiektu nie umieszczaj odstępu między elementami ścieżki obiektu. W poniższym przykładzie opisano sposób deklarowania odwołania do ścieżki obiektu.

    Class ClassWithRefArray
        { 
        [key] string s; 
        object ref refArray[]; 
        };
    
    instance of ClassWithRefArray
        {
        s = 23;
        refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""};
        };
    
  • Tablicę można użyć jako parametru dla metody, ale nie jako wartości zwracanej dla parametru wejściowego lub wejściowego.

  • Wszystkie elementy w tablicy są tworzone jako wartości tego samego typu.

    Jeśli elementy tablicy są typu obiektu, można umieścić dowolny rodzaj obiektu w tablicy. Z drugiej strony, jeśli zadeklarujesz określony typ obiektu, usługa WMI zezwala tylko na obiekty tej klasy lub podklasy w tablicy. W poniższych przykładach pokazano deklaracje tablic, które obejmują używanie typu obiektu.

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