При возникновение ошибки CreateFile возвращает INVALID_HANDLE_VALUE, для того чтобы узнать тип ошибки необходимо вызвать GetLastError. Вопрос какие возможные типы (значения) возвращает GetLastError http://msdn.microsoft.com/en-us/library/aa363858%28VS.85%29.aspx Например в *nix системах http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=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. |