![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
не понял что-то на что ругается линковщик? пример хидера пожалуйста.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
А что за ошибки? И если есть возможность - можешь показать h-файл?
-------------------- 0x2b|~0x2b |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
В ддк кстати есть пример как общаться с драйвером.
Это сообщение отредактировал(а) bra1ny - 20.12.2009, 19:05 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
user-mode application не могут напрямую вызывать kernel-mode драйвера, только стандартными, определенными в Win32 API методами (их
smoke_man уже перечислил) Т.ч. ничего специально настраивать не надо |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Для загрузки драйвера минифильтра используется функция FilterLoad (The FilterLoad function dynamically loads a minifilter driver into the system). Объявление содержится в fltuser.h, который входит в WDK. Ее мне и нужно вызывать.
При компиляции выдается ошибка: c:\ddk\inc\ddk\fltuserstructures.h(22) : fatal error C1012: unmatched parenthesis : missing ')'. А ведь fltuserstructures.h является майрософтским файлом. Навсякий случай прикрепляю эти два файла. Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() |
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Посмотри тут.
-------------------- 0x2b|~0x2b |
|||
|
||||
KAlex1 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Smoke_man, Благодарю за полезную ссылку. оттуда я вынес что нужно в include directories добавить еще C:\WDK\inc\api.
Добавив это, ошибка сменилась на error C3861: 'FilterLoad': identifier not found. Хотя нужный fltuser.h подключен. FilterLoad это функция которую я вызываю. Я предпологаю, что это из-за того что не выполняется условие #if FLT_MGR_BASELINE, после которого в хедере идет объявление FilterLoad. Кусочек кода fltuser.h :
Вот на каких основаниях я пологаю что не выполняется условие #if FLT_MGR_BASELINE: Включив в C/C++ -> Preprocessor -> Generate Processed File - "With Line Numbers (/P)". На этапе компиляции я получаю кучу файлов .i И вставив в свой код вот такую вот проверку:
В .i файле я нахожу вот что:
Заменив проверку на :
В .i файле я такого не нахожу. Что говорит, о том что #if FLT_MGR_BASELINE не выполняется. Причем с включенной опцией C/C++ -> Preprocessor -> Generate Processed File - "With Line Numbers (/P)". Мне выдает ошибку что cannot open file '.\Debug\stdafx.obj'. Т.е. этого файла просто нет. Но это неважно потому что если откулючить эту опцию, то такой ошибки не возникает. Система WINXP SP3. Есть ли у кого-нибудь идеи почему не выполняется #if FLT_MGR_BASELINE? |
||||||||
|
|||||||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
А если добавить:
-------------------- 0x2b|~0x2b |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
К той ошибке что была \usermodeapp1\usermodeapp1dlg.cpp(288) : error C3861: 'FilterLoad': identifier not found
добавляется вот это: warning C4005: 'WINVER' : macro redefinition ...\usermodeapp1\stdafx.h(18) : see previous definition of 'WINVER' ....\usermodeapp1\usermodeapp1dlg.cpp(20) : warning C4005: '_WIN32_WINNT' : macro redefinition ....\usermodeapp1\stdafx.h(22) : see previous definition of '_WIN32_WINNT' ...\usermodeapp1\usermodeapp1dlg.cpp(21) : warning C4005: 'NTDDI_VERSION' : macro redefinition c:\ddk\inc\api\sdkddkver.h(203) : see previous definition of 'NTDDI_VERSION' Это сообщение отредактировал(а) KAlex1 - 22.12.2009, 00:23 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
скомпильте build'ом.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
У меня user-mode приложение содержит окно созданное при помощи классов MFC.
Скомпилит ли build в этом случае? Я себе не совсем представляю как буду выглядеть файлы sources. и makefile. ) Это сообщение отредактировал(а) KAlex1 - 22.12.2009, 01:21 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Проверь как определен NTDDI_VERSION (в \ddk\inc\api\sdkddkver.h)
Он должен быть или NTDDI_VISTA, а для XP должен быть сервис пак не ниже 2 |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
понятно) Я просто ради интереса скомпилил пример scanner из ддк(юзермодную часть) , которая использует FilterLoad(). Посмотрите файл sources к ней. Это сообщение отредактировал(а) bra1ny - 22.12.2009, 14:42 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
А почему бы просто не подгрузить(GetProcAddress) fltlib.dll и Вызвать FilterLoad.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
я думаю, динамически вызывать FilterLoad не пойдет, потому что если бы ее можно было вызывать когда угодно, то в хедере не было бы всяких условий. Попробую скомпилить build-oм.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |