Condividi tramite


Driver-Defined elementi dati WMI

Un elemento di dati in una definizione di classe di dati WMI o blocco eventi può essere uno dei seguenti:

  • Tipo di dati di base, ad esempio una stringa o un intero senza segno.

  • Classe incorporata. Una classe incorporata viene usata solo come elemento di dati in un'altra definizione di classe e non viene esposta come blocco dati o blocco eventi.

  • Matrice a lunghezza fissa o a lunghezza variabile di un tipo di dati di base o di una classe incorporata.

Quando si invia un blocco di dati a WMI, un driver deve allineare l'inizio del blocco in un limite di 8 byte. Tutti gli elementi di dati successivi nel blocco devono essere allineati all'allineamento corrispondente per il tipo di dati. Un valore booleano o uint8 deve essere allineato su un limite a 1 byte. Un elemento sint16, uint16 o stringa deve essere allineato a un limite di 2 byte e così via. Le matrici devono essere allineate in base al tipo di base della matrice. Una matrice di byte deve essere allineata su un limite di byte, una matrice di uint64 deve essere allineata su un limite a 8 byte e così via. Una classe incorporata deve essere allineata in base all'allineamento naturale della classe incorporata definita come elemento più grande all'interno della classe incorporata. Ad esempio, se una classe incorporata ha un uint64, la classe deve essere allineata su un limite di 8 byte. L'allineamento dell'elemento di dati WMI segue le stesse convenzioni dell'opzione /Zp8 nel compilatore Microsoft C.

Un writer driver non deve necessariamente definire elementi di dati in un blocco diverso dagli elementi necessari InstanceName e Active. Ad esempio, un blocco eventi vuoto può fungere da notifica che si è verificato un evento, senza dati aggiuntivi. In alternativa, un blocco di dati può semplicemente enumerare i nomi di istanza in risposta a una richiesta di IRP_MN_QUERY_ALL_DATA .

Nella tabella seguente sono elencati i tipi di dati MOF che possono essere usati per definire gli elementi in un blocco di dati o eventi WMI. Per altre informazioni sui tipi di dati MOF, vedere la Microsoft Windows SDK.

Tipo di dati Formato dati Allineamento (in byte)

string

USHORT specificando la lunghezza della stringa in byte, seguita dai dati stringa Unicode. I dati stringa possono includere facoltativamente una terminazione 0 seguita dalla spaziatura interna. In tal caso, la lunghezza della stringa deve includere la terminazione 0 e la spaziatura interna. I driver possono usare il qualificatore MaxLen per specificare la lunghezza massima in caratteri della stringa. I driver che specificano una lunghezza massima di stringa possono usare un buffer di dimensioni fisse per contenere la stringa. Se la stringa è strettamente inferiore alla dimensione del buffer, il driver può tastierare il resto della stringa con zero.

2

boolean

Valore di un byte in cui 0 è FALSE e qualsiasi valore diverso da zero è TRUE

1

sint8

Valore intero con segno a 8 bit

1

uint8

Intero senza segno a 8 bit

1

sint16

Valore intero a 16 bit con segno

2

uint16

Intero senza segno a 16 bit

2

sint32

Valore intero a 32 bit con segno

4

uint32

Intero senza segno a 32 bit

4

sint64

Valore intero a 64 bit con segno

8

uint64

Intero senza segno a 64 bit

8

datetime

Stringa Unicode a lunghezza fissa di 25 caratteri che specifica un intervallo di data o ora assoluto. Un valore datetime ha il formato seguente:

yyyymmdhhmmss.mmmmsutc

dove:

yy è l'anno a 4 cifre

mm è il mese a 2 cifre

dd è il giorno a 2 cifre del mese

hh è l'ora in base a un orologio di 24 ore

mm è il minuto

ss è il secondo

mmmmmm è il numero di microsecondi

s è un segno più (+) o segno meno (-), che indica se utc è un offset positivo o negativo da Coordinate temporali universali; o due punti (:), che indica che il valore datetime è un intervallo.

utc è l'offset in minuti da Coordinate temporali universali. Se utc è zero (000), il valore datetime è un intervallo.

I valori devono essere vuoti. I campi che non sono significativi possono essere riempiti con asterischi (*).

2