krise
驱动牛犊
驱动牛犊
  • 注册日期2004-12-01
  • 最后登录2005-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1175回复:2

急问:d12源码求教!

楼主#
更多 发布于:2004-12-15 09:03
在d12test源代码中定义:
UINT InterruptIn(void * pParam)


调用该函数:
CWinThread * wt = AfxBeginThread(
InterruptIn, // thread function
&m_InterruptIn); // argument to   thread function

请问定义中的pparam是怎么来的?调用的时候没有注明实参呀?从程序中看出pparam可以传递进来很多必须的信息。如果我想把一个文件作为pParam的指向地址,应该怎样调用这个函数?

    CWinThread * wt = AfxBeginThread(
        InterruptIn(filename),
        &m_InterruptIn);
这样调用么????
谢谢指教!!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-15 09:11
在d12test源代码中定义:
UINT InterruptIn(void * pParam)


调用该函数:
CWinThread * wt = AfxBeginThread(
InterruptIn, // thread function
&m_InterruptIn); // argument to   thread function

请问定义中的pparam是怎么来的?调用的时候没有注明实参呀?从程序中看出pparam可以传递进来很多必须的信息。如果我想把一个文件作为pParam的指向地址,应该怎样调用这个函数?

    CWinThread * wt = AfxBeginThread(
        InterruptIn(filename),
        &m_InterruptIn);
这样调用么????
谢谢指教!!
 

AfxBeginThread有两种不同定义,具体定义如下:
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

你可以使用第一种定义,然后在第2个参数增加你需要传递的信息
比如:
CWinThread * wt = AfxBeginThread(
        InterruptIn,
        filename);

这样在InterruptIn中的哪个参数变指向filename了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
krise
驱动牛犊
驱动牛犊
  • 注册日期2004-12-01
  • 最后登录2005-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-15 10:01
调用的全文是:

CThreadParam   m_InterruptIn;
m_InterruptIn.testDlg = this;
m_InterruptIn.uiLength = 16;
strcpy(m_InterruptIn.pipe_name, (LPCSTR)"PIPE00");
strcpy(m_InterruptIn.driver_name, (LPCSTR)"D12TEST-0");
m_InterruptIn.bInThread=true;
m_InterruptIn.threadFile1=NULL;
m_InterruptIn.threadFile2=NULL;

CWinThread * wt = AfxBeginThread(
InterruptIn, // thread function
&m_InterruptIn); // argument to thread function

m_InterruptIn.hThread = wt;

如果在调用时把第二个参数换成filename,是不是该在定义时定义CThreadParam  * filename,后面的所有m_InterruptIn全部换成*filename呢?但是文件名是不是应该是char *类型呢?这个怎么转换呢?
游客

返回顶部