Delen via


Nieuwe GUID's definiëren en exporteren

U definieert een nieuwe GUID voor een item dat het stuurprogramma exporteert naar andere systeemonderdelen, stuurprogramma's of toepassingen. U definieert bijvoorbeeld een nieuwe GUID voor een aangepaste PnP-gebeurtenis op een van de apparaten. Als u een nieuwe GUID wilt definiëren en exporteren, moet u het volgende doen:

  1. Kies een symbolische naam voor de GUID.

    Kies een naam die het doel van de GUID vertegenwoordigt. Het besturingssysteem gebruikt bijvoorbeeld namen zoals GUID_BUS_TYPE_PCI en PARPORT_WMI_ALLOCATE_FREE_COUNTS_GUID.

  2. Genereer een waarde voor de GUID met behulp van Uuidgen.exe of Guidgen.exe. Wanneer u de Microsoft Windows SDK installeert, wordt Uuidgen.exe automatisch geïnstalleerd.

    Deze hulpprogramma's genereren een unieke, opgemaakte tekenreeks die een 128-bits waarde vertegenwoordigt. De schakeloptie '-s' op Uuidgen.exe geeft de GUID weer die is geformatteerd als een C-structuur.

  3. Definieer de GUID in een geschikt headerbestand.

    Gebruik de DEFINE_GUID macro (gedefinieerd in Guiddef.h) om de symbolische naam van de GUID te koppelen aan de waarde (zie voorbeeld 1).

    Voorbeeld 1: GUID's definiëren in een GUID-Only headerbestand

    :
    
    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 );
    
    :
    

    Als de GUID is gedefinieerd in een headerbestand dat andere instructies dan GUID-definities bevat, moet u een extra stap uitvoeren om ervoor te zorgen dat de GUID wordt geïnstantieerd in stuurprogramma's die het headerbestand bevatten. De DEFINE_GUID-instructie moet plaatsvinden buiten #ifdef instructies die voorkomen dat meerdere items worden opgenomen. Maar als het headerbestand is opgenomen in een vooraf gecompileerde header, wordt de GUID niet geïnstantieerd in stuurprogramma's die het headerbestand gebruiken. Zie voorbeeld 2 voor een voorbeeld-GUID-definitie in een gemengde headerbestand.

    Voorbeeld 2: GUIDs definiëren in een gemengd headerbestand

    #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_GUID
    

    Als u een GUID-definitie buiten instructies plaatst die voorkomen dat meerdere exemplaren van de GUID in een stuurprogramma worden opgenomen, veroorzaakt dit niet omdat DEFINE_GUID de GUID definieert als een EXTERN_C variabele. Meerdere declaraties van een EXTERN-variabele zijn toegestaan zolang de typen overeenkomen.

  4. Bij het maken van een GUID voor een nieuwe apparaatinstallatieklasse of apparaatinterfaceklasse zijn de volgende regels van toepassing:

    • Gebruik niet één GUID om zowel een apparaatinstallatieklasse als een apparaatinterfaceklasse te identificeren.

    • Wanneer u een symbolische naam maakt die moet worden gekoppeld aan de GUID, gebruikt u de volgende conventie:

      Gebruik voor apparaatinstallatieklassen de indeling GUID_DEVCLASS_XXX.

      Gebruik de indeling GUID_DEVINTERFACE_XXX voor apparaatinterfaceklassen.