deviceiocontrol与ioctl】的更多相关文章

驱动配置设置,配置 ioctl --linux 平台 https://blog.csdn.net/coolwriter/article/details/78242256…
国内这种代码找不到.于是參考了相关代码后完好例如以下代码,且实现方式通过IOCTL代码实现LCD背光调节的功能. 适合场合为平板电脑或者笔记本.主要还是要靠BIOS支持与否. 编译环境使用:Dev-cpp工具编写. #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <ddk/Ntddvdeo.h> typedef struct _DISPLAY_BRIGHTNESS {…
P.bhw98 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 10px 0px 5px; LINE-HEIGHT: normal; PADDING-TOP: 0px; FONT-FAMILY: Verdana, Arial } PRE.bhw98 { FONT-SIZE: 9pt; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDIN…
应用程序和驱动程序的通信过程是:应用程序使用CreateFile函数打开设备,然后用DeviceIoControl与驱动程序进行通信,包含读和写两种操作.还能够用ReadFile读数据用WriteFile写数据.操作完成时用CloseHandle关闭设备.我们比較经常使用的就是用DeviceIoControl对设备进行读写操作.先看看DeviceIoControl是怎么定义的: BOOL DeviceIoControl( HANDLE hDevice, DWORD dwIoControlCode…
DeviceIoControl这个api我们用的不多,可是非常重要,有时会帮助我们实现一些特别的需求, 如获取硬件设备信息.与硬件设备通信(读写数据)等,对比msdn,以下我们详解一下这个api的使用方法(有什么错误再所难免,各位不吝不吝赐教啊).DeviceIoControl是用来控制我们指定设备的输入输出操作,使设备依照我们发的指令去工作. DeviceIoControl是kernel32中的函数,须要包括的头文件是winbase.h,先看函数原型 BOOL DeviceIoControl(…
    常识: IRP:I/O Request Package  即输入输出请求包 exe和sys通信时,exe会发出I/O请求.操作系统会将I/O请求转化为相应的IRP数据, 不同类型传递到不同的dispatch function   过程: DeviceIoControl函数产生IRP_MJ_DEVICE_CONTROL 派遣例程 DeviceIoControl函数是用来向指定设备发送控制码,当指定的设备接收到DeviceIoControl函数发来的控制码后 会调用IRP_MJ_DEVICE…
Q 在NT/2000/XP中,如何读取CMOS数据? Q 在NT/2000/XP中,如何控制speaker发声? Q 在NT/2000/XP中,如何直接访问物理端口? A 看似小小问题,难倒多少好汉! NT/2000/XP从安全性.可靠性.稳定性上考虑,应用程序和操作系统是分开的,操作系统代码运行在核心态,有权访问系统数据和硬件,能执行特权指令:应用程序运行在用户态,能够使用的接口和访问系统数据的权限都受到严格限制.当用户程序调用系统服务时,处理器捕获该调用,然后把调用的线程切换到核心态.当系统…
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀? A 确实,用你所说的I/O控制码,只能得到最基本的磁盘参数.获取磁盘出厂信息的I/O控制码,微软在VC/MFC环境中没有开放,在DDK中可以发现一些线索.早先,Lynn McGuire写了一个很出名的获取IDE硬盘详细信息的程序DiskID32,下面的例子是在其基础上经过增删和改进而成…
Q 前几次我们讨论的都是设备名比较清楚的情况,有了设备名(路径),就可以直接调用CreateFile打开设备,进行它所支持的I/O操作了.如果事先并不能确切知道设备名,如何去访问设备呢? A 访问设备必须用设备句柄,而得到设备句柄必须知道设备路径,这个套路以你我之力是改变不了的.每个设备都有它所属类型的GUID,我们顺着这个GUID就能获得设备路径. GUID是同类或同种设备的全球唯一识别码,它是一个128 bit(16字节)的整形数,真实面目为 typedef struct _GUID {  …
Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数.读写绝对扇区数据.测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问-获取信息,发送命令,交换数据等.利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的. DeviceIoControl的函数原型为 BOOL DeviceIoControl(     HANDLE hDevice, …