Tableaux MOF
Un tableau est une liste indexée de valeurs de données qui sont du même type de données, que vous pouvez référencer. En plus des tableaux de chaîne et numériques, MOF prend en charge les tableaux d’objets et de références incorporés.
Les règles suivantes définissent un tableau MOF :
Crochets utilisés après l’identificateur de propriété spécifient un tableau dans une définition de classe.
Class ArrayDataSample1 { string strArray1[]; };
Tous les tableaux doivent être unidimensionnels.
Les tableaux peuvent être non liés ou avoir une taille explicite.
Class MyClass { sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]); sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]); };
WMI implémente des tableaux délimités et non liés en tant que structures SAFEARRAY, ce qui permet à WMI de varier les dimensions du tableau au moment de l’exécution. Lorsque vous déclarez un tableau avec une taille explicite, WMI stocke la taille comme qualificateur et traite la taille comme la taille maximale suggérée. Toutefois, WMI peut développer la taille si nécessaire. La modification de la taille explicite n’a aucun effet sur les données réelles.
Les tableaux sont initialisés en spécifiant les valeurs du type approprié dans une liste séparée par des virgules.
Class ArrayDataSample2 { [key] string s; string strArray2[] = {"hello", "there"}; sint32 dwArray[] = {1,2,3}; };
Un tableau de références est déclaré sous la forme d’un tableau de chaînes de chemin d’accès d’objet.
Lors de la déclaration d’une chaîne de chemin d’accès d’objet, ne placez pas d’espace blanc entre les éléments du chemin d’accès de l’objet. L’exemple suivant décrit comment déclarer une référence de chemin d’accès d’objet.
Class ClassWithRefArray { [key] string s; object ref refArray[]; }; instance of ClassWithRefArray { s = 23; refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""}; };
Vous pouvez utiliser un tableau comme paramètre pour une méthode, mais pas comme valeur de retour pour un paramètre d’entrée ou de sortie d’entrée.
Tous les éléments d’un tableau sont créés en tant que valeurs du même type.
Si les éléments d’un tableau sont de type objet, vous pouvez placer n’importe quel type d’objet dans le tableau. En revanche, si vous déclarez un type spécifique d’objet, WMI autorise uniquement les objets de cette classe ou sous-classe dans le tableau. Les exemples suivants montrent les déclarations de tableau qui incluent l’utilisation de l’objet type.
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;} }; };