Lokale Variable 'xxxx' wurde ohne Initialisierung verwendet
-
Hallo!
Kann mir jemand einen Tipp geben was hier schiefläuft und wie es richtig ist:
VC liefert an der markierten Stelle:
"Warnung C4700: Lokale Variable 'lpdh' wurde ohne Initialisierung verwendet"
Wenn die Funktion GetDiskHandle() ausgeführt wird gibt es Zugriffsverletzung.*.h:
typedef struct _GETCDHAND { BYTE size; BYTE ver; BYTE ha; BYTE tgt; BYTE lun; BYTE readType; BOOL jitterCorr; BYTE numJitter; BYTE numOverlap; } PACKED GETCDHAND, FAR *LPGETCDHAND;
*.c
HCDROM GetCDHandle(LPGETCDHAND lpcd) { ... } HCDROM GetDiskHandle(int iHostAdapter, int iTarget, int iLun) { HANDLE hCDHandle; LPGETCDHAND lpdh; lpdh->size=sizeof(LPGETCDHAND); <---- HIER passiert's lpdh->ver=1; lpdh->ha=iHostAdapter; lpdh->tgt=iTarget; lpdh->lun=iLun; lpdh->readType=CDR_ANY; lpdh->jitterCorr=FALSE; lpdh->numJitter=2; lpdh->numOverlap=3; hCDHandle=GetCDHandle(lpdh); return hCDHandle; }
Danke!
-
Schönes Beispiel, wieso man erst die Sprache lernen sollte, bevor man sich mit sowas wie WinApi befasst.
LP... ist ein Zeiger, in deinem Fall uninitialisiert. Wie die Fehlermeldung schon sagt. Du schreibst also in Speicher der dir nicht gehört.
Richtig wäre so:
GETCDHAND dh;
dh.size = ...;
...
.. GetCDHandle(&dh);