Compartir a través de


Driver-Defined elementos de datos WMI

Un elemento de datos de una definición de clase de datos de WMI o bloque de eventos puede ser uno de los siguientes:

  • Un tipo de datos básico, como una cadena o un entero sin signo.

  • Una clase incrustada. Una clase insertada solo se usa como elemento de datos en otra definición de clase y no se expone como un bloque de datos o bloque de eventos.

  • Matriz de longitud fija o de longitud variable de un tipo de datos básico o una clase incrustada.

Al enviar un bloque de datos a WMI, un controlador debe alinear el inicio del bloque en un límite de 8 bytes. Todos los elementos de datos posteriores del bloque deben alinearse en la alineación correspondiente para el tipo de datos. Un valor booleano o uint8 debe alinearse en un límite de 1 byte. Un elemento de cadena sint16, uint16o debe alinearse en un límite de 2 bytes, etc. Las matrices deben alinearse en función del tipo base de la matriz. Una matriz de bytes debe alinearse en un límite de bytes, una matriz de uint64 debe alinearse en un límite de 8 bytes, etc. Una clase incrustada debe alinearse en función de la alineación natural de la clase incrustada que se define como el elemento más grande dentro de la clase incrustada. Por ejemplo, si una clase incrustada tiene una uint64, la clase debe alinearse en un límite de 8 bytes. La alineación del elemento de datos WMI sigue las mismas convenciones que el modificador /Zp8 en el compilador de Microsoft C.

Un escritor de controladores no tiene necesariamente que definir elementos de datos en un bloque distinto de los elementos necesarios InstanceName y Active. Por ejemplo, un bloque de eventos vacío puede servir como notificación de que se ha producido un evento, sin datos adicionales. O bien, un bloque de datos podría simplemente enumerar los nombres de instancia en respuesta a una solicitud de IRP_MN_QUERY_ALL_DATA .

En la tabla siguiente se enumeran los tipos de datos MOF que se pueden usar para definir elementos en un bloque de eventos o datos WMI. Para obtener más información sobre los tipos de datos MOF, consulte el Microsoft Windows SDK.

Tipo de datos Formato de datos Alineación (en bytes)

string

USHORT que especifica la longitud de la cadena en bytes, seguida de los datos de cadena Unicode. Los datos de cadena pueden incluir opcionalmente una terminación 0 seguida de relleno. Si es así, la longitud de la cadena debe incluir la terminación 0 y el relleno. Los controladores pueden usar el calificador MaxLen para especificar la longitud máxima en caracteres de la cadena. Los controladores que especifican una longitud máxima de cadena pueden usar un búfer de tamaño fijo para contener la cadena. Si la cadena es estrictamente menor que el tamaño del búfer, el controlador puede rellenar el resto de la cadena con ceros.

2

boolean

Un valor de un byte donde 0 es FALSE y cualquier valor distinto de cero es TRUE.

1

sint8

Entero de 8 bits con signo

1

uint8

Entero de 8 bits sin signo

1

sint16

Entero de 16 bits con signo

2

uint16

Entero de 16 bits sin signo

2

sint32

Entero de 32 bits con signo

4

uint32

Entero de 32 bits sin signo

4

sint64

Entero de 64 bits con signo

8

uint64

Entero de 64 bits sin signo

8

datetime

Cadena Unicode de longitud fija de 25 caracteres que especifica un intervalo de fecha o hora absoluto. Un valor datetime tiene el formato siguiente:

yyyymmddhhmmss.mmmmsutc

donde:

aaaa es el año de 4 dígitos

mm es el mes de 2 dígitos

dd es el día de 2 dígitos del mes

hh es la hora según un reloj de 24 horas

mm es el minuto

ss es el segundo

mmmmmm es el número de microsegundos

s es un signo más (+) o signo menos (-), que indica si utc es un desplazamiento positivo o negativo de coordenadas de hora universal; o dos puntos (:), lo que indica que el valor datetime es un intervalo.

utc es el desplazamiento en minutos de coordenadas de hora universal. Si utc es cero (000), el valor datetime es un intervalo.

Los valores deben rellenarse de cero. Los campos que no son significativos se pueden rellenar con asteriscos (*).

2