Hallo,
tut mir echt leid, dass ich Euch mit so einem dummen Einsteigerproblem nerven muss, aber ich habe seit einigen Jahren kein C mehr programmiert und bin anscheind etwas aus der Uebung.
Ich habe das erste Beispielprogramm auf Seite 92/93 im Buch abgetippt und es laeuft auch ohne Probleme bei mir. Dann habe ich mir gedacht, dass ich aus Neugier mir auch die anderen Daten innerhalb der D3DADAPTER_IDENTIFIER9-Struktur anzeigen lasse. Ich habe deshalb die sprintf-Anweisung (S.93 unten) folgendermassen erweitert:
sprintf(acAdapterInfo,
"adapter-ID: %d\n"
"description: %s\n"
"driver: %s\n"
"driver version: %d\n"
"device name: %s\n"
"vendorID: %d\n"
"deviceID: %d\n"
"subsys ID: %d\n"
"revision: %d\n"
"WHQL level: %d",
iAdapter,
g_pAdapters[iAdapter].Description,
g_pAdapters[iAdapter].Driver,
g_pAdapters[iAdapter].DriverVersion,
g_pAdapters[iAdapter].DeviceName,
g_pAdapters[iAdapter].VendorId,
g_pAdapters[iAdapter].DeviceId,
g_pAdapters[iAdapter].SubSysId,
g_pAdapters[iAdapter].Revision,
g_pAdapters[iAdapter].WHQLLevel);
Leider schmiert er entweder ab oder bringt ab dem DeviceName voellig unsinnige Werte. Fuer mich sieht das sehr wie ein Speicherfehler aus und meine erste Vermutung war, dass der Speicherbereich fuer acAdapterInfo nicht ausreichend ist. Aber selbst wenn ich wesentlich mehr Speicher fuer diesen Puffer reserviere, aendert sich ueberhaupt nichts.
Weiss jemand von Euch wo mein Denkfehler ist und was ich falsch mache?
(Bei solchen Problemen sehne ich mich echt wieder zurueck an Java, sprachlich ist es imho C++ total ueberlegen, nur leider zu lahm fuer 3D-Spiele.)
Danke