hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1348回复:5

用ds生成驱动和测试程序,把测试程序移植到c++builder中,能用吗?

楼主#
更多 发布于:2004-05-25 18:37
我的测试程序在vc中编译没问题,也能读写设备,可是移植到c++builder中的程序编译没问题,却打不开设备,好像得不到句柄,为什么啊!谢谢了
有朋自远方来,不亦乐乎?
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-26 09:39
应该没问题的,你再好好找一找
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-26 10:51
我查了一下,在调用
status = SetupDiGetInterfaceDeviceDetail (
m_Class->GetHandle(),
&m_Data,
m_Detail,
ReqLen,
&ReqLen,
NULL
);
后,系统返回错误1784,ERROR_INVALID_USER_BUFFER,可是我指针都已经赋值了啊!不明白!
有朋自远方来,不亦乐乎?
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-27 10:44
ReqLen是前一次调用SetupDiGetInterfaceDeviceDetail得到的数据84,这对吗?
难道没有人用c++builder吗?
帮忙提几个可能的原因我试试也行啊!
给分!
谢谢了!
有朋自远方来,不亦乐乎?
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-27 19:25
我查了一下,在调用
status = SetupDiGetInterfaceDeviceDetail (
m_Class->GetHandle(),
&m_Data,
m_Detail,//它指的是这个值无效
ReqLen,
&ReqLen,
NULL
);
后,系统返回错误1784,ERROR_INVALID_USER_BUFFER,可是我指针都已经赋值了啊!不明白!


m_Detail,//它指的是这个值无效
好好查看一下这个值


[编辑 -  5/27/04 by  snowStart]
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-28 08:48
m_Detail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);

if ( !m_Detail )
{
*Error = ERROR_NOT_ENOUGH_MEMORY;
return;
}

m_Detail->cbSize = sizeof (SP_INTERFACE_DEVICE_DETAIL_DATA);
////////////////////////////////////////////////////
这是前面给m_Detail分配内存的程序,从watch看m_Detail确实得到了地址,m_Detail->cbSize的值是8,这会有错吗?
其实这段程序就是driverstudio里devintf.h文件里的,我直接把它包含进来了,编译没错,在vc里运行也没错啊!真惊了!还能是bcb分配的地址不可用?
有朋自远方来,不亦乐乎?
游客

返回顶部