Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você define um novo GUID para um item que o driver exporta para outros componentes do sistema, drivers ou aplicativos. Por exemplo, você define um novo GUID para um evento PnP personalizado em um de seus dispositivos. Para definir e exportar um novo GUID, você deve fazer o seguinte:
Escolha um nome simbólico para o GUID.
Escolha um nome que represente a finalidade do GUID. Por exemplo, o sistema operativo utiliza nomes como GUID_BUS_TYPE_PCI e PARPORT_WMI_ALLOCATE_FREE_COUNTS_GUID.
Gere um valor para o GUID usando Uuidgen.exe ou Guidgen.exe. Quando você instala o SDK do Microsoft Windows, Uuidgen.exe é instalado automaticamente.
Esses utilitários geram uma cadeia de caracteres formatada exclusiva que representa um valor de 128 bits. A opção "-s" no Uuidgen.exe produz o GUID formatado como uma estrutura em C.
Defina o GUID em um arquivo de cabeçalho apropriado.
Use a macro DEFINE_GUID (definida em Guiddef.h) para associar o nome simbólico do GUID ao seu valor (consulte o Exemplo 1).
Exemplo 1: Definindo GUIDs em um arquivo de cabeçalho 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 ); :Se o GUID for definido em um arquivo de cabeçalho que contenha instruções diferentes de definições de GUID, você deverá executar uma etapa extra para garantir que o GUID seja instanciado em drivers que incluam o arquivo de cabeçalho. A declaração DEFINE_GUID deve ocorrer fora de qualquer declaração #ifdef que impeça a inclusão múltipla. Caso contrário, se o arquivo de cabeçalho estiver incluído em um cabeçalho pré-compilado, o GUID não será instanciado em drivers que usam o arquivo de cabeçalho. Consulte o Exemplo 2 para obter uma definição de GUID de exemplo em um arquivo de cabeçalho misto.
Exemplo 2: Definindo GUIDs em um arquivo de cabeçalho misto
#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 uma definição de GUID fora de instruções que impedem a inclusão múltipla não causa várias instâncias do GUID em um driver porque DEFINE_GUID define o GUID como uma variável EXTERN_C. Várias declarações de uma variável EXTERN são permitidas, desde que os tipos correspondam.
Ao criar um GUID para uma nova classe de configuração de dispositivo ou classe de interface de dispositivo, as seguintes regras se aplicam:
Não use um único GUID para identificar uma classe de configuração de dispositivo e uma classe de interface de dispositivo.
Ao criar um nome simbólico para associar ao GUID, use a seguinte convenção:
Para classes de configuração de dispositivo, use o formato GUID_DEVCLASS_XXX.
Para classes de interface de dispositivo, use o formato GUID_DEVINTERFACE_XXX.