Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se define un nuevo GUID para un elemento que el controlador exporta a otros componentes del sistema, controladores o aplicaciones. Por ejemplo, se define un nuevo GUID para un evento PnP personalizado en uno de sus dispositivos. Para definir y exportar un nuevo GUID, debe hacer lo siguiente:
Elija un nombre simbólico para el GUID.
Elija un nombre que represente el propósito del GUID. Por ejemplo, el sistema operativo usa nombres como GUID_BUS_TYPE_PCI y PARPORT_WMI_ALLOCATE_FREE_COUNTS_GUID.
Genere un valor para el GUID mediante Uuidgen.exe o Guidgen.exe. Al instalar Microsoft Windows SDK, Uuidgen.exe se instala automáticamente.
Estas utilidades generan una cadena única con formato que representa un valor de 128 bits. El modificador "-s" Uuidgen.exe genera el GUID con formato de estructura C.
Defina el GUID en un archivo de encabezado adecuado.
Use la macro DEFINE_GUID (definida en Guiddef.h) para asociar el nombre simbólico guid con su valor (consulte el ejemplo 1).
Ejemplo 1: Definir GUIDs en un archivo de encabezado 'GUID-Only'
: DEFINE_GUID( GUID_BUS_TYPE_PCMCIA, 0x09343630L, 0xaf9f, 0x11d0, 0x92,0x9f, 0x00, 0xc0, 0x4f, 0xc3, 0x40, 0xb1 ); DEFINE_GUID( GUID_BUS_TYPE_PCI, 0xc8ebdfb0L, 0xb510, 0x11d0, 0x80,0xE9, 0x00, 0x00, 0xf8, 0x1e, 0x1b, 0x30 ); :Si el GUID se define en un archivo de encabezado que contiene instrucciones distintas de las definiciones de GUID, debe realizar un paso adicional para asegurarse de que se crea una instancia del GUID en controladores que incluyen el archivo de encabezado. La instrucción DEFINE_GUID debe producirse fuera de las instrucciones #ifdef que impidan la inclusión múltiple. De lo contrario, si el archivo de encabezado se incluye en un encabezado precompilado, el GUID no se instanciará en los drivers que lo usan. Consulte el ejemplo 2 para obtener una definición de GUID de muestra en un archivo de cabecera mixto.
Ejemplo 2: Definir GUID en un archivo de encabezado mixto
#ifndef _NTDDSER_ // this ex. is from a serial driver .h file #define _NTDDSER_ : // Put other header file definitions here. : #endif // _NTDDSER_ #ifdef DEFINE_GUID // Do not break compiles of drivers that // include this header but that do not // want the GUIDs. // // Put GUID definitions outside of the multiple inclusion // protection. DEFINE_GUID(GUID_CLASS_COMPORT, 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73); DEFINE_GUID (GUID_SERENUM_BUS_ENUMERATOR, 0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); : #endif // DEFINE_GUIDColocar una definición de GUID fuera de las instrucciones que impiden la inclusión múltiple no provoca varias instancias del GUID en un controlador porque DEFINE_GUID define el GUID como una variable EXTERN_C. Se permiten varias declaraciones de una variable EXTERN siempre que coincidan los tipos.
Al crear un GUID para una nueva clase de configuración de dispositivo o clase de interfaz de dispositivo, se aplican las siguientes reglas:
No use un único GUID para identificar una clase de configuración de dispositivo y una clase de interfaz de dispositivo.
Al crear un nombre simbólico que se va a asociar al GUID, use la siguiente convención:
Para las clases de configuración de dispositivos, use el formato GUID_DEVCLASS_XXX.
Para las clases de interfaz de dispositivo, use el formato GUID_DEVINTERFACE_XXX.