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 |