CD-Laufwerk sperren



  • Na dann musst du dir was einfallen lassen 😉

    Mfg Ominion



  • Das Tutorial ist recht gut, Ominion
    Und ich hab auch das mit den laufwerken gefunden.
    Aber das hilft mir irgendwie nicht. Haste noch ne andere Idee?



  • leider nicht. ich habe dazu nur was für visual basic gefunden.

    Mfg Ominion



  • tsp schrieb:

    Hey Ominion,

    deine Fkt. klappt doch, war wohl mein Fehler.
    Aber ich wüsste gern mal, warum die ModifyDriveLock nict funzt. 😕
    Ich habe es getestet: Die ModifyDriveLock gibt immer false zurück. Warum?

    Sry, hatte noch keine Zeit zu schreiben, hier liegt der Fehler:

    TCHAR szAddress[] = { TEXT('\\'), TEXT('\\'), TEXT('.'), TEXT('\\'), chDriveID, TEXT(':') };
    

    Ein C-String muss immer mit einem \0 enden. Das habe ich hier übersehen, wegen der Zuweisung über die einzelnen Elemente.

    Hier die korrigierte Fassung:

    // Parameter: chDriveID > Laufwerkbuchstaben, fLock > true/false, lock/unlock
    // Return-Wert: true > Aufruf erfolgreich, false > Aufruf fehlerhaft
    bool ModifyDriveLock(TCHAR chDriveID, bool fLock)
    {
        TCHAR szAddress[] = { TEXT('\\'), TEXT('\\'), TEXT('.'), TEXT('\\'), chDriveID, TEXT(':'), TEXT('\0') };
        HANDLE hDevice = CreateFile(szAddress, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
        if(hDevice == INVALID_HANDLE_VALUE)
          return (false);
    
        DWORD dwBytesReturned = 0L;
        PREVENT_MEDIA_REMOVAL pmr = { fLock };
    
        bool fSuccess = static_cast<bool>(DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL));
    
        CloseHandle (hDevice);
        return (fSuccess);
    }
    


  • CodeFinder schrieb:

    DeviceIoControl

    Genau das meinte ich. 😉



  • Ich krieg mein Laufwerk nicht mehr auf!! Helft mir!!!

    LOOL das kommt davon 😛 🤡



  • löl, das war (wie meiner auch) jetzt nicht der inhalts- und hilfsreichste beitrag^^

    Mfg Ominion



  • Joah ich weis, konnte es mir aber nicht verkneifen ^^ Ne, jetzt aber Schluss sry 😃


Anmelden zum Antworten