Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обмен информацией с драйвером, КАК??? 
V
    Опции темы
ne0n
  Дата 17.7.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



Hi 2 All!!! Суть вопроса такова, есть некая дровина, на точки входа в драйвер выполняеться следующая процедура:
Код

VOID BlaBla(int Some) 
{...
 }


Драйвер компилируеться нормально и работает тоже неплохо, но дело в том что параметр Some надо переодически менять, как мне сделать такое приложение на дельфях, вроде покопал чуть-чуть
насколько я понял работать надо DeviceIoControl, через CreateFile узнаем хэндел драйвера передаем его в DeviceIoControl. Адальше вроде туговато идет, может есть какиенибудь примеры или статьи....
PM MAIL ICQ   Вверх
bems
Дата 17.7.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(ne0n @  17.7.2007,  10:55 Найти цитируемый пост)
VOID BlaBla(int Some)
из какого места это у драйвера растет? Это DriverEntry?  smile 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
ne0n
Дата 17.7.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



Цитата(bems @  17.7.2007,  20:10 Найти цитируемый пост)
Это DriverEntry? 


это отдельный процедура, которая вызываеться на точке входа драйвера...
Код


NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pusRegistryPath)
{
  BlaBla(1234);
  return STATUS_NOT_IMPLEMENTED;
}



PM MAIL ICQ   Вверх
W4FhLF
Дата 18.7.2007, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



ne0n, так Some у тебя локальная переменная, как ты её сменишь? Объяви глобально, тогда другой разговор, можно поменять из любой части дрова. 
Про обмен информацией в самом простом варианте читай здесь:
http://wasm.ru/article.php?article=drvw2k04


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
ne0n
Дата 18.7.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



W4FhLF,  some не локальная, Four-F конечно молодец, я это читал, но  блин до асм походу еще не дорос smile 
Мне бы ченито на Си+Delphi smile 
PM MAIL ICQ   Вверх
W4FhLF
Дата 18.7.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



ne0n, так там теор. основы очень хорошо разобраны, далее можно уже и на СИ найти без проблем. И вообще, Асм у Fouf-F больше не высокоуровневый смахивает, поэтому, чтобы разобраться достаточно знать 5-6 команд. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
ne0n
Дата 18.7.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



W4FhLF, ладно я попробую...., мне тут ребята подсказали еще один способ, через mmf попробовать замутить,опять же тыкнули в статьи Fouf-F, вроде попроще чем через Менеждер Ввода\Вывода..
Как ты думаешь стоит пробовать через mmf???

Это сообщение отредактировал(а) ne0n - 18.7.2007, 17:18
PM MAIL ICQ   Вверх
bartram
Дата 18.7.2007, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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



Цитата(ne0n @  18.7.2007,  19:16 Найти цитируемый пост)
Как ты думаешь стоит пробовать через mmf???

Зачем? Если менеджер ввода\вывода специально для этого придумали.

Добавлено через 1 минуту и 30 секунд
Делай так, как тебе проще, главное чтобы потом не пришлось жалеть


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
ne0n
Дата 19.7.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



ладно думаю тему можно считать решенной, вроде определился, буду работать  smile 
всем спасибо!!!
PM MAIL ICQ   Вверх
DoZENT
Дата 20.7.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я вот так работаю:

Код

procedure TDriver.SendData(DriverName: string; const buffer);
var
hDriver : THandle;
Written : DWORD;
begin

  hDriver := CreateFile (PChar ('\\.\' + DriverName),GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);

  if hDriver <> INVALID_HANDLE_VALUE then
  begin

    if not WriteFile (hDriver, buffer, SizeOf(buffer),Written, nil) then
      MessageBox (0, PChar ('Работа с драйвером невозможна. Ошибка: ' + #13#10 + GetErrorText (GetLastError)), 'Ошибка', MB_ICONERROR);
    Closehandle (hDriver);

  end
  else
    //MessageBox (0, PChar ('Драйвер не отвечает на запросы приложения. Ошибка: ' + #13#10 + GetErrorText (GetLastError)), 'Ошибка', MB_ICONERROR);


end;


Или можно через DeviceIoControl, в принципе тоже самое:
Код

function TDriver.RegisterEvent (DriverName : string;Event : THandle) : DWORD;
var
hDriver : THandle;
junk : DWORD;
begin

  hDriver := CreateFile (PChar ('\\.\' + DriverName),GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);

  if (hDriver <> ERROR_FILE_NOT_FOUND) and (hDriver <> INVALID_HANDLE_VALUE) then
  begin

    DeviceIoControl (hDriver, 1, @Event,sizeof(Event), nil, 0, junk, nil);

    Result := junk;
    CloseHandle (hDriver);

  end
  else
    Result := 0;

end;



--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

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


 




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


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

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