wangyongok
驱动牛犊
驱动牛犊
  • 注册日期2004-08-05
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1336回复:5

用DriverStudio作过开发的请看过来!

楼主#
更多 发布于:2004-08-17 20:01
  用DriverStudio的DriverWizard开发的驱动代码经编译,产生*.sys文件。将它装载后,是否不用将有关KDevice和KDriver的cpp加入到vc应用程序的工作区间?
leadphone
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2008-09-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-18 15:15
sys是驱动,exe是应用。不相关。

编译错误是因为你没有包含setupapi.lib
wangyongok
驱动牛犊
驱动牛犊
  • 注册日期2004-08-05
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-18 10:47
   用DriverStudio的DriverWizard开发的代码包含三个部分:Device类,Driver类和应用代码。主要的文件有function.h,OpenByIntf.cpp,Test.cpp(Driver类),Test.h,TestDevice.cpp(Device类),TestDevice.h,TestDeviceinterface.h,Testioctl.h,Test_Test.cpp(应用程序)。
  
  应用代码是以int __cdecl main(int argc, char *argv[])为主函数,主要是创建一个hDevice.三部分的代码编译后只能得到*.sys文件,没有exe文件。在vc环境中,编译后,点击“运行”,提示“需加载exe文件”。
  
  现在考虑把应用部分的代码并入一个vc的简单应用程序中。此vc程序运行后,只有一个界面,中间有个按钮。把原来的int __cdecl main(int argc, char *argv[])的代码加入到按钮的触发事件函数。
  
  现在有以下几个问题:
 1 得到的.sys文件应该和应用程序Test_Test.cpp无关吧?.sys文件应是Device类,Driver类的代码――TestDevice.cpp,Test.cpp等文件编译得到的吧。
 2. 所以考虑将.sys文件装载后,在编针对此设备的vc应用程序时,无须再将Device类,Driver类的代码――TestDevice.cpp,Test.cpp等文件加入工作区间吧。
 3. 由此得到vc应用程序(对具有一个按钮的应用程序的改动部分):
    加入.h文件:TestDeviceinterface.h,Testioctl.h
    并将Test_Test.cpp(应用程序)中的有关定义:
    HANDLE OpenByInterface(GUID* pClassGuid, DWORD instance, PDWORD pError);
    HANDLE hDevice = INVALID_HANDLE_VALUE;
    GUID ClassGuid = TestDevice_CLASS_GUID;
    加入按钮触发事件所在的testappDlg.cpp。
    由于要用到OpenByInterface函数,所以将定义OpenByInterface的OpenByIntf.cpp也作为头文件加入此testappDlg.cpp。
    编译后,出现以下errors:
   testappDlg.obj : error LNK2001: unresolved external symbol __imp__SetupDiGetClassDevsA@16
   testappDlg.obj : error LNK2001: unresolved external symbol __imp__SetupDiDestroyDeviceInfoList@4
   testappDlg.obj : error LNK2001: unresolved external symbol __imp__SetupDiGetDeviceInterfaceDetailA@24
   testappDlg.obj : error LNK2001: unresolved external symbol __imp__SetupDiEnumDeviceInterfaces@20
   Debug/testapp.exe : fatal error LNK1120: 4 unresolved externals
   Error executing link.exe.

   testapp.exe - 5 error(s), 0 warning(s)


不知该如何解决,还请各位帮忙指点一下。谢谢!!!

zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-18 08:06
 用DriverStudio的DriverWizard开发的驱动代码经编译,产生*.sys文件。将它装载后,是否不用将有关KDevice和KDriver的cpp加入到vc应用程序的工作区间?
 


当然不用了,如果你自定义了IOCTL,只要把这个。H文件回族就只可以了
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-17 21:19
 用DriverStudio的DriverWizard开发的驱动代码经编译,产生*.sys文件。将它装载后,是否不用将有关KDevice和KDriver的cpp加入到vc应用程序的工作区间?
 


????????????
不明白你的意思
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
hywang
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2005-01-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-17 20:10
KDevice和KDriver的cpp  是源文件,*sys就是这些文件编译出来的
不知你的意思是???
游客

返回顶部