ERROR_MORE_DATA auffangen?



  • Hi,

    ich habe folgendes Problem:

    Ich will die Informationen aus dem Reg-Key HKLM\System\CurrentControlSet\Services\usbstor\Enum auslesen.
    Dort gibt es für jedes angeschlossene USB-Gerät einen Eintrag:
    0 Reg_SZ USB\....
    1 Reg_SZ USB\....
    2 Reg_SZ USB\....
    3 Reg_SZ USB\....
    4 Reg_SZ USB\....

    Ich habe mir jetzt den folgenden Code gebastelt:

    DWORD	dwData = 50000, err;
    BYTE	cDaten[50000] = "";
    CString  temp;
    for(int cnt = 0; ok; cnt++){
    	temp.Format("%d", cnt);
    	err = RegQueryValueEx(hKey, temp, 0, 0, cDaten, &dwData);
    }
    

    Der Code funktioniert zwar, aber auf manchen Systemen bekomme ich ein Problem:
    Normalerweise werden 2-3 Schlüssel gelesen.
    Sind mehr USB-Geräte angeschlossen, und damit auch mehr Schlüssel vorhanden, gibt es den Fehler:
    ERROR_MORE_DATA (234): Es sind mehr Daten verfügbar.
    Ich habe gelesen, dass dwData dann einen neuen Wert kriegt.

    Leider habe ich keine Ahnung, wie ch das Problem lösen kann.???

    Bin für jeden Tipp dankbar.

    mfg
    trequ



  • *push*



  • In der MSDN Library steht, dass nach einem erfolgreichen Aufruf deine Variable dwData auf die tatsächlich gelesenen Bytes gesetzt wird. Beim nächsten Schleifendurchlauf gibst du also eine zu kleine Puffergröße an.


Anmelden zum Antworten