Непонятки с DeviceIoControl

Тема в разделе "WASM.BEGINNERS", создана пользователем XshStasX, 2 июл 2010.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Почему такой код:
    Завершается с GetLastError() = 5 ?...
    Программу запускаю из под админа.
    Полный исходный код прикреплен к теме.
     
  2. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    точнее DeviceIoControl завешается не удачно, а GetLastError() возвращает 5.
     
  3. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    Ну посмотри код ошибки в инете, MSDN
     
  4. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Блин, что значит она знаю причину не могу понять...
    Там ошибка "Отказано в доступе. " ....
     
  5. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    и еще посмотри http://msdn.microsoft.com/en-us/library/ms679351(VS.85).aspx. А так же утилиту в составе MS Visual Studuio error lookup
     
  6. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    А какая ось и код точнее приведи
     
  7. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    Пардон не обратил внимания:))
     
  8. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    С осью вопрос остается, просто в ОСях после XP микрософтовцы наложили серьезные ограничения на общения с диском в части прямого доступа, собственно поэтому траблы например y Partition Magic. Как то эту проблему решали, в каком то блоге описано решение данной проблемы
     
  9. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    ОС ХР сп3.
    Аналогичный код на С++ работает....
    В С++ получается первый раз тоже ошибка но там в buf пишется сколько памяти нужно.
    Я ее получаю и заново вызиваю...
    но тут чет так не выходить...(...
    код на С++ смотрел принципиальной разницы не нашол.
     
  10. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    А можно посмотреть С++?
     
  11. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    здесь программа : http://files.rsdn.ru/19123/NTFSAttrib.zip
     
  12. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    Сам то же в силу слабости знаний не могу понять причину( Есть только предположение что проблема на самом деле не здесь а с CreateFile
     
  13. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    и еще страннность :
    Код (Text):
    1.  invoke CreateFileA, addr drive,GENERIC_READ,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,0,0
    возвращает -1, GetLastError() = 5...
    такой же код на С++ :
    Код (Text):
    1.  CreateFileW(szFullVolName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    отлично работает.
    приходится делать так:
    Код (Text):
    1.  invoke CreateFileA, addr drive,GENERIC_READ,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0
    В таком случаии открывает.
     
  14. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    тоже есть подозрения на нее по причине в посте #13...
     
  15. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    Ну я конечно могу ошибаться и не бей сильно:) Но Windows изначально использует unicode строки вот может поэтому трабла выходит?
     
  16. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    из №13
     
  17. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    а ты прав :) если в С++ поставить CreateFileA, то будут с DeviceIoControl...
    Как то странно, ведь CreateFileA сводится к CreateFileW ...
     
  18. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    Да вот помню что читал у Рихтера что теоритически так и должно быть, а практика иное показывает:)
     
  19. red_Human

    red_Human New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    182
    Вот посмотри комрад Clerck расписывает про ошибки(обрати внимание на пост №57), можетбыть у тебя проблемы с ФС самой?
     
  20. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Я тоже вспомнил его рекомендации про юникод, но ацки так не хочется кидать...