DEFINE_PROPERTYKEY Makro (propkeydef.h)

Wird verwendet, um einen Formatbezeichner (FMTID) und einen Eigenschaftsbezeichner (PID) in eine PROPERTYKEY-Struktur zu packen, die einen Eigenschaftsschlüssel darstellt.

Syntax

void DEFINE_PROPERTYKEY(
   name,
   l,
   w1,
   w2,
   b1,
   b2,
   b3,
   b4,
   b5,
   b6,
   b7,
   b8,
   pid
);

Parameter

name

Der Name einer PROPERTYKEY-Struktur , die einen Eigenschaftsschlüssel darstellt.

l

Der Wert des Data1-Elements des fmtid-Elements der PROPERTYKEY-Struktur .

w1

Der Wert des Data2-Elements des fmtid-Elements der PROPERTYKEY-Struktur .

w2

Der Wert des Data3-Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b1

Der Wert des Data4[0] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b2

Der Wert des Data4[1] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b3

Der Wert des Data4[2] -Members des fmtid-Elements der PROPERTYKEY-Struktur .

b4

Der Wert des Data4[3] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b5

Der Wert des Data4[4] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b6

Der Wert des Data4[5] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b7

Der Wert des Data4[6] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

b8

Der Wert des Data4[7] -Elements des fmtid-Elements der PROPERTYKEY-Struktur .

pid

Ein Eigenschaftsbezeichner (PID). Es wird empfohlen, diesen Wert auf PID_FIRST_USABLE festzulegen. Jeder Wert größer oder gleich 2 ist akzeptabel.

Hinweis Die Werte 0 und 1 sind reserviert und sollten nicht verwendet werden.
 

Rückgabewert

Keine

Bemerkungen

Das makro DEFINE_PROPERTYKEY wird wie folgt definiert.

#ifdef INITGUID
#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \
EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY name = \
{ { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
#else
#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \ 
EXTERN_C const PROPERTYKEY name
#endif // INITGUID 

Wenn Sie dieses Makro verwenden, stehen Ihnen zwei Optionen zur Auswahl:

  • Schließen Sie Initguid.h in Ihr Projekt ein. In diesem Fall deklariert das Makro die Eigenschaftenschlüsselnamen und definiert die Eigenschaftenschlüssel für Sie. Dieser Ansatz funktioniert in den meisten Fällen, kann jedoch zu Namenskonflikten in großen, komplexen Projekten führen.
  • Schließen Sie Initguid.h nicht ein. Kompilieren Sie Stattdessen Ihre Definitionen in eine statische Bibliotheksdatei mit der Dateinamenerweiterung .lib. In diesem Fall deklariert das Makro die Eigenschaftenschlüsselnamen, die der Compiler verwenden soll, aber Sie müssen in den Linkereinstellungen für Ihr Projekt auf Ihre LIB-Datei verweisen. Dieser Ansatz funktioniert am besten in großen Projekten, die mehrere Module verwenden, da er die in Option 1 erwähnten Namenskonflikte vermeidet.
Die Verwendung des Makros ohne Einschließen von Initguid.h und ohne Verweis auf eine Bibliotheksdatei löst den LNK2001 Linkerfehler aus.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile propkeydef.h