首页
社区
课程
招聘
[求助]delphi 怎么使用DeviceIoControl
发表于: 2013-7-31 17:29 7570

[求助]delphi 怎么使用DeviceIoControl

2013-7-31 17:29
7570
我在学习驱动,比较熟悉DELPHI打算应用层用DELPHI底层用C

用DELPHI 使用DeviceIoControl 的第2个参数dwIoControlCode
CTL_CODE(FILE_DEVICE_UNKNOWN,         0x800,ETHOD_IN_DIRECT,FILE_ANY_ACCESS)

用DELPHI怎么实现呀,因为这个要去对应底层的。我在网上看到有哥们用就是不明白 请大侠指教 现在贴出网上找的一段代码
DeviceIoControl(hDevice,$3e8,@Buffer,$100,@Buffer,$100, cbBytesReturned, nil )

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
内存监视器 2.0 有delphi驱动通信源码.
2013-7-31 19:21
0
雪    币: 126
活跃值: (189)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
不过是个宏的常量表达式.
可以下载JEDI的Native API声明,里面有声明.或者你看下C++里算出来的值,写死.
也可以写成简单的函数.
2013-7-31 19:54
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
能不能给你DEMO
2013-8-1 08:04
0
雪    币: 1711
活跃值: (516)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
5
多看SDK,WDK

devioctl.h
#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
    ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
2013-8-1 16:45
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
非常感谢,用你的代码我转成DELPHI的弄好了。
2013-8-2 08:26
0
雪    币: 1711
活跃值: (516)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
7
下载一份SDK和WDK,微软公开的定义里面的头文件都有了,便于以后再遇到问题时参考
2013-8-2 10:10
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
现在贴出DELPHI代码方便以后人查看

function CTL(aDeviceType:DWORD;Functiona:dword;Method:dword;Access:dword):dword;
begin
  Result := ((aDeviceType) shl 16) or ((Access) shl 14) or ((Functiona) shl 2) or (Method)
end;

function add(hDevice:HWND;a,b:Integer):DWORD;
var
   port  :array[0..1] of Integer;
   bufret :Integer;
   dwWrite : DWORD;
begin
        port[0]:=a;
        port[1]:=b;
        DeviceIoControl(hDevice,CTL($22,$800,1,0),@port,8,@bufret,4,dwWrite,nil);
        Result  := bufret;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hDevice : HWND;
begin
    hDevice :=
                CreateFile('\\.\DT', //\\??\\My_DriverLinkName
                GENERIC_READ or GENERIC_WRITE,
                0,                // share mode none
                nil,        // no security
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL,
                0);                // no template
   
    Caption :=IntToStr(add(hDevice,1111,33));
end;
2013-8-2 10:31
0
游客
登录 | 注册 方可回帖
返回
//