Driver-Defined éléments de données WMI
Un élément de données dans une définition de classe de données WMI ou d’un bloc d’événements peut être l’un des éléments suivants :
Type de données de base tel qu’une chaîne ou un entier non signé.
Classe incorporée. Une classe incorporée est utilisée uniquement comme élément de données dans une autre définition de classe et n’est pas exposée en tant que bloc de données ou bloc d’événements.
Tableau de longueur fixe ou de longueur variable d’un type de données de base ou d’une classe incorporée.
Lors de l’envoi d’un bloc de données à WMI, un pilote doit aligner le début du bloc sur une limite de 8 octets. Tous les éléments de données suivants dans le bloc doivent être alignés sur l’alignement correspondant pour le type de données. Une valeur booléenne ou uint8 doit être alignée sur une limite de 1 octet. Un élément sint16, uint16 ou chaîne doit être aligné sur une limite de 2 octets, et ainsi de suite. Les tableaux doivent être alignés en fonction du type de base du tableau. Un tableau d’octets doit être aligné sur une limite d’octets, un tableau d’uint64 doit être aligné sur une limite de 8 octets, et ainsi de suite. Une classe incorporée doit être alignée en fonction de l’alignement naturel de la classe incorporée qui est définie comme étant le plus grand élément au sein de la classe incorporée. Par exemple, si une classe incorporée a un uint64, la classe doit être alignée sur une limite de 8 octets. L’alignement des éléments de données WMI suit les mêmes conventions que le commutateur /Zp8 sur le compilateur Microsoft C.
Un enregistreur de pilote n’a pas nécessairement besoin de définir des éléments de données dans un bloc autre que les éléments InstanceName et Active requis. Par exemple, un bloc d’événements vide peut servir de notification qu’un événement s’est produit, sans données supplémentaires. Un bloc de données peut simplement énumérer instance noms en réponse à une demande de IRP_MN_QUERY_ALL_DATA.
Le tableau suivant répertorie les types de données MOF qui peuvent être utilisés pour définir des éléments dans un bloc de données ou d’événements WMI. Pour plus d’informations sur les types de données MOF, consultez la Microsoft Windows SDK.
Type de données | Format de données | Alignement (en octets) |
---|---|---|
string |
USHORT spécifiant la longueur de chaîne en octets, suivie des données de chaîne Unicode. Les données de chaîne peuvent éventuellement inclure un 0 de fin suivi d’un remplissage. Si c’est le cas, la longueur de chaîne doit inclure la fin 0 et le remplissage. Les pilotes peuvent utiliser le qualificateur MaxLen pour spécifier la longueur maximale en caractères de la chaîne. Les pilotes qui spécifient une longueur de chaîne maximale peuvent utiliser une mémoire tampon de taille fixe pour contenir la chaîne. Si la chaîne est strictement plus petite que la taille de la mémoire tampon, le pilote peut remplir le reste de la chaîne avec des zéros. |
2 |
Booléen |
Valeur d’un octet où 0 est FALSE et toute valeur différente de zéro est TRUE |
1 |
sint8 |
Entier 8 bits signé |
1 |
uint8 |
Entier 8 bits non signé |
1 |
sint16 |
Entier 16 bits signé |
2 |
uint16 |
Entier 16 bits non signé |
2 |
sint32 |
Entier 32 bits signé |
4 |
uint32 |
Entier 32 bits non signé |
4 |
sint64 |
Entier 64 bits signé |
8 |
uint64 |
Entier 64 bits non signé |
8 |
datetime |
Chaîne Unicode de 25 caractères de longueur fixe qui spécifie un intervalle de date ou d’heure absolu. Une valeur datetime a le format suivant : aaaammddhhmmsss.mmmmmmsutc où : yyyy est l’année à 4 chiffres mm est le mois à 2 chiffres dd est le jour à 2 chiffres du mois hh est l’heure selon une horloge de 24 heures mm est la minute ss correspond aux secondes mmmmmm est le nombre de microsecondes s est un signe plus (+) ou un signe moins (-), indiquant si utc est un décalage positif ou négatif par rapport aux coordonnées temporelles universelles ; ou un signe deux-points (:), indiquant que la valeur datetime est un intervalle. utc est le décalage en minutes par rapport aux coordonnées de temps universel. Si utc est égal à zéro (000), la valeur datetime est un intervalle. Les valeurs doivent être non rembourrées. Les champs qui ne sont pas significatifs peuvent être remplis avec des astérisque (*). |
2 |