sunhui
驱动牛犊
驱动牛犊
  • 注册日期2001-05-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2319回复:6

那位用过WinDriver生成的Code程序呀

楼主#
更多 发布于:2001-06-29 15:46
我是一个新手,用WinDriver生成了一个低速USB设备的Code代码,单独编译正常,可我想吧它加到MFC生成的工程里,可编译总是报错,
error C2440: '=' : cannot convert from 'unsigned long (__cdecl *)(struct XXXX_STRUCT *,void *,unsigned long)' to 'unsigned long (__cdecl *)(void *,void *,unsigned long)'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
"XXXX"代表我的工程名,那句出错的语句是:
      listenPipe.read_pipe_func = XXXX_ReadPipe81 ;
可我发现  XXXX_ReadPipe81 是一个函数,函数定义是
DWORD XXXX_ReadPipe81(XXXX_HANDLE hGAMEPORT, PVOID pBuffer, DWORD dwSize);
而read_pipe_func是定义在usb_diag_lib.h中的,定义是
typedef DWORD (*READ_PIPE_FUNC)(HANDLE hDevice, PVOID pBuffer, DWORD dwSize);
我实在是搞不明白怎么回事了,那位高手可以给我传授些经验呀,叫我一下该怎么吧生成的控制台程序加到MFC工程中,还有那个问题是怎么回事呀

最新喜欢:

busschengbussch...
:cool:我是新手,大家可要帮帮我:cool:
JimWang
驱动牛犊
驱动牛犊
  • 注册日期2001-04-23
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-04 12:04
你必须在所有的windriver 生成的code中增加#include "stdafx.h"
才能够正常使用MFC。然后将其他不兼容的部分进行修改
海云居士
驱动牛犊
驱动牛犊
  • 注册日期2001-06-25
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-04 12:21
不能直接用windows的HANDLE, 要用XXXDRV_HANDLE, 这是两个区别很大的类型, XXXDRV_HANDLE由windriver生成
(或用强制类型转换)
sunhui
驱动牛犊
驱动牛犊
  • 注册日期2001-05-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-04 13:06
我知道HANDLE和XXX_HANDLE不同,可我应该怎么做才能不使用HANDLE呀,在usb_diag_lib.h中重定义呢还是在stdafx.h中重定义呢,还有如何强制类型转换,可不可以教教我呀,我试过不成功,还有有那些是不兼容的,需要如何修改呢?
[sunhui 编辑于 2001-07-04 13:13]
:cool:我是新手,大家可要帮帮我:cool:
cant
驱动牛犊
驱动牛犊
  • 注册日期2001-06-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-04 16:26
你强制 listenPipe.read_pipe_func = (READ_PIPE_FUNC)(XXXX_ReadPipe81 ;
试一下。
我也试过WinDriver生成的程序,赋值不兼容,强制一下就好了。
Email : cantsong@163.net
sunhui
驱动牛犊
驱动牛犊
  • 注册日期2001-05-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-05 09:30
谢谢,我的程序已编译通过了,当然还有些问题,以后再向你请教
:cool:我是新手,大家可要帮帮我:cool:
sunhui
驱动牛犊
驱动牛犊
  • 注册日期2001-05-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-07-09 16:37
我现在又遇到新问题了,我需要监听pipe81,可每次创建监听线程时都不太正常,传到 PipeListenHandler(void * pParam)的参数负值都负不过去,也就是pListenPipe= (USB_LISTEN_PIPE*) pParam,总是说pListenPipe->fStopped=true; 可我明明给它负了falsel,还有
有时明明值都负对了,可已运行过PVOID buf = malloc(m_pListenPipe->dwPacketSize);pListenPipe得值就变了,要不就会死在        
 DWORD dwBytesTransfered = m_pListenPipe->read_pipe_func(m_pListenPipe->hDevice, buf, m_pListenPipe->dwPacketSize);这句上,我都不知该怎么办了,这可都是WinDriver生成的标准代码呀,而且在DOS下运行正常,可一加到MFC里就出错,也不知道是那些地方不兼容,那位用过WinDriver可以传授给我一些经验呀,谢了!


:cool:我是新手,大家可要帮帮我:cool:
游客

返回顶部