阅读:2664回复:4
调用DeviceIoControl的问题。高手看看
我自己写的背光驱动,工作正常,在控制面板里设置了关闭背光的时间,也可以正常关闭背光,点屏幕也可以打开背光。现在我想增加调节背光亮度的功能,我在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,无效的句柄,请高手看看是那里出现了问题? |
|
沙发#
发布于:2007-05-09 14:58
解决了,应该是L"BAK1:",晕,业余错误
|
|
板凳#
发布于:2007-05-09 15:20
在我导出的SDK中,没有定义#define IOCTL_BAK_SET 0X601的头文件,必须要自己在应用程序中在定义一遍,请问如何可以让到导出的SDK中有这个头文件。
|
|
地板#
发布于:2007-05-09 17:13
顶一个,也准备做背光的控制
|
|
|
地下室#
发布于:2007-05-10 07:36
看看可能是某些特定的目录中的文件才能被EXPORT到SDK.
|
|
|