2016-03-31 11 views
0

Ich arbeite mit DirectX in C++. Die Funktion, die ich rufe, gibt mir eine Struktur GUID als Ergebnis. Nun ist die DirectX-Header hat GUID wie folgt zugewiesen:Wie bekomme ich den Namen GUID

DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_MOCOMP,  0xe6a9f44b, 0x61b0, 0x4563,0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66); 

Meine Frage ist, wie bekomme ich den Namen (D3D11_DECODER_PROFILE_MPEG2_MOCOMP in diesem Fall) von einer GUID?

+0

D3D11_DECODER_PROFILE_MPEG2_MOCOMP ist kein Name, sondern lediglich eine handliche const-Kennung. Damit vermeiden Sie, dass Sie alle Hex-Werte in Ihren Code schreiben müssen. Es unterscheidet sich nicht von #define M_PI 3.14. Sie können von M_PI zu 3,14 gehen, Sie können natürlich nicht von 3,14 zurück nach M_PI gehen. Google ist normalerweise ziemlich praktisch, nur "0xe6a9f44b" ist genug. –

Antwort

1

AFAIK gibt keinen solchen Namen ist, oder für Menschen lesbaren Namen für eine solche GUID, die ein bestimmtes Videoprofil definiert gerade.

Sie können ein Array von struct mit einer Zeichenfolge und der GUID erstellen, um es zu konvertieren. Aber denken Sie daran, dass der Name selbst nur eine Definition für die GUID ist. Es ist also nur innerhalb des C++ Codes gültig.

struct S_GUID_DECODER { 
    char* pName; 
    const GUID *pGuid; 
} 
aValues[] = 
{ 
... 
    {" D3D11_DECODER_PROFILE_MPEG2_MOCOMP", &D3D11_DECODER_PROFILE_MPEG2_MOCOMP }, 
... 
}; 

Jetzt können Sie eine Schleife verwenden und "Ihren" Namen finden.

PS: Ihre Frage ist nicht sehr klar, wenn Sie GUIDs überhaupt wie Interface-GUIDs oder Klassen-IDs meinen, oder wenn es nur diese spezielle Bezeichnergruppe für Videoprofile ist.

+0

Ich meinte nur für diese spezifische Gruppe von Kennungen. Danke für die Idee mit der Struktur – diAblo

0

D3D11_DECODER_PROFILE_MPEG2_MOCOMP ist nur Alias ​​für die GUID. Sie können einen beliebigen Alias ​​auswählen, aber keinen einfachen, der einfach zu wiederholen ist.

Jede CoClass und Schnittstelle hat ihre Guid, die eine 128-Bit-Nummer ist. Zur einfachen Verwendung durch den Programmierer wird eine einfach zu merkende Manifest-Konstante für jede GUID definiert. Quelle: http://progtutorials.tripod.com/COM.htm

Verwandte Themen