Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 2 из 116<  1  2  3  4  5 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Цитата:
in/out под Windows делать нельзя, если ты не используеш спейиальный драйвер по типу GiveIO
Ray Adams ты же для меня сам перекомпилил GiveIO :wink: За что тебе большое спасибо, еще раз! Код рабочий поскольку и под Пасом и под асмом я получаю то, что хочу. Решил попытать Делфи(перед тем как разбираться в VC7), а он никак. :-(

_________________
Ку ку



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon Так и писал, что не загрузив драйвер в начале, ты никак не сможеш использовать команды in/out под Windows! :)
Или ты не знаеш как его грузануть? Давай дам пример.


 

Member
Статус: Не в сети
Регистрация: 13.02.2004
Откуда: Вологда-Москва
Товарищи! у меня отстой (а может у делфи?!)
Цикл:
выводит в мемо строчку, и шесть чилел (каждая в своей строчке), выводит разные - три раза (цифры и строка меняются в зависимости от i (всё в массивах) но почему-то неработает! выводится только первый строка и щифры, а вторые две не выводятся! хотя имеют значение. во:
for i:=0 to 3 do
begin
ii:=i*8;
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii]:=f[ii];
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii+1]:=inttostr(g[ii,0]);
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii+2]:=inttostr(g[ii,1]);
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii+3]:=inttostr(g[ii,2]);
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii+4]:=inttostr(g[ii,3]);
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii+5]:=inttostr(g[ii,4]);
frmMain.memH.Lines.Add(' ');
frmMain.memH.Lines[ii+6]:=inttostr(g[ii,5]);
end;


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams
Цитата:
Или ты не знаеш как его грузануть? Давай дам пример.

Он уже загружен, но пример давай, а то у меня уже голова кругом.
Цитата:
Так и писал, что не загрузив драйвер в начале, ты никак не сможеш использовать команды in/out под Windows!

Ну так если он загружен и асм через него под Виндой выдает нормальные значения, а Делфи в тот же момент выскакивает с ошибкой:
Цитата:
Project Project2.exe raised exception class EPrivilege with message "Privileged instruction"

_________________
Ку ку


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 10.04.2004
Откуда: Belarus, Grodno
Цитата:
in/out под Windows делать нельзя


На NT-платформе нельзя, на 9х – можно.

_________________
http://cbid.amdclub.ru


 

Member
Статус: Не в сети
Регистрация: 20.11.2003
Halst frmMain.memH.Lines[ii] - это ii-я строка, а вот frmMain.memH.Lines[i][ii]- это ii-я позиция i-ой строки.
И вообще - чего так коряво???

frmMain.memH.Сlear
for...
В цикле изменяй переменную S:=че тебе там надо
frmMain.memH.Lines.Add(S);
end;


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon Погоди, от того что драйвер загружен это еще ничего не дает твоей программе. Ты самой программой должен подключится к драйверу! Какже по другому то?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Мммм.... А почему асм все данные получает? И как подключить программу? 3 книги по Делфи и нигде не написано. Ох это виндовое программирование :mad2:

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 20.11.2003
Halst да, кстати, не Add, а Append !


 

Member
Статус: Не в сети
Регистрация: 26.05.2003
Откуда: Москва
gms@bk.ru - спрашивай не стесняйся я сам после АСМа матерился на дельфи :)


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon Вот кусок кода по загрузке драйвера , аналогичного твоему.
Код:
function TfrmAGPInfo.LoadIODriver: boolean;
var s:String;
    hManager,hService:SC_HANDLE;
    b:PChar;
    TR:TResourceStream;
    tmpsdir:array[0..255] of char;
begin
     if Win32Platform<>VER_PLATFORM_WIN32_NT   then
        begin
             result:=true;
             exit;
        end;
     TR:=TResourceStream.Create(0,'AGPSYS',RT_RCDATA);
     GetTempPath(255,tmpsdir);
     s:=StrPas(tmpsdir);
     s:=s+'rvbedit.sys';
     TR.SaveToFile(s);
     TR.Free;
     //s:=ExtractFilePath(ParamStr(0))+'\rvbedit.sys';
     //
     hManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
     if (hManager=0) then
     begin
          ShowMessage(frmMain.GetString(3055));
          result:=false;
          exit;
     end;
hService := CreateService (hManager     // SCManager database
               , 'rvbedit'    // name of service
            , 'rvbedit'    // name to display
         , SERVICE_ALL_ACCESS  // desired access
      , SERVICE_KERNEL_DRIVER  // service type
      , SERVICE_DEMAND_START  // start type
      , SERVICE_ERROR_NORMAL  // error control type
      , pchar(s)    // service's binary
      , nil      // no load ordering group
      , nil      // no tag identifier
      , nil      // no dependencies
      , nil      // LocalSystem account
      , nil      // no password
      );
 if (hService=0) then
 begin
      //RaiseLastOSError;
      result:=false;
      exit;

 end;
 if (hService<>0) then CloseServiceHandle(hService);
 hService := OpenService(hManager, 'rvbedit', SERVICE_ALL_ACCESS);
 if (hService<>0) then
 begin
  b:=nil;
  if StartService(hService, 0, b) then
  CloseServiceHandle(hService)
  else ;//RaiseLastOSError;
 end;

 m_hDriver := CreateFile('\\.\rvbedit', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if (m_hDriver = INVALID_HANDLE_VALUE) then
 begin
  CloseServiceHandle(hManager);
  result:=FALSE;
  exit;
 end;
 CloseServiceHandle(hManager);
 result:=true;
 try
   deletefile(s);
 except

 end;

end;

Драйвер лежит прямо в .exe иде ресурса, но если он у тебя просто в каталоге с программой, то там есть заремаренные строки
//s:=ExtractFilePath(ParamStr(0))+'\rvbedit.sys';
//
все что до них убери, да и замени везде rvbedit.sys на свой.
вот этой строкой ты подключаешся к драйверу.
m_hDriver := CreateFile('\\.\rvbedit', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams огромное спасибо :D
Я так понял это часть исходного кода X-BIOS Editor, который я активно юзал. Ты использовал встроенные ф-ции Делфи или все-таки делал асмовские вставки?
Надо все-таки попробовать подгрузить драйвер на Делфи!

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Цитата:
Делфи или все-таки делал асмовские вставки?

Использовал ассемблер в Дельфи, так точнее будет сказано.
главное тебе не сколько даже загрузить сам драйвер, сколько подключится к нему через CreateFile


 

Member
Статус: Не в сети
Регистрация: 07.04.2004
Откуда: Планета Земля
Люди добрые.
Пожалуста дайте исходники либо ссылочку на факи по след. вопросу.

Нужно в найти окошко с заголовком ХХХ найти в этой форме строку для ввода (EDIT) и написать туда текст "ххххххх".

Заранее благодарен


Последний раз редактировалось web-dav 20.05.2004 11:04, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
Поправь пост, формулировка непонятна. Окно надо искать?
Посмотри соседние ветки, там уже есть большая часть ответов.

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Member
Статус: Не в сети
Регистрация: 07.04.2004
Откуда: Планета Земля
armadillo
Цитата:
Поправь пост, формулировка непонятна. Окно надо искать?
Посмотри соседние ветки, там уже есть большая часть ответов


Сорри за офтоп.
Надо найти окошко в этом окошке найти элемент EDIT и изменить его значение

_________________
Keyboard not found, press F1 to continue...
Press any key to continue, or another to exit...


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon
Вот функции, которые которые выдают байт и word из адресного пространства PCI
Код:
    procedure GetBusDataByte(dwBus:byte;dwDev,dwFunc:byte;dwOffset: word ; var result:byte);
    procedure GetBusDataWord(dwBus:byte;dwDev,dwFunc:byte;dwOffset: byte ; var result:word);


procedure TfrmAGPInfo.GetBusDataByte;
var dwCmd:dword;
    dwCmd2:word;
    a:byte;
    r:byte;
begin
  a:=dwDev shl 3;
  a:=a or dwFunc;
  dwCmd := ($80000000 or (dwBus and $ff) shl 16) or (a shl 8 ) or (dwOffset and $fc);
    asm
       mov dx,0cf8h
       mov eax,dwCmd
       out dx,eax
    end;
    dwCmd2:= $cfc+(dwOffset and 3);
    asm
       mov dx,dwCmd2
       in al,dx
       mov r,al
    end;
    result:=r;
end;

procedure TfrmAGPInfo.GetBusDataWord(dwBus, dwDev, dwFunc, dwOffset: byte;
  var result: word);
var dwCmd:dword;
    dwCmd2:word;
    a,b:byte;
begin
  a:=dwDev shl 3;
  a:=a or dwFunc;
  dwCmd := ($80000000 or (dwBus and $ff) shl 16) or (a shl 8 ) or (dwOffset and $fc);
    asm
       mov dx,0cf8h
       mov eax,dwCmd
       out dx,eax
    end;
    dwCmd2:= $cfc+(dwOffset and 3);
    asm
       mov dx,dwCmd2
       in al,dx
       mov a,al
    end;
    dwCmd2:= $cfc+(dwOffset and 3)+1;
    asm
       mov dx,dwCmd2
       in al,dx
       mov b,al
    end;
    result:=makeword(a,b);
end;


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams а на какой версии Делфи ты этот код компилил?

Добавлено спустя 2 минуты, 2 секунды:
Ray Adams спасибо еще раз :wink:

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon как на 6 так и на 7, там нет ничего такого, чего не пойдет на старых версиях.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams ну с этими ф-цими Win32API буду я еще долго разбираться :-(

_________________
Ку ку


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 2 из 116<  1  2  3  4  5 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan