Проверьте, работает ли ReadDirectoryChanges для заданного пути

#windows #delphi #networking #file-io #delphi-xe

#Windows #delphi #сеть #file-io #delphi-xe

Вопрос:

Есть ли какой-либо способ проверить, ReadDirectoryChanges будет ли работать для данного пути? (Я предполагаю, что это не будет работать, например, на общих сетевых ресурсах Linux). Я предполагаю, что вызов ReadDirectoryChanges по такому пути вернет код ошибки, но я не могу проверить это в настоящее время. Кто-нибудь знает, работает ли это? Есть ли другие способы проверить это?

Ответ №1:

Из MSDN:

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение ненулевое. Для синхронных вызовов это означает, что операция выполнена успешно. Для асинхронных вызовов это указывает на то, что операция была успешно поставлена в очередь.

Если функция завершается с ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенную информацию об ошибке, вызовите GetLastError.

Если сетевой перенаправитель или целевая файловая система не поддерживают эту операцию, функция завершается с ошибкой ERROR_INVALID_FUNCTION.

Поэтому просто проверьте наличие «ERROR_INVALID_FUNCTION».

Ответ №2:

Если вы хотите провести тест с использованием грубой силы, просмотрите каталог, попробуйте создать временный файл — если вы не получите ответ в течение «разумного» периода времени. Предположим, что эта папка не может быть протестирована.

Комментарии:

1. Да, это решение, для которого я хочу найти более элегантную замену. Особенно странно считать тайм-аут постоянным. Я не знаю, какие внутренние компоненты влияют на задержку.