wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
阅读:2660回复:4

调用DeviceIoControl的问题。高手看看

楼主#
更多 发布于:2007-05-09 13:52
  我自己写的背光驱动,工作正常,在控制面板里设置了关闭背光的时间,也可以正常关闭背光,点屏幕也可以打开背光。现在我想增加调节背光亮度的功能,我在BAK_IOControl这个函数中增加了case IOCTL_BAK_SET:。。。(后面是设置背光亮度的代码)。在头文件里定义了
#define IOCTL_BAK_SET    0X601。
注册表项是这样设置的:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\BAK]
    "Index"=dword:1
    "Prefix"="BAK"
    "Dll"="backlight.dll"
    "Order"=dword:1
    "IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"   ; Power-manageable generic

[HKEY_CURRENT_USER\ControlPanel\Backlight]
    "ACTimeout"=dword:0
    "BatteryTimeout"=dword:0
    "BacklightOnTap"=dword:1
    "ACBacklightOnTap"=dword:1
    
[HKEY_CURRENT_USER\ControlPanel\BackLight]
    "AdvancedCPL" = "AdvBacklight"
可是在应用程序中设置背光的代码是这样的
YTE bBak=1;
HANDLE hBak= CreateFile(L"BAK",GENERIC_READ | GENERIC_WRITE,    0,        NULL,OPEN_EXISTING,    0,NULL );
    if(DeviceIoControl(hBak, 0X601, &bBak, sizeof(BYTE), NULL, 0, 0, NULL))
    {
        MessageBox(L"error");
    }

    CloseHandle (hBak);
可是在程序中返回的句柄是-1,无效的句柄,请高手看看是那里出现了问题?
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-05-09 14:58
解决了,应该是L"BAK1:",晕,业余错误
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-05-09 15:20
在我导出的SDK中,没有定义#define IOCTL_BAK_SET    0X601的头文件,必须要自己在应用程序中在定义一遍,请问如何可以让到导出的SDK中有这个头文件。
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-09 17:13
顶一个,也准备做背光的控制
 
努力! 成功就在不远处....
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-10 07:36
看看可能是某些特定的目录中的文件才能被EXPORT到SDK.
学海无涯
游客

返回顶部