电脑接受键盘输入慢两个值分别赋值给A和B,使用if语句对两个数进行比较,并确保最终A的值大于B

5111人阅读
技术点滴(29)
设备句柄可以用API函数CreateFile获得。它的原型为
HANDLE CreateFile(
LPCTSTR lpFileName,
// 文件名/设备路径 设备的名称
DWORD dwDesiredAccess,
// 访问方式
DWORD dwShareMode,
// 共享方式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全描述符指针
DWORD dwCreationDisposition,
// 创建方式
DWORD dwFlagsAndAttributes,
// 文件属性及标志
HANDLE hTemplateFile
// 模板文件的句柄
打开:createFile
关闭:closehandle
与普通文件名有所不同,设备驱动的&文件名&(常称为&设备路径&)形式固定为&//./DeviceName&(注意在C程序中该字符串写法为&////.//DeviceName&),DeviceName必须与设备驱动程序内定义的设备名称一致。
一般地,调用CreateFile获得设备句柄时,访问方式参数设置为0或GENERIC_READ|GENERIC_WRITE,共享方式参数设置为FILE_SHARE_READ|FILE_SHARE_WRITE,创建方式参数设置为OPEN_EXISTING,其它参数设置为0或NULL。
DeviceIoControl函数向指定的设备驱动发送一个控制码,驱动程序通过这个控制码来完成特定的工作。该函数原型如下:
BOOL DeviceIoControl(&&& HANDLE hDevice,&&& DWORD dwIoControlCode,&&& LPVOID lpInBuffer,&&& DWORD nInBufferSize,&&& LPVOID lpOutBuffer,&&& DWORD nOutBufferSize,&&& LPDWORD lpBytesReturned,&&& LPOVERLAPPED lpOverlapped);
要进行操作的设备句柄。获得方法见上面CreateFile。
dwIoControlCode
要进行操作的控制码。驱动程序可以通过CTL_CODE宏来组合定义一个控制码,并在IRP_MJ_DEVICE_CONTROL的实现中进行控制码的操作。在驱动层,irpStack-&Parameters.DeviceIoControl.IoControlCode表示了这个控制码。发送不同的控制码,可以调用设备驱动程序的不同类型的功能。在头文件winioctl.h中,预定义的标准设备控制码,都以IOCTL或FSCTL开头。例如,IOCTL_DISK_GET_DRIVE_GEOMETRY是对物理驱动器取结构参数(介质类型、柱面数、每柱面磁道数、每磁道扇区数等)的控制码,FSCTL_LOCK_VOLUME是对逻辑驱动器的卷加锁的控制码。
lpInBuffer
由用户层发送的缓冲区数据。在驱动层,依传输类型的不同,输入缓冲区的位置亦不同,见下表。
METHOD_IN_DIRECT
irp-&AssociatedIrp.SystemBuffer
METHOD_OUT_DIRECT
irp-&AssociatedIrp.SystemBuffer
METHOD_BUFFERED
irp-&AssociatedIrp.SystemBuffer
METHOD_NEITHER
irpStack-&Parameters.DeviceIoControl.Type3InputBuffer
nInBufferSize
由用户层发送的缓冲区大小。在驱动层,这个值是irpStack-&Parameters.DeviceIoControl.InputBufferLength。
lpOutBuffer
由用户层指定,用于接收驱动层返回数据的缓冲区。在驱动层,依传输类型的不同,输出缓冲区的位置亦不同,见下表。
METHOD_IN_DIRECT
irp-&MdlAddress
METHOD_OUT_DIRECT
irp-&MdlAddress
METHOD_BUFFERED
irp-&AssociatedIrp.SystemBuffer
METHOD_NEITHER
irp-&UserBuffer
nOutBufferSize
由用户层指定,用于接收驱动层返回数据的缓冲区大小。在驱动层,这个值是irpStack-&Parameters.DeviceIoControl.OutputBufferLength。
lpBytesReturned
由用户层指定,用于接收驱动层实际返回数据大小。在驱动层,这个值是irp-&IoStatus-&Information。
lpOverlapped
用于异步操作。
一个应用程序调用驱动的例子(WINCE下):
一般步骤是这样的,调用CREATEFILE取得设备句柄-&判断是否成功-&调用DeviceIoControl操作设备-&关闭句柄。
BOOL SetBKLPower(BOOL bOn){&&& BOOL bRet = FALSE;&&& HANDLE hDev = CreateFile(L"GPC1:",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL,NULL);&&& if (INVALID_HANDLE_VALUE != hDev)&&& {&&&&&&& if (bOn)&&&&&&& {&&&&&&&&&&& bRet = ::DeviceIoControl(hDev,IOCTL_BKL_ON,NULL,NULL,NULL,NULL,NULL,NULL);&&&&&&& }&&&&&&& else&&&&&&& {&&&&&&&&&&& bRet = ::DeviceIoControl(hDev,IOCTL_BKL_OFF,NULL,NULL,NULL,NULL,NULL,NULL);&&&&&&& }&&&&&&& CloseHandle(hDev);&&& }&&& return bR}
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:156682次
积分:1759
积分:1759
排名:第19139名
原创:30篇
转载:19篇
评论:104条
(1)(9)(3)(3)(3)(3)(1)(3)(6)(5)(10)(3)本帖子已过去太久远了,不再提供回复功能。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2866)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'DeviceIoControl与NtDeviceIoControlFile以及调试',
blogAbstract:'DeviceIoControl函数如下:
BOOL DeviceIoControl(& HANDLE hDevice,&&&&&&&&&&&&& // handle to device of interest& DWORD dwIoControlCode,&&&&&& // control code of operation to perform& LPVOID lpInBuffer,&&&&&&&&&& // pointer to buffer to supply input data& DWORD nInBufferSize,&&&&&&&& // size, in bytes, of input buffer',
blogTag:'deviceiocontrol,调试',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 电脑接受键盘输入慢 的文章

 

随机推荐