Re[3]: использование Win32 API в драйвере
От: Valerio Россия linkedin.com/in/boronin
Дата: 26.07.03 04:48
Оценка: 2 (1)
Здравствуйте, YuriyAG, Вы писали:

V>>но есть способы (search for NT Insider article on www.OSR.com, >key words: revert calls) вызвать Win32 код и получить его рез-т в драйвер, затем продолжить >работу.

YAG>Поиск не не нашел ничего на revert calls...
пардон, запамятовал
it should be inverted call, self-evident!

YAG>Можно ссылочку на статью?

Kernel: Calling User Mode — Using the Inverted Call Model

YAG>Интересует возможность вызова функции из внешней длл.

YAG>Догадываюсь что это нереально, но все-же...
реально, если это Kernel-mode DLL
драйвера как раз и являются такими библиотеками обычно

multi-tier driver model тоже может быть полезна, если хочется иметь модульность в ядре
надо смотреть Creating Export Drivers в DDK/MSDN

еще есть ZwLoadDriver — документирована недавно (на ХР),
но на практике вроде есть пораньше.

YAG>И еще вопрос:

YAG>Из описания KeQuerySystemTime:
YAG>System time is typically updated approximately every ten milliseconds.
YAG>Мне нужна точность до 1ms. Может есть идеи?

посмотрите мой ответ здесь
http://www.rsdn.ru/forum/Message.aspx?mid=230660&only=1
Автор: Valerio
Дата: 02.04.03

единственное, что меня поправили уже там — говорят СЕ вариант предпочтительнее Embedded, хотя когда несколько лет (около 7) назад я занимался этим вопросом МС говорил о том, что именно в Embedded линейке они будут реализовывать realtime ф-ть. правда тогда и по СЕ не было еще толком ничего ясно

главное что в НТ ядре этого пока не планируется
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
использование Win32 API в драйвере
От: OAM Россия  
Дата: 07.07.03 09:31
Оценка:
Можно ли использовать функции Win API в драйвере WDM, в частности при обработке IOCTL кодов? Если это возможно, то что надо подключить к проекту ? Подключить windows.h не получается...
Спасибо.
ЗЫ. использую VC6++, NuMega Driver Studio 2.7
Re: использование Win32 API в драйвере
От: Аноним  
Дата: 07.07.03 13:17
Оценка:
Здравствуйте, OAM, Вы писали:

OAM> Можно ли использовать функции Win API в драйвере WDM, в частности при обработке IOCTL кодов? Если это возможно, то что надо подключить к проекту ? Подключить windows.h не получается...

OAM>Спасибо.
OAM>ЗЫ. использую VC6++, NuMega Driver Studio 2.7

Используй NT и ZW функции, их возможностей с головой хватает
Re: использование Win32 API в драйвере
От: Valerio Россия linkedin.com/in/boronin
Дата: 08.07.03 03:42
Оценка:
Здравствуйте, OAM, Вы писали:

OAM> Можно ли использовать функции Win API в драйвере WDM, в частности при обработке IOCTL кодов? Если это возможно, то что надо подключить к проекту ? Подключить windows.h не получается...

напрямую вызывать код пользовательского режима из ядра нельзя.

но есть способы (search for NT Insider article on www.OSR.com, key words: revert calls) вызвать Win32 код и получить его рез-т в драйвер, затем продолжить работу.

а что за такая задача, требующая именно вызова Win32 API (какого) ?
часть Win32 API просто имеет свои реализации в ядреб которые и реально являются Win32 API.

OAM>Спасибо.

OAM>ЗЫ. использую VC6++, NuMega Driver Studio 2.7
... << RSDN@Home 1.1 alpha 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: использование Win32 API в драйвере
От: OAM Россия  
Дата: 08.07.03 04:25
Оценка:
Здравствуйте, Valerio, Вы писали:

V>напрямую вызывать код пользовательского режима из ядра нельзя.


V>но есть способы (search for NT Insider article on www.OSR.com, key words: revert calls) вызвать Win32 код и получить его рез-т в драйвер, затем продолжить работу.


V>а что за такая задача, требующая именно вызова Win32 API (какого) ?

V>часть Win32 API просто имеет свои реализации в ядреб которые и реально являются Win32 API.

Спасибо за информацию и ссылку, необходимости в использовании WinAPI нет, просто было интересно, возможно ли это (а конкретно вызов GetTickCount и GetSystemTime .
Re[3]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 25.07.03 16:09
Оценка:
OAM>Спасибо за информацию и ссылку, необходимости в использовании WinAPI нет, просто было
> интересно, возможно ли это (а конкретно вызов GetTickCount и GetSystemTime .
Удалось узнать как получить системное время в драйвере?
Re[4]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 25.07.03 16:21
Оценка:
Поторопился с вопросом — ответ KeQuerySystemTime
RTFM, однако
Re[2]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 25.07.03 16:56
Оценка:
V>но есть способы (search for NT Insider article on www.OSR.com, >key words: revert calls) вызвать Win32 код и получить его рез-т в драйвер, затем продолжить >работу.
Поиск не не нашел ничего на revert calls...
Можно ссылочку на статью?

Интересует возможность вызова функции из внешней длл.

Догадываюсь что это нереально, но все-же...


И еще вопрос:
Из описания KeQuerySystemTime:
System time is typically updated approximately every ten milliseconds.
Мне нужна точность до 1ms. Может есть идеи?

Спасибо заранее!
Re[3]: использование Win32 API в драйвере
От: Alex Fedotov США  
Дата: 25.07.03 19:08
Оценка:
Здравствуйте, YuriyAG, Вы писали:

V>>но есть способы (search for NT Insider article on www.OSR.com, >key words: revert calls) вызвать Win32 код и получить его рез-т в драйвер, затем продолжить >работу.


YAG>Поиск не не нашел ничего на revert calls... :(

YAG>Можно ссылочку на статью?

YAG>Интересует возможность вызова функции из внешней длл.


Если это специально написанная kernel-mode dll, то можно. Поиск google groups на "kernel-mode DLL", "SystemLoadImage" поможет.
-- Alex Fedotov
Re[3]: использование Win32 API в драйвере
От: vasketsov Россия http://ntprog.by.ru
Дата: 25.07.03 20:06
Оценка:
Здравствуйте, YuriyAG, Вы писали:

YAG>Мне нужна точность до 1ms. Может есть идеи?

ZwSetTimerResolution
Васкецов Сергей
http://registry.km.ru
Re[4]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 28.07.03 08:28
Оценка:
Спасибо большое за ссылки,
буду изучать.
Что в NT с real-time туго я знаю, но уже поздно что-то менять — шэф проекта наобещал такую точность регистрации прихода данных. Хочу попробовать (допускается погрешность до 5мс), мне сейчас нужен источник времени. Внешняя DLL нужна как раз для этой цели — это DLL доступа к плате GPS.
Еще раз спасибо,
Юрий.
Re[4]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 28.07.03 08:35
Оценка:
V>ZwSetTimerResolution
Не нашел в DDK.
Но наверное это все-же не тот вариант. Мне нужно именно системное время(астрономическое), но с обновлением раз в 1 мс
Re[5]: использование Win32 API в драйвере
От: Valerio Россия linkedin.com/in/boronin
Дата: 28.07.03 09:00
Оценка:
Здравствуйте, YuriyAG, Вы писали:

YAG>Спасибо большое за ссылки,

YAG>буду изучать.
YAG>Что в NT с real-time туго я знаю, но уже поздно что-то менять — шэф проекта наобещал такую точность регистрации прихода данных. Хочу попробовать (допускается погрешность до 5мс), мне сейчас нужен источник времени. Внешняя DLL нужна как раз для этой цели — это DLL доступа к плате GPS.
YAG>Еще раз спасибо,
YAG>Юрий.
в принципе 5мс можно попробовать получить с помощью multimedia timers (timeXxx from winmm.dll)
это довольно просто использовать в своих программах и быстро попробовать
но следует иметь ввиду все мои замечания — "небольшие" сбои раз в секунду\минуты\час\сутки (как повезет) вполне возможны
опять же смотря что за обработчики у Вас.

кстати это все в user mode и посему никаких kernel mode dll не нужно будет
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[6]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 28.07.03 09:21
Оценка:
V>в принципе 5мс можно попробовать получить с помощью multimedia timers (timeXxx from winmm.dll)
Спасибо,
это немного не то — мне нужно системное астрономическое время (чч:мм:сек.мсек)
Проблема что оно обновляется в НТ раз в 10мс...
Re[7]: использование Win32 API в драйвере
От: Valerio Россия linkedin.com/in/boronin
Дата: 28.07.03 10:05
Оценка:
Здравствуйте, YuriyAG, Вы писали:

V>>в принципе 5мс можно попробовать получить с помощью multimedia timers (timeXxx from winmm.dll)

YAG>Спасибо,
YAG>это немного не то — мне нужно системное астрономическое время (чч:мм:сек.мсек)
YAG>Проблема что оно обновляется в НТ раз в 10мс...

вроде бы не проблема вычислить добавку к последнему астрономическому времени через RDTSC инструкцию современных процессоров?
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[8]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 28.07.03 10:40
Оценка:
YAG>>это немного не то — мне нужно системное астрономическое время (чч:мм:сек.мсек)
YAG>>Проблема что оно обновляется в НТ раз в 10мс...
V>вроде бы не проблема вычислить добавку к последнему астрономическому времени через RDTSC
> инструкцию современных процессоров?
Слабо представляю себе как это сделать...
Раз время обновляется раз в 10мс, то для того что-бы получить нужную точность, нужно примерно следующее — создать свои собственные "часы" — те таймер, который будет тикать раз в 1мс, отследит момент обновления системных часов, и от этого момента отсчитывать тики или миллисекунды.... Громоздко как-то Попытаюсь связаться с фирмой поставляющей нам GPS-ы, может можно достучаться до карты GPS с драйвера уровня ядра.
Из-за ошибки менеджера будем превращать НТ в реал-тайм
Re[9]: использование Win32 API в драйвере
От: Valerio Россия linkedin.com/in/boronin
Дата: 29.07.03 03:53
Оценка:
V>>вроде бы не проблема вычислить добавку к последнему астрономическому времени через RDTSC
>> инструкцию современных процессоров?
YAG>Слабо представляю себе как это сделать...
можно попробовать получать кол-во тиков в мультимедийном (около 5мс +\- как повезет) обработчике и вычислять с доп точностью свое вн время? а про 10 мс забить или спрашивать скажем раз в секунду — для коррекции. плохо все это , согласен

YAG>Раз время обновляется раз в 10мс, то для того что-бы получить нужную точность, нужно примерно следующее — создать свои собственные "часы" — те таймер, который будет тикать раз в 1мс, отследит момент обновления системных часов, и от этого момента отсчитывать тики или миллисекунды.... Громоздко как-то Попытаюсь связаться с фирмой поставляющей нам GPS-ы, может можно достучаться до карты GPS с драйвера уровня ядра.

YAG>Из-за ошибки менеджера будем превращать НТ в реал-тайм
может быть у этого менеджера первый проект с железом и ПО? тогда это стандартная ошибка
которая самая первая (и часто большая) — когда начинают разрабатывать софт в отрыве от железа (выбирают железо не думая о программной стороне и\или когда разработчики железа не советуются с разработчиками ПО).
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[10]: использование Win32 API в драйвере
От: Valerio Россия linkedin.com/in/boronin
Дата: 29.07.03 04:04
Оценка:
Здравствуйте, Valerio, Вы писали:

V>>>вроде бы не проблема вычислить добавку к последнему астрономическому времени через RDTSC

>>> инструкцию современных процессоров?
YAG>>Слабо представляю себе как это сделать...
еще гляньте related-топик
Автор: Dutchman
Дата: 27.03.02
рядом — может быть будет полезен
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[11]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 29.07.03 07:46
Оценка:
V>еще гляньте related-топик
Автор: Dutchman
Дата: 27.03.02
>рядом — может быть будет полезен

Спасибо, интересно.
Re[10]: использование Win32 API в драйвере
От: YuriyAG Франция  
Дата: 29.07.03 07:50
Оценка:
V>может быть у этого менеджера первый проект с железом и ПО? тогда это стандартная ошибка
V>которая самая первая (и часто большая) — когда начинают разрабатывать софт в отрыве от железа >(выбирают железо не думая о программной стороне и\или когда разработчики железа не советуются > с разработчиками ПО).
Скорее невнимательность. Раньше вместо ПС использовался кусок железяки с какой-то версией Юникса. все это было как-то так неудобно и не современно.... зато с реал таймом.
А потом пересели на НТ. Стало все красиво и удобно, вот только в техзадании 1мс подчистить забыли
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.