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înes et numériques, MOF prend en charge les tableaux d’objets incorporés et de références.
Les règles suivantes définissent un tableau MOF :
Les 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 illimité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 limités en tant que structures SAFEARRAY, ce qui permet à WMI de faire 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 augmenter 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 des 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é en tant que tableau de chaînes de chemin d’accès d’objet.
Lorsque vous déclarez une chaîne de chemin d’accès d’objet, ne placez pas d’espace 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 à l’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 d’entrée-sortie.
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 des déclarations de tableau qui incluent l’utilisation du type objet.
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;} }; };