registry - usb gerät auslesen.



  • hallo liebe community , ich denke das ist kein all zu großer problem aber ich komm nicht dahinter.

    ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Services\\USBSTOR\\Enum",0, KEY_QUERY_VALUE, &hKey );
    if( ret != ERROR_SUCCESS )
    {
      RegCloseKey( hKey );
      return;
    } 
    ret = RegQueryValueEx( hKey,(LPCWSTR)device , NULL, NULL,(LPBYTE)szProductType, &dwBufLen);
    if( (ret != ERROR_SUCCESS) )
    {
      RegCloseKey( hKey );
      return;
    }
    

    device ist ein char[2] !
    es hängt definitiv an (LPCWSTR)device

    was bedeuter das L vorm string? muss das doch irgendwie auf das char-array device anwenden können


  • Mod

    Dein Cast ist für die Füsse.
    Es gibt nun m al Unicdoe Strings (wchar_t) und MBCS strings (char). L vor einer String Konstante macht aus einem char[] einen wchar[]!
    Lies mal ein Buch über c/C++ Basics 😉

    Du hast vermutlich ein Unicode Prohejt und einen char[] mit device. Deine RegOpenKeyEx will aber einen wchar_t[]. Du hastgeglaubt, dass man mit einem brutalen cast das lösen kann. Dem ist aber nicht so.

    Lösungen:
    - Benutze entweder TCHAR oder wandle den String mit ATL CA2W um.
    - Stelle Dein Projekt auf MBCS um und verwende überall char[] und ""
    - Stelle Deine Projekt auf Unicode um und verwende überall wchar_t[] und L""



  • mein projekt ist auf MultibyteCharSet eingestellt....
    welcher cast würde gehen?



  • Martin Richter schrieb:

    Dein Cast ist für die Füsse.
    Es gibt nun m al Unicdoe Strings (wchar_t) und MBCS strings (char). L vor einer String Konstante macht aus einem char[] einen wchar[]!
    Lies mal ein Buch über c/C++ Basics 😉

    Du hast vermutlich ein Unicode Prohejt und einen char[] mit device. Deine RegOpenKeyEx will aber einen wchar_t[]. Du hastgeglaubt, dass man mit einem brutalen cast das lösen kann. Dem ist aber nicht so.

    Lösungen:
    - Benutze entweder TCHAR oder wandle den String mit ATL CA2W um.
    - Stelle Dein Projekt auf MBCS um und verwende überall char[] und ""
    - Stelle Deine Projekt auf Unicode um und verwende überall wchar_t[] und L""

    was ist ATL CA2W. Mein projekt ist auf MBCS gestellt gewesen...
    ich benutze eigentlich überall char[] !
    wie wäre die lösung im code...

    entschuldige meine dummen fragen, aber ich bin noch in der ausbildung 😕


  • Mod

    Es ist gar kein cast nötig...
    Was hast Du denn jetzt noch für Probleme?

    Anmerkung: Wenn Du noch in der Ausblidung bist, dann sollte es Dir noch Gewohnheit sein, Tutorials und Anleitungen zu lesen 😉
    BTW: Ich habe Dir alle Erklärungen gegeben die notwendig sind. Den rest findest Du durch sichen im Netz un diesen Foren. Dieses Thema wurde auch schon mehr als 1000mal diskutiert und erfragt.


Anmelden zum Antworten