4231|4

55

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

windows 串口驱动开发 [复制链接]

大家好,
    小米在做一个PCI的八串口驱动,我遇到一个奇怪的问题,我在驱动程序中加了一个selfdefine.h 头文件,然后,#include"selfdefine.h" 到pnp.c 中,编译,无 error,无warning ,但是,我安装驱动时,全部出现惊叹号,说是没有可用的数据了,吾实在不知道是怎么回事,求大家,给个解决方法,
selfdefine.h的内容如下:

#ifndef _SELFDEFINE_H_
#define _SELFDEFINE_H_
#include

#if !defined (_CFGMGR32_)
#define CMAPI     DECLSPEC_IMPORT
#else
#define CMAPI
#endif











typedef DWORD  RETURN_TYPE;
typedef RETURN_TYPE  CONFIGRET;

//
// Device Instance Handle data type
//
typedef        DEVNODE, DEVINST;
typedef DEVNODE    *PDEVNODE, *PDEVINST;

//
// Device Instance Identifier data type
// The device instance ID specifies the registry path, relative to the
// Enum key , for a device instance.  For example:  \Root\*PNP0500\0000.
//
typedef CHAR          *DEVNODEID_A, *DEVINSTID_A; // Device ID ANSI name.
typedef WCHAR         *DEVNODEID_W, *DEVINSTID_W; // Device ID Unicode name.
#ifdef UNICODE
typedef DEVNODEID_W DEVNODEID;
typedef DEVINSTID_W DEVINSTID;
#else
typedef DEVNODEID_A DEVNODEID;
typedef DEVINSTID_A DEVINSTID;
#endif

//
// Logical Configuration Handle data type
//
typedef HANDLE HMACHINE;
typedef HMACHINE *PHMACHINE;
//

//
#define CM_LOCATE_DEVNODE_NORMAL       0x00000000

//


#define CR_SUCCESS                  (0x00000000)




CMAPI
CONFIGRET
WINAPI
CM_Locate_DevNodeA(
                                   OUT PDEVINST    pdnDevInst,
                                   IN  DEVINSTID_A pDeviceID,    OPTIONAL
                                   IN  ULONG       ulFlags
                                   );
CMAPI
CONFIGRET
WINAPI
CM_Locate_DevNodeW(
                                   OUT PDEVINST    pdnDevInst,
                                   IN  DEVINSTID_W pDeviceID,   OPTIONAL
                                   IN  ULONG       ulFlags
                                   );


#ifdef UNICODE
#define CM_Locate_DevNode        CM_Locate_DevNodeW

#else
#define CM_Locate_DevNode        CM_Locate_DevNodeA

#endif // UNICODE

CMAPI
CONFIGRET
WINAPI
CM_Reenumerate_DevNode(
                                           IN DEVINST  dnDevInst,
                                           IN ULONG    ulFlags
                                           );
CMAPI
CONFIGRET
WINAPI
CM_Reenumerate_DevNode_Ex(
                                                  IN DEVINST  dnDevInst,
                                                  IN ULONG    ulFlags,
                                                  IN HMACHINE hMachine
                                                  );





#endif


       
               
               
VOID ShowForHardWare()

{
       
        DEVINST   devInst;
       
        CONFIGRET   status;
       
       
       
        //得到设备管理树的根结点
       
        status   =   CM_Locate_DevNode(&devInst,NULL,CM_LOCATE_DEVNODE_NORMAL);
       
        if   (status!=CR_SUCCESS)
               
        {
               
                KdPrint(( "CM_Locate_DevNode   failed:   %x\n ",status));
               
                return   ;
               
        }
       
       
        //刷新
       
        status   =   CM_Reenumerate_DevNode(devInst,0);
       
        if   (status   !=CR_SUCCESS)
               
        {
               
                KdPrint(( "CM_Reenumerate_DevNode   failed:   %x\n ",status));
               
                return   ;
               
        }
       
        return   ;
}


最新回复

驱动对应的设备发生硬件PNP类型的变化的时候,PNP Manager会发PNP信息给对应的驱动的。 设备驱动如果想知道硬件设备的其他信息,可以注册中断或者轮询设备状态来知道硬件变化。   详情 回复 发表于 2010-6-2 23:27
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
CM_Locate_DevNode等相关的函数是应用程序才能使用的代码。不能用在Kernel驱动中的。

  1. http://msdn.microsoft.com/en-us/library/ff549794(v=VS.85).aspx
  2. Public PnP Configuration Manager Functions
  3. This section describes the Plug and Play (PnP) Configuration Manager functions that are used by class installers, co-installers, or device installation applications.
复制代码


class installer, co-installer, device installation applications都不是kernel driver.
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
打日志,调试
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

4
 
那么,我在kernel 中,如何实现"扫描硬件改动”这一功能?有什么具体函数,还是只能发IRP,如果是发IRP,请给个参考,吾感激涕零!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
驱动对应的设备发生硬件PNP类型的变化的时候,PNP Manager会发PNP信息给对应的驱动的。
设备驱动如果想知道硬件设备的其他信息,可以注册中断或者轮询设备状态来知道硬件变化。


 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表