Matrices MOF
Una matriz es una lista indizada de valores de datos que son del mismo tipo de datos y a los que se puede hacer referencia. Además de las matrices numéricas y de cadenas, MOF admite matrices de referencias y objetos incrustados.
Las reglas siguientes definen una matriz MOF:
Los corchetes después del identificador de propiedad especifican una matriz en una definición de clase.
Class ArrayDataSample1 { string strArray1[]; };
Todas las matrices deben ser unidimensionales.
Las matrices se pueden estar sin enlazar o tener un tamaño explícito.
Class MyClass { sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]); sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]); };
WMI implementa matrices limitadas y sin enlazar como estructuras SAFEARRAY, lo que permite que WMI varíe las dimensiones de la matriz en tiempo de ejecución. Al declarar una matriz con un tamaño explícito, WMI almacena el tamaño como un calificador y trata el tamaño como el tamaño máximo sugerido. Sin embargo, WMI puede expandir el tamaño si es necesario. Cambiar el tamaño explícito no tiene ningún efecto en los datos reales.
Las matrices se inicializan especificando valores del tipo adecuado en una lista separada por comas.
Class ArrayDataSample2 { [key] string s; string strArray2[] = {"hello", "there"}; sint32 dwArray[] = {1,2,3}; };
Una matriz de referencias se declara como una matriz de cadenas de ruta de acceso de objeto.
Al declarar una cadena de ruta de acceso de objeto, no coloque espacios en blanco entre los elementos de la ruta de acceso del objeto. En el ejemplo siguiente se describe cómo declarar una referencia de ruta de acceso de objeto.
Class ClassWithRefArray { [key] string s; object ref refArray[]; }; instance of ClassWithRefArray { s = 23; refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""}; };
Puede usar una matriz como parámetro para un método, pero no como un valor devuelto para un parámetro de entrada o de entrada-salida.
Todos los elementos de una matriz se crean como valores del mismo tipo.
Si los elementos de una matriz son de tipo objeto, puede colocar cualquier tipo de objeto en la matriz. Por otro lado, si declara un tipo específico de objeto, WMI solo permite objetos de esa clase o subclase en la matriz. En los ejemplos siguientes se muestran declaraciones de matriz que incluyen el uso del tipo objeto.
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;} }; };