В своем драйвере решил попробовать использовать OpenMP. Драйвер использует распараллеливаемый алгоритм преобразования данных, поэтому, может удастся распараллелить. Пока не знаю, будет ли толк в выигрыше по времени, но суть не вопроса не в этом. Суть вопроса в том, что не получается OpenMP подключить: в VC в свойствах проекта ставлю галку поддержки OpenMP, подключаю vcomp.lib. Все компилится без ошибок. Создаю сервис, sc create <имя_сервиса> type path <путь_к_sys_файлу>. Все ОК. А вот когда запускаю драйвер: sc start <имя_сервиса> возникает ошибка [SC] Не найден указанный файл.
Какой файл? vcomp90.dll подсовывал в windows\system32, в текущую папку. Не помогло.
Здравствуйте, itaim, Вы писали:
I>Какой файл? vcomp90.dll подсовывал в windows\system32, в текущую папку. Не помогло.
Если есть зависимости от user-mode dll, то про ядро можно забыть. depends в помощь.
Здравствуйте, pva, Вы писали:
pva>Здравствуйте, itaim, Вы писали:
I>>Какой файл? vcomp90.dll подсовывал в windows\system32, в текущую папку. Не помогло. pva>Если есть зависимости от user-mode dll, то про ядро можно забыть. depends в помощь.
Да я с OpenMP раньше дела не имел, поэтому толком не знаю, есть ли в vcomp.dll зависимость от UserMode dll. Может кто использовал OpenMP в ядре, поделитесь как. Вообще у меня идея разнести считывание/запись данных с разных устройств по потокам: чтобы собрать пакет данных я должен части пакета считать с устройств. Дабы не читать/писать последовательно, хочу делать это одновременно. Как я предполагаю, можно создать потоки, привязать к ядрам и использовать эти потоки при одновременном считывании/записи данных. Реализовать это думал через OpenMP. Может есть другие средства?
Здравствуйте, itaim, Вы писали:
I>В своем драйвере решил попробовать использовать OpenMP.
Без шансов. OpenMP — средство для приложений. Наверно, сделать реализацию OpenMP для kernel mode возможно. Но её полезность и востребованность вызывает сильные сомнения.