阅读:1336回复:5
用DriverStudio作过开发的请看过来!
用DriverStudio的DriverWizard开发的驱动代码经编译,产生*.sys文件。将它装载后,是否不用将有关KDevice和KDriver的cpp加入到vc应用程序的工作区间?
|
|
沙发#
发布于:2004-08-18 15:15
sys是驱动,exe是应用。不相关。
编译错误是因为你没有包含setupapi.lib |
|
板凳#
发布于: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) 不知该如何解决,还请各位帮忙指点一下。谢谢!!! |
|
地板#
发布于:2004-08-18 08:06
用DriverStudio的DriverWizard开发的驱动代码经编译,产生*.sys文件。将它装载后,是否不用将有关KDevice和KDriver的cpp加入到vc应用程序的工作区间? 当然不用了,如果你自定义了IOCTL,只要把这个。H文件回族就只可以了 |
|
地下室#
发布于:2004-08-17 21:19
用DriverStudio的DriverWizard开发的驱动代码经编译,产生*.sys文件。将它装载后,是否不用将有关KDevice和KDriver的cpp加入到vc应用程序的工作区间? ???????????? 不明白你的意思 |
|
|
5楼#
发布于:2004-08-17 20:10
KDevice和KDriver的cpp 是源文件,*sys就是这些文件编译出来的
不知你的意思是??? |
|