用C++Builder做WDM(100分)

  • 主题发起人 主题发起人 drank
  • 开始时间 开始时间
D

drank

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟我正在研究WDM,而且可以说是个绝对入门级选手.
因为刚开始使用C++,并找了些有关WDM的资料在学习而已.对于汇编更是一点皮毛都没有.
希望能多多得到各位老师们的指点.
同时也希望能在这里与大家一同分享我的WDM学习历程.
 
我可能会使用VC做开发工具,因为对C的研究不多,不了解VC和BC的区别在哪里,为了避免走弯路
因而选择用VC上手. 同时也希望听听大家的高见.
这里有点小小的问题,请帮我解答一下,
我在资料中看到在设置设备对象时对某些设备需要用到"缓冲区对齐掩码"
对这个"缓冲区对齐掩码",我实在不了解??????谁能详细的帮我解释一下吗?
它的作用及适用场合....
另外还有个问题.
对于符号连接详细数据是保存在注册表里的吗?如果是,那什么地方可以找到他们????
顺便提一下,我现在看的是Walter Oney 的 Programming the Windows Driver Model.
 
我在看chris cant的windows wdm设备驱动程序开发指南,还没有入门。
 
to:yylg
we are in the same boat. that's good.
let's keep a tight communication.
(sorry, i'm getting on internet on a pc without chinese input)
 
DDK 或 Driver Studio 或 WinDriver
http://www.driverdevelop.com/
VC只是充当了一个C编译器,和MFC没有什么关系的。
 
bcb不能编译wdm
一般用vc来编译
"缓冲区对齐掩码"我没有用过
符号连接是保存在系统内存里面的
用winobj可以看到所有的widows对象
 
热血:
请问,系统内存中的符号连接的数据是从那里来的.它没有固定的存放文件或注册
表键值吗? 那关机之后岂不就没有了? 实在是想不明白.
另外,用什么方法可以得到这些符号连接数据....
 
又碰到些不太理解的问题
1.内核模式与用户模式的界线在哪里?
2.I/O管理器运行于哪个IRQL?
3.什么叫指针没有按照4个字节的边界对齐?
 
32位计算机,CPU的字长是4个字节
 
to spidertong
可否解释得更详细点
 
Cpu一次存取数据的长度
 
驱动程序里面要IoCreateSymbolLink后,系统里面就有这个符号连接了,关机这个符号连接
就没了,需要驱动程序再创建,可以用NTQuerySystemInformation来得到
 
to:
spidertong.
不好意思,我还是不太理解,请问对齐是什么意识,怎样对齐

热血.
谢谢你的详细解答. 可以问一下,你用的是什么参考书吗.
 
#include <setupapi.h>
...
LPTSTR lpszDeviceName;
HDEVINFO info = SetupDiCreateDeviceInfoList(NULL, NULL);
SP_DEVICE_INTERFACE_DATA ifdata = {sizeof(SP_DEVICE_INTERFACE_DATA)};
SetupDiOpenDeviceInterface(info, lpszDeviceName, 0, &amp;
ifdata);
SP_DEVINFO_DATA did = {sizeof(SP_DEVINFO_DATA)};
SetupDiGetDeviceInterfaceDetail(info, &amp;
ifdata, NULL, 0, NULL, &amp;did);
TCHAR buffer[256];
SetupDiGetDeviceRegistryProperty(info,
&amp;did,
SPDRP_MFG,
NULL,
(PBYTE) mfgname,
sizeof(mfgname),
NULL);
SetupDiDestroyDeviceInfoList(info);

这里有一段书上的代码, 功能是获得设备的制造商名称.
书上说的设备路径lpszDeviceName是一个象“USB/Vid_0547&amp;Pid_102A/7&amp;2”一样的串。
我从注册表中在HKLM 下...的ENUM键中随意挑一个,并用书上所写的格式去调用时总是
出错. 错误说PATH IS INVALID. 不知这个PATH应该如何获得以及用和种格式来写.
试过用SetupDiEnumDeviceInterfaces去获得PATH 但没成功.
请各位高手指教, 最好能给个完整的例子.
 
后退
顶部