Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/96: Рейтинг темы: голосов - 96, средняя оценка - 4.82
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26

CreateFile() == INVALID_HANDLE_VALUE

11.08.2013, 03:43. Показов 20394. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вызов происходит с такими параметрами:

C++
1
2
3
4
5
6
7
8
9
HANDLE hFile = CreateFile(
                                     "out.bin",                       //с полным путем тоже пробовал
                                      GENERIC_WRITE,    // тоже + GENERIC_READ | GENERIC_WRITE
                                      NULL,                   // + FILE_SHARE_READ | FILE_SHARE_WRITE
                                      NULL,  
                                      CREATE_ALWAYS,
                                      FILE_ATTRIBUTE_NORMAL,
                                      NULL
                                    )
К сожалению всегда возвращает -1.
Где ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.08.2013, 03:43
Ответы с готовыми решениями:

INVALID_HANDLE_VALUE при попытке найти файл
Приветствую. В таком вот коде : WIN32_FIND_DATA FindFileData; HANDLE hf; hf=FindFirstFile(Buffer,...

Функция CreateFile
Добрый день. У меня такая проблема при работе с функцией: функция CreateFile возвращает -1, если ей передать полное имя файла или 0, если...

CreateFile, WriteFile
Подскажите работающий код программы на с++, которая создаёт файл с помощью CreateFile

30
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.08.2013, 19:20
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Специально проверил на WIN7 VS2012 папка проекта на рабочем столе всё отрабатывает.
И у меня тоже все ок.
Могу предположить еще один вариант, снова связанный с security: процесс, который
запускается, каким-то образом получает дескриптор безопасности, в котором отсутствуют
разрешения на доступ к данному файлу. Например, процесс выполняется на low integrity level.

Добавлено через 1 минуту
Других вариантов (если не считать вмешательства каких-нибудь антивирусов) у меня нет.
1
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
11.08.2013, 19:32  [ТС]
Переделал на ассемблера под х64 и снова тотоже (р)возврат:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
format PE64
entry begin
 
include 'win64ax.inc'
 
section 'data' data readable writeable
 
_fN  db 'C:\Users\Myname\Desktop\out\out.bin',0
_str db "invalid",0
hFile   dq  ?
 
 
section 'code' code readable executable
begin:
 
sub rsp,8*10
 
 
xor rcx,rcx ;
mov rdx,FILE_ATTRIBUTE_NORMAL
mov r8,CREATE_ALWAYS
xor r9,r9
push 0
push GENERIC_WRITE
mov rdx,_fN
push rax
call [CreateFileA]
 
 
cmp rax, 0FFFFFFFFFFFFFFFFh
je ihv
 
exit: xor rcx,rcx
call [ExitProcess]
 
ihv:
mov rcx,MB_OK
mov rdx, _str
mov r8, _str
xor r9,r9
call [MessageBoxA]
 
jmp exit
;==========================================
 
section "import" import data readable writeable
 
  dd 0,0,0,RVA name_kernel,RVA table_kernel
  dd 0,0,0,RVA name_user,RVA table_user        
  dd 0,0,0,0,0
 
 
  table_kernel:
    ExitProcess dq RVA _ExitProcess
    CreateFileA    dq RVA _CreateFileA
    dq 0
  table_user:
    MessageBoxA dq RVA _MessageBoxA
    dq 0
 
 
 
  name_kernel db 'KERNEL32.DLL',0
  name_user db 'USER32.DLL',0
 
 
  _ExitProcess dw 0
    db 'ExitProcess',0
  _CreateFileA dw 0
    db 'CreateFileA',0
 
  _MessageBoxA dw 0
    db 'MessageBoxA',0
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.08.2013, 19:52
Спрошу на прощание - а GetLastError везде тот же, 5 (access denied) ?
1
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
11.08.2013, 19:53  [ТС]
0
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
11.08.2013, 20:05  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Спрошу на прощание - а GetLastError везде тот же, 5 (access denied) ?
Тоже 5.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.08.2013, 20:51
Ultima ratio (в порядке бреда).
Что, если из этой программы запустить (через CreateProcess) cmd.exe, а в
открывшейся консоли набрать "del имя-файла" ? Файл out.bin можно удалить
таким способом или нет ? Если нет - значит у процесса не все в порядке с
дескриптором безопасности и система не разрешает ему открывать данный
файл с правами на удаление-изменение. Хотя это все ну о-очень странно...
1
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
11.08.2013, 21:16  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Ultima ratio (в порядке бреда).
Что, если из этой программы запустить (через CreateProcess) cmd.exe, а в
открывшейся консоли набрать "del имя-файла" ? Файл out.bin можно удалить
таким способом или нет ? Если нет - значит у процесса не все в порядке с
дескриптором безопасности и система не разрешает ему открывать данный
файл с правами на удаление-изменение. Хотя это все ну о-очень странно...
Выдает что файл открит в другой программе. В этот момент Unlocker выдает ахинею:
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
11.08.2013, 21:19
Цитата Сообщение от hello_hell Посмотреть сообщение
К сожалению if true. Что за машина и ось?
- написано чёрным по белому
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
пециально проверил на WIN7 VS2012 папка проекта на рабочем столе
первый скрин ХР 32 VS 2008

Добавлено через 1 минуту
hello_hell, если не рабаотет и до сих пор у тебя или кривая ИДЕ или не знаю RECYCL.BIN пытаешся переписать. Ищи косяк в студии, больше грешить не на что.
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.08.2013, 21:19
Цитата Сообщение от hello_hell Посмотреть сообщение
Выдает что файл открит в другой программе.
Как Вы тогда его проводником удаляли ? Система ведь не даст удалить файл,
открытый в другой программе.
1
11.08.2013, 21:26

Не по теме:

Убежденный, у меня есть подозрение, что человек хочет переписать что-то например exe какой-нибудь.
Запрет на доступ бывает когда хотим переписать запущенный explorer winlogon svchost и т.д, доп вариантом идёт кривизна студии, тоже частое явление. Ещё можно напороться на Recycle.bin (корзину), который тоже конечно не перепишешь

1
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
12.08.2013, 00:28  [ТС]
Оказывается это банально блокировка антивируса, но все-равно всем огромное спасибо. Тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2013, 00:28
Помогаю со студенческими работами здесь

Ошибки CreateFile
File=CreateFile(FileName, GENERIC_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL); Что происходит, если файла нет? Исключение? Или функция...

WinAPI CreateFile
хай.. сорри тупой вопрос.. хочу чтоб в функции создания файла можна самому вписать имя файла.. но не могу плонять почему выдает ошибку ((...

Создать файл на с++ (createfile)
подскажите код программы, которая создаст с помощью createfile текстовый файл в корневом каталоге диска (например c:\\)

CreateFile and ReadFile, WinAPI
всем доброго времени суток! открываю текстовый файл и вывожу содуржимое в консоль: char buf; DWORD nl; HANDLE hf =...

CreateFile несколько файлов
Хочу последовательно открыть несколько файлов, использую функцию CreateFile. Открываю первый файл, читаю его, закрываю HANDLE, после чего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru