0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 15
|
|||||||||||
1 | |||||||||||
CreateFileMapping: ошибка с кодом 87 при создании проекции флэш-накопителя18.11.2016, 13:28. Показов 1522. Ответов 3
Метки нет (Все метки)
При создании проекции флэш-накопителя, функция возвращает NULL. При этом я открываю флэш-накопитель как обычный файл:
Далее я передаю хэндл в CreateFileMapping, но оно не создаёт проекцию и возвращает NULL:
Возможно ли вообще таким образом создать проекцию флэшки? Буду раз за любую помощь. Добавлено через 14 часов 12 минут Неужели никто не сталкивался с данной проблемой?
0
|
18.11.2016, 13:28 | |
Ответы с готовыми решениями:
3
Неполадки с запуском флэш накопителя Аппаратный серийный номер флэш накопителя Ошибка при создании дескриптора окна при динамическом создании кнопок Ошибка доступа при удалении ярлыков с флеш-накопителя |
Ушел с форума
|
|
18.11.2016, 14:40 | 2 |
Наверное, никто не пробовал мапить целый том вместо файла.
Ты уверен, что такой сценарий вообще поддерживается CreateFileMapping?
0
|
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 15
|
|
18.11.2016, 21:50 [ТС] | 3 |
Если преподаватель сказал, что можно спроецировать том, значит можно.
0
|
Ушел с форума
|
||||||
19.11.2016, 10:21 | 4 | |||||
Видимо, преподаватель ошибся.
Маппинг в Windows работает только с файлами (обычными файлами на диске или файлом подкачки - pagefile). Если передать в CreateFileMapping/NtCreateSection хэндл какого-то другого объекта, то функция вернет ошибку. Я могу даже попробовать объяснить, почему это не работает. Имя тома, такое как 'C:' или '\\.\C:', на самом деле является просто символьной ссылкой на соответствующее устройство, например '\Device\HarddiskVolume2'. В этом можно убедиться, запустив программу WinObj из пакета Sysinternals и поискать букву диска в каталоге 'GLOBAL??'. Когда вызывается функция CreateFileMapping или ее низкоуровневый аналог Zw(Nt)CreateSection, она среди прочего проверяет, является ли переданный хэндл файлом, и если нет - возвращает ошибку. Вот фрагмент известного исходника из Windows Research Kernel: \base\ntos\mm\createsect.c
IoDeviceObjectType, поэтому ObReferenceObjectByHandle завершается с ошибкой STATUS_OBJECT_TYPE_MISMATCH и CreateFileMapping/Zw(Nt)CreateSection, соответственно, тоже. Ну и в описании функции CreateFileMapping сказано следующее:
2
|
19.11.2016, 10:21 | |
19.11.2016, 10:21 | |
Помогаю со студенческими работами здесь
4
ffmpeg - ошибка при преобразовании видео в флэш CreateFileMapping ошибка в CopyMemory Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |