Ich finde häufig einige Definitionen für Win32API-Strukturen (aber nicht darauf beschränkt), die ein cbSize
Mitglied wie im folgenden Beispiel haben.Was ist der Zweck des CbSize-Members in Win32API-Strukturen
typedef struct _TEST {
int cbSize;
// other members follow
} TEST, *PTEST;
Und dann verwenden wir es so:
TEST t = { sizeof(TEST) };
...
oder
TEST t;
t.cbSize = sizeof(TEST);
...
Meine erste Vermutung ist, dass dies möglicherweise für die Versionierung verwendet werden könnten. Eine DLL, die einen Zeiger für eine Struktur wie folgt empfängt, kann überprüfen, ob das Mitglied cbSize
den erwarteten Wert hat, mit dem die DLL kompiliert wurde. Oder um zu überprüfen, ob die Struktur richtig verpackt ist. Aber ich würde gerne von dir hier sein.
Was ist der Zweck des Elements cbSize
in einigen C++ - Strukturen auf Win32API?
Stucts unterscheiden sich in der Größe zwischen OS-Versionen. Ich habe gerade einen Fehler unter Verwendung der Plattform sdk, die mit VC++ 2008 geliefert wird, gefunden. Wir haben die Betriebssystemversion nicht richtig definiert und am Ende die Vista-Version einer Struktur verwendet - was auf meiner XP-Box nicht so gut funktioniert hat. – Aardvark