Открытие дескриптора флэш-накопителя дает мне код ошибки «Отказано в доступе».

Я хотел бы знать, почему, когда я пытаюсь создать дескриптор для флешки, я получаю ошибку «Путь не найден».

HANDLE aFile = CreateFile(_T("\\\\.\\F:\\"), GENERIC_READ, 0, NULL,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    if (aFile == INVALID_HANDLE_VALUE)
    {
        printf("\n");
        printf("Bad handle value. Error %d \n", GetLastError());
    }

Оттуда я хочу прочитать поток из 512 байт (загрузочный сектор) в файл .bin, но я не могу сначала пройти мимо создания дескриптора. Предотвращает ли Windows приложения открывать дескриптор съемных дисков?


person ffrstar777    schedule 08.09.2010    source источник


Ответы (1)


Этот код имеет две проблемы. Во-первых, путь. Фактически вы указываете корневую папку диска; что вам действительно нужно, так это громкость. Удалите обратную косую черту из пути; то есть _T("\\\\.\\F:"). Во-вторых, нужно указать FILE_SHARE_READ | ФАЙЛ_ОБЩИЙ_ЗАПИСЬ; вы пытаетесь открыть его в эксклюзивном режиме, и это не удастся. Дополнительную информацию см. в документации MSDN для CreateFile.

person Luke    schedule 09.09.2010