Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ReadFile - Invalid parameter (0x87)  (Прочитано 5109 раз)
0 Пользователей и 1 Гость смотрят эту тему.
maaaaaad
Гость
« : 17-07-2006 16:33 » 

Хайя, а вот и я опять, понадобилось протестить DMA контроллер (verilog),
возвращаясь к любимой тематике - пишу драйвер,

в общем траблы такие при ReadFile возвращается ошибка 0x87 (Invalid parameter)
Обработчик IRP_MJ_READ не вызывается.....
блин, так не охота переносить на IOCTL...
в общем думаю либо секьюрити, либо инициализация

Последовательность инициализации такая (Adddevice), почитал man, переставил сброс флага инициалиизации, установки флага небуферизируемого Io - не помогло  Здесь была моя ладья...

наверняка кто-то уже наступал на грабли.....последовательность инициализации такая (урезаная)




Status = IoCreateDevice(DriverObject, sizeof(XWDM_DEVICE_EXT), &devName,
            FILE_DEVICE_VFP, 0, FALSE, &deviceObject);

Status = IoCreateSymbolicLink(&linkName, &devName);




deviceObject->Flags |= DO_DIRECT_IO;
deviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
devExt->DeviceObject = deviceObject;
devExt->Pdo = PhysicalDeviceObject;
devExt->DeviceToSendIrpsTo = IoAttachDeviceToDeviceStack(deviceObject, PhysicalDeviceObject);







Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 17-07-2006 20:36 » 

И я тут неожиданно появился, совпадение? Ты опять зажег. Ты бы лучше код создания хендла и чтения привел. Моя догадка- не указал ByteOffset а открывая объект не сказал что он синхронно будет читаться- тебя послали, так как непонятно с какого смещения читать( даже если для твоего девайся неприменимо понятие смещения, то NtReadFile этого не понимает ).
Записан
maaaaaad
Гость
« Ответ #2 : 17-07-2006 21:46 » 

даааа, нет конечно, был занят несколько отвлеченными делами от внутренностей маздаев Улыбаюсь Ну или, как у вас принято, виндов. Не до нее было, хотя люблю эту операционку. Сейчас отлаживаю цельный PCI контроллер на верилоге (сбылась мечта идиота), пишу драйвер, буду к вам почаще заглядывать, хотя проблем вряд ли еще возникнет  Внимание! Говорит и показывает...
да в хендле все тривиально, че его показывать, тем более он вобще не вызывается  Не надо
причина оказалась в том что драйвер открывался (::CreateFile) с флагом оврлэпед Overlapped, а чтение (::ReadFile) производил с нулевым оверлэпедом. Про синхронность угадал. Часа 2 искал. С ума сойти... Я зол! Интересно что IOC работал с нулевым указателем на оверлэпед. А черт его знает... Помоему когда-то уже вставал на эти грабли...


« Последнее редактирование: 17-07-2006 21:55 от maaaaaad » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines