调用流驱动的时候,creatfile在初始化里么?

llaotang 2011-01-04 10:17:38
自己写一个对话框,想用按钮触发事件,是应该在应用程序初始化的时候,使用creatfile 和Deviceiocontrol么?
还是要在按钮事件里添加?
我现在用按钮里添加似乎没有效果,代码如下,大侠看看问题出在哪里
void CjusttestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//reslt =CjusttestDlg::SetBrightness(IOCTL_PWM_SET_PRESCALER);
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult;
hDevice = CreateFile(TEXT("PWM1:"), // drive to open
GENERIC_READ|GENERIC_WRITE, // no access to the drive
0, // share mode
NULL, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL); // do not copy file attributes

if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive
{
return ;
}

bResult =DeviceIoControl(hDevice, // device to be queried
IOCTL_PWM_SET_LEVEL_1, // operation to perform
NULL, 0, // no input buffer
NULL, 0, // output buffer
NULL, // # bytes returned
NULL); // synchronous I/O

CloseHandle(hDevice);

return ;
}
...全文
94 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
loongembedded 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 llaotang 的回复:]
驱动加载成功了,可是还是不行,我估计问题是在CReatfile和deviceiocontrol中,我上述的应用这样可以么?
[/Quote]
那很有可能是你上面的应用的问题,仔细排查一下
llaotang 2011-01-07
  • 打赏
  • 举报
回复
驱动加载成功了,可是还是不行,我估计问题是在CReatfile和deviceiocontrol中,我上述的应用这样可以么?
unsway123 2011-01-06
  • 打赏
  • 举报
回复
显然嘛。。驱动没加载成功,,,看看_init这个函数。。仔细的加打印查查。。不过加载不成功的因素比较多。可能是注册表没写对也可能是bib没写对。但是也就那几个方面了。应该很好查
llaotang 2011-01-06
  • 打赏
  • 举报
回复
但是我在注册表active里找不到pwm,只有在buildin里有,就算用驱动助手加载,在active里也米有
llaotang 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 veron_04 的回复:]

我觉得是你的驱动没有加载成功。
[/Quote]
我在platform。reg里添加了,然后也在。bib文件中加了一句
IF BSP_NOPWM !
pwm.dll $(_FLATRELEASEDIR)\pwm.dll $(XIPKERNEL) SHMK
ENDIF BSP_NOPWM !
只是重新build and sysgen的时候报错了,编译时能通过的,不知道有没有影响?
贝隆 2011-01-06
  • 打赏
  • 举报
回复
我觉得是你的驱动没有加载成功。
llaotang 2011-01-05
  • 打赏
  • 举报
回复
现在设置断点后,deviceiocontrol的值是1,也就是说他被正确调用了,这样是不是只有我流驱动编写有问题了?
llaotang 2011-01-05
  • 打赏
  • 举报
回复
在建立流驱动的时候,我重新建立bsp失败了,有没有影响的?是不是这样生成的nk并不能用的?用驱动助手加载了驱动可不可以达到这个效果?
llaotang 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 llaotang 的回复:]

我定义了一个成员函数如下,这样可以么?
BOOL CjusttestDlg::SetBrightness(DWORD value)
{
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult; // results flag

hDevice =……
[/Quote]

我用dm驱动助手加载了,现在creatfile的返回值是hpwmfile 0x006b1a03 {void*} void*
但是好像调用deviceioctl的时候没效果,我在驱动的ioctol加了调试信息,可是怎么查看?
loongembedded 2011-01-04
  • 打赏
  • 举报
回复
1.楼主要确认你的PWM驱动正常加载
2.确认你调用hDevice = CreateFile(TEXT("pwm1:")的时候返回值是什么?如果是INVALID_HANDLE_VALUE就直接返回了,如果返回值正常会调用DeviceIoControl,你在PWM去偶的那个的XXX_IoControl函数中加入一些调试信息,看是否进来这里。
llaotang 2011-01-04
  • 打赏
  • 举报
回复
我定义了一个成员函数如下,这样可以么?
BOOL CjusttestDlg::SetBrightness(DWORD value)
{
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult; // results flag

hDevice = CreateFile(TEXT("pwm1:"), // drive to open
GENERIC_READ|GENERIC_WRITE, // no access to the drive
0, // share mode
NULL, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL); // do not copy file attributes

if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive
{
return (FALSE);
}

bResult =DeviceIoControl(hDevice, // device to be queried
value, // operation to perform
NULL, 0, // no input buffer
NULL, 0, // output buffer
NULL, // # bytes returned
NULL); // synchronous I/O

CloseHandle(hDevice);

return (bResult);
}

void CjusttestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
reslt = CjusttestDlg::SetBrightness(IOCTL_PWM_SET_LEVEL_1);
}
unsway123 2011-01-04
  • 打赏
  • 举报
回复
LZ直接在你的PWM驱动里面的_open函数里面加打印。。就能看到你的cratefile能否成功
llaotang 2011-01-04
  • 打赏
  • 举报
回复
调试的时候出现hDevice CXX0017: 错误: 未找到符号“hDevice”,这是不是说明我打开文件操作就出错了?,我把pwm.lib 和pwm.dll放在目录下了,而且在链接器也添加了,索引是1,所以hDevice = CreateFile(TEXT("pwm:"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING,0,NULL);应该没有错吧,这是什么原因呢?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧