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

关于WINDOWS CE 串口得GetSerialObject()函数得疑问

楼主#
更多 发布于:2005-03-09 15:22
 我在MDD层看到pSerialHead->pHWObj=GetSerialObject(),我要是在PDD层定义GetSerialObject()这个函数,怎么样才能把这个函数在这两个层里面联系起来。
我在函数中也没有看到一些extern之类得东西  
 
ILznFE
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望25点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-10 20:06
GetSerialObject()这个函数所返回的结构体指针,就是起到了连接MDD & PDD的作用
shitou007
驱动牛犊
驱动牛犊
  • 注册日期2004-07-19
  • 最后登录2005-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-10 20:58
返回值是能够联系到一起,起到从MDD调用PDD得目的。这个函数再MDD里面,她怎么能找到PDD层得这个函数。主要是怎么调用这个函数本身。因为这个函数体在PDD中,在MDD中调用得话应该用extern之类的,然后在把那个函数得头文件包含进去。但是这些什么都没有,怎么调用。
ILznFE
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望25点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-10 22:35
..\\WINCE420\\PUBLIC\\COMMON\\OAK\\INC\\serhw.h
..\\WINCE420\\PUBLIC\\COMMON\\OAK\\INC\\serhwex.h

有此函数声明
ILznFE
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望25点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-10 22:38
typedef struct __HWOBJ {
    ULONG BindFlags; // Flags controlling MDD behaviour.  Se above.
    DWORD   dwIntID;   // Interrupt Identifier used if THREAD_AT_INIT or THREAD_AT_OPEN
    PHW_VTBL pFuncTbl;
    } HWOBJ, *PHWOBJ;

结构体原形

[编辑 -  3/10/05 by  ILznFE]
ILznFE
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望25点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-10 22:39
// GetSerialObj : The purpose of this function is to allow multiple PDDs to be
// linked with a single MDD creating a multiport driver.  In such a driver, the
// MDD must be able to determine the correct vtbl and associated parameters for
// each PDD.  Immediately prior to calling HWInit, the MDD calls GetSerialObject
// to get the correct function pointers and parameters.
//
PHWOBJ GetSerialObject(DWORD DeviceArrayIndex)
{
PHWOBJ pSerObj;

RETAILMSG(DEBUGMODE, (TEXT(\"GetSerialObject : DeviceArrayIndex = %d\\r\\n\"), DeviceArrayIndex));

// Now return this structure to the MDD.
if (DeviceArrayIndex == 1)
{
pSerObj = (PHWOBJ)(&IrObj);
}
else
{
pSerObj = (PHWOBJ)(&IoObj);
}

return (pSerObj);
}
shitou007
驱动牛犊
驱动牛犊
  • 注册日期2004-07-19
  • 最后登录2005-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-11 08:31
我知道这个声明,上面你给得我也看过。但是,因为在MDD层并没有包含serhw.h这个文件,这样得话,MDD怎么知道在PDD中有GetSerialObject(),如果知道有这个函数,那么MDD和PDD得联系就顺理成章了。但是我就是不明白得是这个函数本身是如果调用得。就是MDD得给我了这个函数,如何知道在PDD中有这个函数。
ILznFE
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望25点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-11 10:41
我的包含了呀

这是我中MDD.C的包含

#include <windows.h>
#include <types.h>
#include <memory.h>
#include <linklist.h>
#include <nkintr.h>
#include <serdbg.h>
#include <serpriv.h>---------------->注意这里,这个文件中包含了#include <serhw.h>
#include <hwcomapi.h>
#include <pegdser.h>
#include <devload.h>
#include <pm.h>
ILznFE
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望25点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-11 10:43
顺便提一句,我用的是2410的开发版,不支你的是什末,有可能会不一样
shitou007
驱动牛犊
驱动牛犊
  • 注册日期2004-07-19
  • 最后登录2005-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-11 11:02
3KS.我用得是PXA255
游客

返回顶部