Sdílet prostřednictvím


Pole MOF

Pole je indexovaný seznam datových hodnot, které jsou stejného datového typu, na který můžete odkazovat. Kromě řetězců a číselných polí podporuje MOF pole vložených objektů a odkazů.

Následující pravidla definují pole MOF:

  • Hranaté závorky použité po identifikátoru vlastnosti určují pole v definici třídy.

    Class ArrayDataSample1
    {
        string strArray1[];
    };
    
  • Všechna pole musí být jednorozměrná.

  • Pole můžou být nevázaná nebo mají explicitní velikost.

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

    Rozhraní WMI implementuje ohraničená a nevázaná pole jako struktury SAFEARRAY, což umožňuje rozhraní WMI měnit rozměry pole za běhu. Když deklarujete pole s explicitní velikostí, WMI uloží velikost jako kvalifikátor a považuje velikost za navrženou maximální velikost. Rozhraní WMI však může v případě potřeby zvětšit velikost. Změna explicitní velikosti nemá žádný vliv na skutečná data.

  • Pole se inicializují zadáním hodnot odpovídajícího typu v seznamu odděleném čárkami.

    Class ArrayDataSample2
    {
        [key] string s;
        string strArray2[] = {"hello", "there"};
        sint32 dwArray[] = {1,2,3};
    };
    
  • Pole odkazů je deklarováno jako pole řetězců cesty objektu.

    Při deklarování řetězce cesty objektu neumisťujte prázdné znaky mezi prvky cesty objektu. Následující příklad popisuje, jak deklarovat odkaz na cestu objektu.

    Class ClassWithRefArray
        { 
        [key] string s; 
        object ref refArray[]; 
        };
    
    instance of ClassWithRefArray
        {
        s = 23;
        refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""};
        };
    
  • Pole můžete použít jako parametr pro metodu, ale ne jako návratovou hodnotu vstupního nebo vstupního výstupního parametru.

  • Všechny prvky v poli jsou vytvořeny jako hodnoty stejného typu.

    Pokud jsou prvky pole objektu typu, můžete do pole umístit libovolný druh objektu. Na druhou stranu, pokud deklarujete konkrétní typ objektu, WMI umožňuje pouze objekty této třídy nebo podtřídy v poli. Následující příklady ukazují deklarace pole, které zahrnují použití objektu typ.

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