Compartilhar via


Matrizes do MOF

Uma matriz é uma lista indexada de valores de dados que são do mesmo tipo de dados, os quais você pode referenciar. Além de matrizes numéricas e de cadeia de caracteres, o MOF dá suporte a matrizes de objetos inseridos e referências.

As seguintes regras definem uma matriz do MOF:

  • Colchetes usados após o identificador de propriedade especificar uma matriz em uma definição de classe.

    Class ArrayDataSample1
    {
        string strArray1[];
    };
    
  • Todas as matrizes devem ser unidimensionais.

  • As matrizes podem ser não limitadas ou ter um tamanho explícito.

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

    O WMI implementa matrizes limitadas e não limitadas como estruturas SAFEARRAY, o que permite que o WMI varie as dimensões da matriz em tempo de execução. Quando você declara uma matriz com um tamanho explícito, o WMI armazena o tamanho como um qualificador e trata o tamanho como o tamanho máximo sugerido. No entanto, o WMI pode expandir o tamanho, se necessário. Alterar o tamanho explícito não tem efeito sobre os dados reais.

  • As matrizes são inicializadas especificando valores do tipo apropriado em uma lista separada por vírgulas.

    Class ArrayDataSample2
    {
        [key] string s;
        string strArray2[] = {"hello", "there"};
        sint32 dwArray[] = {1,2,3};
    };
    
  • Uma matriz de referências é declarada como uma matriz de cadeias de caracteres de caminho de objeto.

    Ao declarar uma cadeia de caracteres de caminho de objeto, não coloque espaço em branco entre os elementos do caminho do objeto. O exemplo a seguir descreve como declarar uma referência de caminho de objeto.

    Class ClassWithRefArray
        { 
        [key] string s; 
        object ref refArray[]; 
        };
    
    instance of ClassWithRefArray
        {
        s = 23;
        refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""};
        };
    
  • Você pode usar uma matriz como um parâmetro para um método, mas não como um valor retornado em um parâmetro de entrada ou de entrada-saída.

  • Todos os elementos em uma matriz são criados como valores do mesmo tipo.

    Se os elementos de uma matriz forem do tipo object, você poderá colocar qualquer tipo de objeto na matriz. Por outro lado, se você declarar um tipo específico de objeto, o WMI permitirá apenas objetos dessa classe ou subclasse na matriz. Os exemplos a seguir mostram declarações de matriz que incluem o uso do tipo object.

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