![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как использовать средства DDK в Delphi [D6, WinXP]
Th © (2002-10-08 21:09:00)Помогите плз кто знает!
Мне необходимо реализовать вот такой код в Delphi:
function OpenPorts;
type
plw=^longword;
var
PortHandle: THandle;
BytesReturned:plw;
err1,err2:boolean;
tgProcess:integer;
tgMask:byte;
IOCTL_SET_IOPM,IOCTL_ENABLE_IOPM_ON_PROCESSID:integer;
DevInfo:SP_Device_Info_Data;
DevNameSize:integer;
DevInfoSet:HDevInfo;
DevName:string;
DevDetailInfo:SP_Device_Interface_Detail_Data;
DevData:SP_Device_Interface_Data;
MemberIndex:integer;
begin
IOCTL_SET_IOPM:=CTL_CODE(_8SMCC_TYPE, $902, METHOD_BUFFERED, FILE_ANY_ACCESS);
IOCTL_ENABLE_IOPM_ON_PROCESSID:=CTL_CODE(_8SMCC_TYPE, $903, METHOD_BUFFERED, FILE_ANY_ACCESS);
DevInfoSet:=SetupDIGetClassDevs(pchar(_8SMCC1_ClassGUID),
0,
ProcessHWND,
DIGCF_DEVICEINTERFACE or DIGCF_PRESENT or DIGCF_PROFILE);
MemberIndex:=0;
DevData.cbSize:=sizeof(SP_Device_Interface_Data);
while SetupDIEnumDeviceInterfaces(DevInfoSet,
nil,
pchar(_8SMCC1_ClassGUID),
MemberIndex,
@DevData) and
(GetLastError<>ERROR_NO_MORE_ITEMS) do
begin
Inc(MemberIndex);
DevInfo.cbSize:=sizeof(SP_Device_Info_Data);
SetupDIGetDeviceInterfaceDetail(DevInfoSet,DevData,nil,0,DevNameSize,@DevInfo);
DevDetailInfo.cbSize:=sizeof(SP_Device_Interface_Detail_Data);
SetupDIGetDeviceInterfaceDetail(DevInfoSet,DevData,@DevDetailInfo,DevNameSize,DevNameSize,@DevInfo);
DevName:=string(DevDetailInfo.DevicePath);
end;
PortHandle:=CreateFile(PChar(DevName),
GENERIC_READ,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
GetMem(BytesReturned,4);
err1:=DeviceIoControl(PortHandle,
IOCTL_ENABLE_IOPM_ON_PROCESSID,
@ProcessHWND,
4,
0,
4,
BytesReturned^,
0);
tgMask:=0; // Allows IO on all ports within the range of the Hole.
err2:=DeviceIoControl(PortHandle,
IOCTL_SET_IOPM,
@tgMask,
1,
nil,
0,
BytesReturned^,
nil);
result:=(PortHandle<>0)and err1 and err2;
FreeMem(BytesReturned,4);
CloseHandle(PortHandle);
end;
Delphi функций типа SetupDI... не понимает, равно как и структур данных.
Что надо сделать, чтобы понимала???
Th (2002-10-09 12:14:00) [1]Пасиба!
Ученик (2002-10-08 22:30:00) [2]ftp://delphi-jedi.org/api/SetupAPI.zip