阅读:1434回复:15
大家帮我找找我的inf文件
我安装了driverstudio3.1 但怎么着也不能用SrcToDsp.exe生成source文件后来自己在别的地方抄了一个
TARGETNAME = DRIVERNAME TARGETPATH = obJ TARGETTYPE = DRIVER DRIVERTYPE = WDM TARGETEXT = SYS 编译后只生成了.sys文件,却没有生成.dll和.inf文件。 驱动的书、网上的心得和前人的源程序都看了不少,感觉有了一些理解,开始自己写程序了。刚写了一个只有AddDevice和DriverUnload的程序想试试,却。。。 我在驱动泡了一个星期,也郁闷了一个星期,希望斑竹和大家能帮帮我 |
|
沙发#
发布于:2004-06-30 21:49
ft
SrcToDsp从字面上看都是生成VC6用的dsp文件,怎么会来source?是根据source产生dsp inf文件也不是build出来的,自己写,或者根据现成的改改也行 |
|
板凳#
发布于:2004-06-30 22:11
SrcToDsp支持先生成一个source文件,再根据source文件生成dsp。
inf怎么写,arthurtu 能不能帮我一把。我看别人的inf不知道里面的内容什么意思,看不懂,不知道要怎么改成我自己的。还有我的dll也没有生成 :mad: |
|
地板#
发布于:2004-07-01 07:50
直接看DS生成的INF文件,大部分内容是不需要修改的。DDK的帮助文档里有INF文件的详细内容。。。。
|
|
|
地下室#
发布于:2004-07-01 11:50
srctodsp还能生成source文件?3.1还支持这个呀?
也可以用source来build一个dll,但是你要再写个source文件 |
|
5楼#
发布于:2004-07-01 18:23
是不是把TARGETEXT的值设成dll就可以了?还是要怎么做指点一下。
还有,inf、sys和dll各起什么作用 |
|
6楼#
发布于:2004-07-01 18:30
arthurtu:
要build出dll来我的source要怎么写,谢谢。 |
|
7楼#
发布于:2004-07-02 12:53
inf文件是驱动程序索引文件,操作系统根据硬件的vid(厂商id)、pid(产品id)搜索相应的inf文件,再根据inf文件中指明的硬件类、驱动文件加载驱动程序。我也是初学者。不知说得对不对。
是不是把TARGETEXT的值设成dll就可以了?还是要怎么做指点一下。 |
|
|
8楼#
发布于:2004-07-02 18:00
arthurtu: TARGETTYPE=DYNLINK When you build a dynamic link, you might also need to set the TARGETEXT macro. If this macro is not defined, the .dll extension will be used. why not VC? |
|
9楼#
发布于:2004-07-03 09:33
arthurtu:
TARGETTYPE=LIBRARY|DYNLINK我都试过还是不行,不知道哪搞错了。我用ds3.1根据source生成的dsp做的。 请你看看我的东西,谢谢。 *.c #include "WDMTest.h" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { DriverObject->DriverExtension->AddDevice = ThisDriver_AddDevice; DriverObject->DriverUnload = ThisDriver_Unload; return STATUS_SUCCESS; } NTSTATUS ThisDriver_AddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject ) { NTSTATUS ntStatus; PDEVICE_OBJECT pDevice; UNICODE_STRING uniDeviceName; RtlInitUnicodeString( &uniDeviceName, DEVICE_NAME ); if( IoCreateDevice( DriverObject, sizeof(St_DEVICE_EXT), &uniDeviceName, FILE_DEVICE_UNKNOWN, 0, FALSE, &pDevice ) == STATUS_SUCCESS ) { UNICODE_STRING uniLinkName; RtlInitUnicodeString( &uniLinkName, DOS_DEVICE_NAME ); ntStatus = IoCreateUnprotectedSymbolicLink(&uniLinkName, &uniDeviceName); pDevice->Flags |= DO_DIRECT_IO; pDevice->Flags &= ~DO_DEVICE_INITIALIZING; } return ntStatus; } VOID ThisDriver_Unload( IN PDRIVER_OBJECT DriverObject ) { UNICODE_STRING uniLinkName; RtlInitUnicodeString( &uniLinkName, DOS_DEVICE_NAME ); if( NT_SUCCESS( IoDeleteSymbolicLink(&uniLinkName) ) ) { IoDeleteDevice( DriverObject->DeviceObject ); } } *.h #ifndef WDMTest_H #define WDMTest_H #include <wdm.h> VOID ThisDriver_Unload( IN PDRIVER_OBJECT DriverObject ); NTSTATUS ThisDriver_AddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject ); #define DEVICE_NAME L"\\Device\\WDMTest" #define DOS_DEVICE_NAME L"\\DosDevices\\WDMTest" typedef struct { PDEVICE_OBJECT DeviceObject; }St_DEVICE_EXT; #endif source TARGETNAME = first TARGETPATH = obj TARGETTYPE = LIBRARY DRIVERTYPE = WDM TARGETEXT = macro INCLUDES=$(BASEDIR)inc |
|
10楼#
发布于:2004-07-03 12:24
或许先知道一些dll和WDM驱动的概念好些
你的c文件是驱动(sys),并不是dll |
|
11楼#
发布于:2004-07-03 17:04
还是先看看书或者MSDN吧,你的问题很基础,但你什么都不懂,要手把手教也需要一端时间呀?至少3月,看你提问的情况好象的C,C++这样的基础也不太够噢,还没有会走路就要跑,的确也难为你了。
|
|
|
12楼#
发布于:2004-07-05 09:51
arthurtu,llenZh:
你们讲得很对,这都是boss逼得。 之前我用c也用了4年了,主要是做算法的;dll也写过。 为了完成这次任务我也看了一些资料(主要是《WIN2000驱动程序设计》--翟洪涛和《Windows Driver Model》--驱动开发网)。这两本书我反复看了很多次,也看了不少网友提供的源码。感觉对"驱动"的工作原理还不怎么了解(看书只是树上怎么写就怎么记着,并不理解、不知道为什么。看了个“知其然”,并不能做到“知其所以然”)。但对"驱动程序"的结构和实现的流程(每个例程规定性的进行一些“初始化处理”,然后实现自己的功能)有了一定的了解,所以准备由潜入深的一步步开始动手写(在参考网友写过的驱动程序的基础上)。一动手,发现自己ddk也不会用。后来又在驱动泡了几、问了几天,发现了ds,就到了现在这个地步。我在网上找了很多天,对于介绍怎么使用ddk、ABC怎么白手起家写出一个简单的驱动程序文章很少。这种对于工具最简单的使用本不应该成为ABC进入驱动领域的拦路虎,现在确成了我始终不能逾越的障碍。 我个人觉得,驱动程序这一块主要是做计算机和其他数码设备的接口(包括各种接口的数 据采集、通信),所以它最主要的功能比较固定--读数据和写数据。这也导致相同总线或接口(如PCI、USB、fireware等)的驱动程序的基本构架比较固定,程序相似度很高。同时因为它运行在操作系统低层要和硬件部分打交道,而这部分又是ABC开发人员所不熟悉,所以这部分将成为驱动程序入门的难点。 综上,只要有详细、适当的入门指导:包括开发工具的使用(ddk、driverstudio),简单驱动程序构成(这部分网上资源比较丰富),驱动程序开发流程(这个在《WIN2000驱动程序设计》一书中已有介绍,但各部分分开了,不系统)。ABC要想成为一个初级的驱动程序开发人员,完全是可以在比较短的时间内实现的。所谓“师父领进门,修行靠个人”。希望驱动开发网能做好这个引路人,让ABC能快速的跨入驱动开发这张大门。 |
|
13楼#
发布于:2004-07-05 11:55
你可以这样认为:用DDK的build.exe,一个source文件就生成一个文件,可能是sys,也可以是dll,exe,看TARGETTYPE。但是你也不能硬把一个是sys结构的代码,去生成dll呀
也没有听说build还会帮你生成inf文件的,inf文件就是一文本文件,抄抄就可以的。inf,就是information,包含某个/类硬件的一些information,如驱动文件是哪个,在哪,厂商等。 sys就是运行在内核的驱动文件了。 dll是运行在用户层的dynamic link lib |
|
14楼#
发布于:2004-07-05 12:16
谢谢arthurtu的热心回复,对于这个具体的问题我有所解了。
对我以后的路怎么走能否指点一二 |
|
15楼#
发布于:2004-07-05 13:10
在本版的精华区,有个blue的《对初学驱动开发者的书籍介绍》帖子,不错的。
指点不敢,以后的路更是不敢乱说了。 |
|