Partager via


Éléments de données WMI définis par le pilote

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 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 du 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 octets. Un élément sint16,uint16 ou string 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 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 rédacteur de pilotes n’a pas nécessairement besoin de définir des éléments de données dans un bloc autre que les éléments requis InstanceName et Active. Par exemple, un bloc d’événements vide peut servir de notification indiquant qu’un événement s’est produit, sans données supplémentaires. Ou un bloc de données peut simplement énumérer les noms d’instances 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 d’événements ou de données WMI. Pour plus d’informations sur les types de données MOF, consultez le Kit de développement logiciel (SDK) Microsoft Windows.

Type de données Format des données Alignement (en octets)

chaîne de caractères

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 une fin 0 suivie du remplissage. Dans ce cas, la longueur de la 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 inférieure à la taille de la mémoire tampon, le pilote peut remplir le reste de la chaîne avec des zéros.

2

boolean

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 non signé 16 bits

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 longueur fixe de 25 caractères qui spécifie un intervalle de date ou d’heure absolu. Une valeur datetime a le format suivant :

aaaammddhhmmss.mmmmsutc

où:

aaaa est l’année à 4 chiffres

mm correspond au 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 sont les secondes

mmmmmm est le nombre de microsecondes

s est un signe plus (+) ou moins (-), indiquant si utc est un décalage positif ou négatif des coordonnées de temps universel ; 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 précédées de zéros. Les champs qui ne sont pas significatifs peuvent être remplis avec des astérisques (*).

2