Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Внизработа с com портами Найти похожие ветки
← →
огого (2004-11-05 12:42) [0]Под win2000 делаю все это, а DataOut(0,3FC);, DataOut(3,3FC); не работают почему-то?
PortIO.sys находится в каталоге с exe.
function OpenPort():integer; //запускать один раз при инициализации приложения
begin
try
ser1:= "PortIO"; //ключ реестра
ser2:= "All port system";//DisplayName
hSCManager:=OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);//открываем SC Manager базу данных
GetFullPathName("PortIO.sys",sizeof(acDriverPath),@acDriverPath,lpfPart); //полный путь
path:= acDriverPath;
//hService:= OpenService(hSCManager,PChar(ser1),SERVICE_START+$10000);
hService:=CreateService(hSCManager,ser1,ser2,SERVICE_START+$10000,
SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START,SERVICE_ERROR_IGNORE,
Path, nil, nil, nil, nil, nil);//создаем сервис драйвера
str3:="SYSTEM\CurrentControlSet\Services\PortIO";//путь в реестре
openkey:=RegOpenKeyEx(HKEY_LOCAL_MACHINE,str3,0,KEY_CREATE_SUB_KEY + KEY_SET_VALUE,Hkey1);
dwProcessId:=GetCurrentProcessId;//получаем Id процесса
str4:= "ProcessId";
openkey:=RegSetValueEx(Hkey1,str4,0, REG_DWORD,@dwProcessId, sizeof(DWORD));
lpc:=nil;
StartService(hService,0, lpc); //запускаем сервис
RegDeleteValue(hkey1,str4);//удаляем значенпе в реестре
RegCloseKey(hkey1); //закрываем ключ
DeleteService(hService); //удаляем сервис
CloseServiceHandle(hService);
CloseServiceHandle(hSCManager);//закрываем SC Manager
result:=0; //всё прошло успешно
except
result:=1;//что-то не так
end;
end;
procedure DataOut(ByteValue:byte;PortAddress:word); //подпрограмма работы с внешним кодом вывода значений через порт
asm
push dx//сохранить значения dx в стеке
mov dx,PortAddress//dx=0378h адресс порта данных
mov al, ByteValue //al=ByteValue данные для вывода в порт
out dx,al //операция вывода
pop dx // востановить значения
end;
← →
Reindeer Moss Eater © (2004-11-05 12:55) [1]Целых две статьи есть прямо на этом сайте.
← →
-=SS=- © (2004-11-05 13:03) [2]
> out dx,al /
А что ты хотел ? Под Win NT эта команда не покатит. Выдаст ошибку чтото типа "Priveleged Instruction"
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c