Bug in QueryDosDevice()?



  • Hi Community,

    Habe gestern mit Erstaunen festgestellt, daß QueryDosDevice() http://msdn2.microsoft.com/en-us/library/aa365461.aspx meckerte, der Buffer sei zu klein...

    DWORD dword_chars;
    TCHAR tcharsz_temp_65536stellen[65536 + 1];
    
    dword_chars = QueryDosDevice( NULL, tcharsz_temp_65536stellen, 65536 );  :warning: 
                                                                    //65535 ist vermutlich die höchstzulässige Zahl.
                                                                    //Offensichtlich werden die oberen 16 Bits des
                                                                    //Parameters ucchMax abgeschnitten?
    printf( TEXT( "%lX chars " ), dword_chars );
    if ( dword_chars == 0 )
    {
      err = GetLastError();
    }
    

    Ich wollte alle verfügbaren MS-DOS Device-Namen abrufen und hatte dafür einen sehr großen Buffer spendiert 😉
    Bis 65535 TCHARs funktionierts einwandfrei, ab Größe 65536 meckert die Funktion über GetLastError() der Buffer sei zu klein!
    In der Doku ist nix derartiges über eingeschränkte Buffer-Größe zu lesen... dort steht sogar "DWORD ucchMax" also ein 32-Bit Wert als Übergabeparameter.

    Habt auch Ihr solche Erfahrungen gemacht?

    Martin



  • Hmmm,
    keiner da, der meine Beobachtung bestätigen könnte? 😕

    Martin


Anmelden zum Antworten