Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коды ошибок CreateFile, Расширенные коды ошибок 
:(
    Опции темы
untrial
Дата 23.2.2011, 22:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.2.2011

Репутация: нет
Всего: нет



При возникновение ошибки CreateFile возвращает INVALID_HANDLE_VALUE, для того чтобы узнать тип ошибки необходимо вызвать GetLastError.
Вопрос какие возможные типы (значения) возвращает GetLastError MSDN CreateFile
Например в *nix системах man open
Код

НАЙДЕННЫЕ ОШИБКИ

EEXIST
    pathname уже существует, но были использованы O_CREAT и O_EXCL. 
EISDIR
    Тип доступа подразумевает запись, а pathname указывает на каталог, (то есть установлены O_WRONLY или O_RDWR). 
EACCES
    Запрошенный доступ к файлу не разрешен, или один из каталогов в pathname не позволяет поиск (выполнение) файла, файл еще не существует, или доступ для записи в родительский каталог не разрешен. 
ENAMETOOLONG
    pathname является слишком длинным. 
ENOENT
    O_CREAT не установлен, а указанный файл не существует. Или не существует каталог в пути pathname, или он является неверной символьной ссылкой. 
ENOTDIR
    Компонент, который обозначен как каталог в pathname, таковым не является, или был указан флаг O_DIRECTORY, а pathname не является каталогом. 
ENXIO
    Установлены O_NONBLOCK | O_WRONLY, файл является каналом FIFO, но нет процессов, которые открыли этот канал для чтения. Возможно также, что файл является файлом устройства, но соответствующее устройство не установлено. 
ENODEV
    pathname ссылается на файл устройства, но соответствующего устройства не существует. (Это ошибка в ядре Linux: должен возвращаться параметр ENXIO). 
EROFS
    Был запрошен доступ к записи, а pathname ссылается на файл, находящийся в системе, предназначенной только для чтения. 
ETXTBSY
    pathname ссылается на файл, который в настоящее время исполняется, и был запрошен доступ к записи. 
EFAULT
    pathname указывает на каталог за пределами доступного адресного пространства. 
ELOOP
    Слишком много символьных ссылок составляют pathname, или был указан флаг O_NOFOLLOW, а pathname является символьной ссылкой. 
ENOSPC
    pathname должен был указать на устройство, в котором отсутствует место для нового файла. 
ENOMEM
    Недостаточно памяти в системе. 
EMFILE
    Процесс уже открыл максимально допустимое количество файлов. 
ENFILE
    Достигнут предел общего количества файлов, открытых в системе. 


Интересет прежде всего аналог ENFILE, ENOMEM.
PM   Вверх
Akina
Дата 23.2.2011, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата(untrial @  23.2.2011,  23:32 Найти цитируемый пост)
какие возможные типы (значения) возвращает GetLastError 

Ты даже не представляешь, какая это куча кодов! Вот тебе для затравочки - читай...
http://msdn.microsoft.com/en-us/library/ms...1(v=VS.85).aspx


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
alexvs11
Дата 23.2.2011, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: нет
Всего: 10



но возвращать то она не всех их будет

Это сообщение отредактировал(а) alexvs11 - 23.2.2011, 23:50
PM MAIL   Вверх
untrial
Дата 24.2.2011, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.2.2011

Репутация: нет
Всего: нет



Цитата

Akina

Ты даже не представляешь, какая это куча кодов! Вот тебе для затравочки - читай...
http://msdn.microsoft.com/en-us/library/ms...1(v=VS.85).aspx

 smile
Неужели нет систематизированного списка? WinAPI Функция - возможные ошибки

Цитата

alexvs11
    
но возвращать то она не всех их будет
 
Парочку констант для ошибок, не подскажите, желательно для Delphi/free pascal smile 
PM   Вверх
CodeMonkey
Дата 24.2.2011, 05:48 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(untrial @  24.2.2011,  01:17 Найти цитируемый пост)
Неужели нет систематизированного списка? WinAPI Функция - возможные ошибки


Нет.

И на это есть причина.

К примеру, попытка открыть pipe с делегацией токена безопасности провалится с ERROR_BAD_IMPERSONATION_LEVEL, если удалённый сервер этого pipe не является доверенным для делегации.

Иногда указывают типичные коды (редко) или специальные коды (чаще). 

Под специальными кодами понимаются коды, которые ты точно хотел бы обрабатывать отдельно от других. К примеру, ERROR_INSUFFICIENT_BUFFER. И часто описывается сценарий, как надо обрабатывать такие ошибки.

Все прочие ошибки просто не упоминаются. По той простой причине, что все они - равнозначны с точки зрения функции.

Добавлено через 9 минут и 7 секунд
Цитата(untrial @  24.2.2011,  01:17 Найти цитируемый пост)
Парочку констант для ошибок, не подскажите, желательно для Delphi/free pascal   


Вот несколько наугад:

ERROR_FILE_NOT_FOUND
ERROR_PATH_NOT_FOUND
ERROR_TOO_MANY_OPEN_FILES
ERROR_ACCESS_DENIED
ERROR_WRITE_PROTECT
ERROR_NOT_READY
ERROR_SHARING_VIOLATION
ERROR_LOCK_VIOLATION
ERROR_BAD_NETPATH
ERROR_NETWORK_ACCESS_DENIED
ERROR_FILE_EXISTS
ERROR_INVALID_PARAMETER
ERROR_OPEN_FAILED
ERROR_BAD_PATHNAME
ERROR_BUSY
ERROR_ALREADY_EXISTS
ERROR_PIPE_NOT_CONNECTED

...и многие другие - мне лениво смотреть.

P.S. Пока смотрел список - обнаружил для себя новые коды: ERROR_VIRUS_INFECTED и ERROR_VIRUS_DELETED. Фигак.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
untrial
Дата 24.2.2011, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.2.2011

Репутация: нет
Всего: нет



Большое спасибо CodeMonkey
PM   Вверх
CodeMonkey
Дата 24.2.2011, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Забыл ещё сказать - чтобы узнать типичные коды ошибок CreateaFile - ищи в документации по функции строку "ERROR_" (без кавычек).

Получишь такие слова:

Цитата

You cannot request a sharing mode that conflicts with the access mode that is specified in an existing request that has an open handle. CreateFile would fail and the GetLastError function would return ERROR_SHARING_VIOLATION.


Цитата

If the specified file exists and is writable, the function overwrites the file, the function succeeds, and last-error code is set to ERROR_ALREADY_EXISTS.
If the specified file does not exist and is a valid path, a new file is created, the function succeeds, and the last-error code is set to zero.


Цитата

If the specified file exists, the function fails and the last-error code is set to ERROR_FILE_EXISTS (80).


И так далее.

Откуда, кстати, видно, что код ошибки иногда полезно анализировать даже в случае успешного вызова функции - потому что он даёт доп. информацию о вызове.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
untrial
Дата 24.2.2011, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.2.2011

Репутация: нет
Всего: нет



Цитата

Откуда, кстати, видно, что код ошибки иногда полезно анализировать даже в случае успешного вызова функции - потому что он даёт доп. информацию о вызове.

Microsoft так и советует  smile 


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.