Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрет доступа к каталогу 
V
    Опции темы
bra1ny
Дата 20.12.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 26.12.2008

Репутация: 2
Всего: 3



не понял что-то на что ругается линковщик? пример хидера пожалуйста. 
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России.
PM   Вверх
smoke_man
Дата 20.12.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 5
Всего: 17



А что за ошибки? И если есть возможность  - можешь показать h-файл?


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
bra1ny
Дата 20.12.2009, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 26.12.2008

Репутация: 2
Всего: 3



В ддк кстати есть пример  как общаться с драйвером. 
Код

src\general\ioctl


Это сообщение отредактировал(а) bra1ny - 20.12.2009, 19:05
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России.
PM   Вверх
xvr
Дата 20.12.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



user-mode application не могут напрямую вызывать kernel-mode драйвера, только стандартными, определенными в Win32 API методами (их 
smoke_man уже перечислил)
Т.ч. ничего специально настраивать не надо

PM MAIL   Вверх
KAlex1
Дата 21.12.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 )
Присоединённый файл  ddk.rar 4,98 Kb
PM MAIL   Вверх
smoke_man
Дата 21.12.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 5
Всего: 17



Посмотри тут.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
KAlex1
Дата 21.12.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 : 
Код

...
#define FLT_MGR_BASELINE (((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4))) || \
                          ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WINXPSP2))) || \
                          ((OSVER(NTDDI_VERSION) == NTDDI_WS03)  && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1))) ||  \
                          (NTDDI_VERSION >= NTDDI_VISTA))

#define FLT_MGR_AFTER_XPSP2 (((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4))) ||  \
                             ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (SPVER(NTDDI_VERSION) >  SPVER(NTDDI_WINXPSP2))) ||  \
                             ((OSVER(NTDDI_VERSION) == NTDDI_WS03)  && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1))) ||   \
                             (NTDDI_VERSION >= NTDDI_VISTA))
...
#include <fltUserStructures.h>

#ifdef __cplusplus
extern "C" {
#endif

#if FLT_MGR_BASELINE
//
//  Functions for loading, unloading and monitoring Filters
//

__checkReturn
HRESULT
WINAPI
FilterLoad (
    __in LPCWSTR lpFilterName
    );

__checkReturn
HRESULT
WINAPI
FilterUnload (
    __in LPCWSTR lpFilterName
    );
...
#endif

Вот на каких основаниях я пологаю что не выполняется условие #if FLT_MGR_BASELINE:
Включив в C/C++ -> Preprocessor -> Generate Processed File - "With Line Numbers (/P)". На этапе компиляции я получаю кучу файлов .i
И вставив в свой код вот такую вот проверку: 
Код

int test(void)
{
    FLT_MGR_BASELINE;
}

В .i файле я нахожу вот что:
Код

int test(void)
{
(((((0x05010000) & 0xFFFF0000) == 0x05000000) && ((((0x05010000) & 0x0000FF00) >> 8) >= (((0x05000400) & 0x0000FF00) >> 8))) || ((((0x05010000) & 0xFFFF0000) == 0x05010000) && ((((0x05010000) & 0x0000FF00) >> 8) >= (((0x05010200) & 0x0000FF00) >> 8))) || ((((0x05010000) & 0xFFFF0000) == 0x05020000) && ((((0x05010000) & 0x0000FF00) >> 8) >= (((0x05020100) & 0x0000FF00) >> 8))) || (0x05010000 >= 0x06000000));
}


Заменив проверку на :
Код

#if FLT_MGR_BASELINE
int test(void)
{
    FLT_MGR_BASELINE;
}
#endif

В .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?  

PM MAIL   Вверх
smoke_man
Дата 21.12.2009, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 5
Всего: 17



А если добавить:
Код

#define WINVER 0x500
#define _WIN32_WINNT 0x0500
#define NTDDI_VERSION NTDDI_WINXP



--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
KAlex1
Дата 22.12.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 )
Присоединённый файл  stdafx.h 2,80 Kb
PM MAIL   Вверх
bra1ny
Дата 22.12.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 26.12.2008

Репутация: 2
Всего: 3



скомпильте build'ом. 
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России.
PM   Вверх
KAlex1
Дата 22.12.2009, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 18.10.2009
Где: Ukraine, Zaporozh ye

Репутация: нет
Всего: нет



У меня user-mode приложение содержит окно созданное при помощи классов MFC. 
Скомпилит ли build в этом случае? Я себе не совсем представляю как буду выглядеть файлы sources. и makefile. ) 


Это сообщение отредактировал(а) KAlex1 - 22.12.2009, 01:21
PM MAIL   Вверх
xvr
Дата 22.12.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Проверь как определен NTDDI_VERSION (в \ddk\inc\api\sdkddkver.h)
Он должен быть или NTDDI_VISTA, а для XP должен быть сервис пак не ниже 2

PM MAIL   Вверх
bra1ny
Дата 22.12.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 26.12.2008

Репутация: 2
Всего: 3



Цитата

У меня user-mode приложение содержит окно созданное при помощи классов MFC. 

понятно) 

Я просто ради интереса скомпилил пример scanner из ддк(юзермодную часть) , которая использует FilterLoad(). Посмотрите файл sources к ней.

Это сообщение отредактировал(а) bra1ny - 22.12.2009, 14:42
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России.
PM   Вверх
bra1ny
Дата 24.12.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 26.12.2008

Репутация: 2
Всего: 3



А почему бы просто  не подгрузить(GetProcAddress)  fltlib.dll и Вызвать FilterLoad. 
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России.
PM   Вверх
KAlex1
Дата 26.12.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 18.10.2009
Где: Ukraine, Zaporozh ye

Репутация: нет
Всего: нет



я думаю, динамически вызывать FilterLoad не пойдет, потому что если бы ее можно было вызывать когда угодно, то в хедере не было бы всяких условий.  Попробую скомпилить build-oм.
PM MAIL   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1119 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.