Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Należy zdefiniować nowy identyfikator GUID dla elementu, który sterownik eksportuje do innych składników systemu, sterowników lub aplikacji. Można na przykład zdefiniować nowy identyfikator GUID dla niestandardowego zdarzenia PnP na jednym z tych urządzeń. Aby zdefiniować i wyeksportować nowy identyfikator GUID, należy wykonać następujące czynności:
Wybierz symboliczną nazwę dla identyfikatora GUID.
Wybierz nazwę reprezentującą przeznaczenie identyfikatora GUID. Na przykład system operacyjny używa takich nazw jak GUID_BUS_TYPE_PCI i PARPORT_WMI_ALLOCATE_FREE_COUNTS_GUID.
Wygeneruj wartość identyfikatora GUID przy użyciu Uuidgen.exe lub Guidgen.exe. Po zainstalowaniu zestawu Microsoft Windows SDK Uuidgen.exe jest instalowany automatycznie.
Te narzędzia generują unikatowy, sformatowany ciąg, który reprezentuje wartość 128-bitową. Przełącznik "-s" Uuidgen.exe zwraca identyfikator GUID sformatowany jako struktura języka C.
Zdefiniuj identyfikator GUID w odpowiednim pliku nagłówkowym.
Użyj makra DEFINE_GUID (zdefiniowanego w pliku Guiddef.h), aby skojarzyć nazwę symboliczną identyfikatora GUID z jego wartością (zobacz przykład 1).
Przykład 1. Definiowanie identyfikatorów GUID w pliku nagłówka 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 ); :Jeśli identyfikator GUID jest zdefiniowany w pliku nagłówka, który zawiera inne instrukcje poza definicjami identyfikatora GUID, należy wykonać dodatkowy krok, aby upewnić się, że identyfikator GUID jest tworzony w sterownikach zawierających plik nagłówka. Instrukcja DEFINE_GUID musi występować poza wszelkimi instrukcjami #ifdef , które uniemożliwiają włączenie wielu elementów. W przeciwnym razie, jeśli plik nagłówkowy jest uwzględniony w prekompilowanym nagłówku, identyfikator GUID nie zostanie utworzony w sterownikach, które korzystają z tego pliku. Zobacz Przykład 2, aby uzyskać przykładową definicję identyfikatora GUID w mieszanym pliku nagłówka.
Przykład 2. Definiowanie identyfikatorów GUID w pliku nagłówkowym typu mieszanego
#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_GUIDUmieszczenie definicji identyfikatora GUID poza instrukcjami, które uniemożliwiają wielokrotne dołączanie, nie powoduje wielu wystąpień identyfikatora GUID w sterowniku, ponieważ DEFINE_GUID definiuje identyfikator GUID jako zmienną EXTERN_C. Wiele deklaracji zmiennej EXTERN jest dozwolonych, o ile typy są zgodne.
Podczas tworzenia identyfikatora GUID dla nowej klasy konfiguracji urządzenia lub klasy interfejsu urządzenia obowiązują następujące reguły:
Nie używaj jednego identyfikatora GUID do identyfikowania zarówno klasy konfiguracji urządzenia, jak i klasy interfejsu urządzenia.
Podczas tworzenia nazwy symbolicznej do skojarzenia z identyfikatorem GUID należy użyć następującej konwencji:
W przypadku klas konfiguracji urządzeń użyj formatu GUID_DEVCLASS_XXX.
W przypadku klas interfejsów urządzeń użyj formatu GUID_DEVINTERFACE_XXX.