Как избежать окна с ошибкой из ZwOpenFile при чтении с дискеты?

Тема в разделе "WASM.NT.KERNEL", создана пользователем 100gold, 30 сен 2011.

  1. 100gold

    100gold New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2010
    Сообщения:
    165
    При попытке открыть файл с дискеты с помощью ZwOpenFile вылезает окно "Диск отсутствует" если дискета не вставлена. Очень хочется избежать этого окна и просто вернуть ошибку, если дискеты нет.

    Проблема в том, что устройство \Device\FloppyXxx присутствует всегда ибо это устройство самого дисковода, а никак не файловой системы которая на дискете. DEVICE_OBJECT тома появляются только в момент первого обращения к дискете, т.е. пока не попытаешься что-то с дискеты прочитать неясно есть дискета или нет. И дальше, аналогичная проблема в случае когда дискету достали, пока не попытаешься что-то прочитать система думает что дискета есть.
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Вот это поможет:
    IoSetThreadHardErrorMode()
    Ещё есть такая функция (недокументированная):

    Код (Text):
    1. VOID
    2. PsSetThreadHardErrorsAreDisabled (
    3.     IN PETHREAD Thread,
    4.     IN BOOLEAN HardErrorsAreDisabled);