fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:2393回复:19

哪位有DeviceTree的源码,或者其它可以获取设备信息的代码??

楼主#
更多 发布于:2004-12-01 18:07
想根据DeviceTree的原理,获取系统中各种类型的设备对象信息,从而实现对设备的各种控制。
不胜感激,谢谢!!!

最新喜欢:

aasa2aasa2
在交流中学习。。。
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2004-12-01 23:08
 
想根据DeviceTree的原理,获取系统中各种类型的设备对象信息,从而实现对设备的各种控制。
不胜感激,谢谢!!!
附件名称/大小 下载次数 最后更新
2004-12-01_EnumServices.rar (124KB)  122
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-02 08:52
[quote] 想根据DeviceTree的原理,获取系统中各种类型的设备对象信息,从而实现对设备的各种控制。
不胜感激,谢谢!!!
[/quote]

真是感谢,俺没事也研究研究
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-02 09:09
试试先。
先送10分表谢,呵呵。
在交流中学习。。。
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-02 09:16
to KMK:
EnumService输出的内容好像与分析注册表的比较类似,我想了解的是动态获取系统的内核设备对象信息,如同DeviceTree的功能。
在交流中学习。。。
Shentu
驱动小牛
驱动小牛
  • 注册日期2004-04-05
  • 最后登录2011-01-24
  • 粉丝0
  • 关注0
  • 积分234分
  • 威望24点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-02 22:36
这个简单啊,在用户态调用SetupDiGetClassXXX这类函数,通过设备的 GUID 就可以得到啊。我看到微软的那个总线枚举的例子就是这样搞得(名字记不清楚了好像是toster)。你可以试试...
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
6楼#
发布于:2004-12-03 07:20
device tree得实现...

他有使用一个sys的...叫objinfo...用vc导出资源就能看到...那个sys很简单...只有9k而已...大致看了看..似乎主要的目的是获取名字...似乎还发送有特殊的irp....
其他的功能...使用了setupapi.dll的几个函数...获取一些信息..有些在应用层获取不了的信息..比如device object的地址啊..vpb的地址啊..vpb的内容啊..这些用objinfo获取到的..都很简单的..
dumpbin + ida + 少量时间就能大致的分析出来了...
看了看..在msdn的pdb server上面没有这个objinfo.sys的pdb..呵呵
sean198148
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2014-10-08
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望26点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-03 10:02
大家说说做一个类似
winobj或者device manager的程序需要用到那些技术呢?
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-06 14:42
你是想做到什么程度啊?
是不是这样
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-06 15:31
你是想做到什么程度啊?
是不是这样


跟这个差不多吧,大虾有这个代码。
在交流中学习。。。
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-08 09:55
注意其中我使用的函数

typedef struct _DIRECTORY_BASE_INFOMATION{
UNICODE_STRING ObjName;
UNICODE_STRING ObjType;
}DIRECTORY_BASE_INFOMATION,*PDIRECTORY_BASE_INFOMATION;

#define OBJ_INHERIT             0x00000002L
#define OBJ_PERMANENT           0x00000010L
#define OBJ_EXCLUSIVE           0x00000020L
#define OBJ_CASE_INSENSITIVE    0x00000040L
#define OBJ_OPENIF              0x00000080L
#define OBJ_OPENLINK            0x00000100L
#define OBJ_KERNEL_HANDLE       0x00000200L
#define OBJ_FORCE_ACCESS_CHECK  0x00000400L
#define OBJ_VALID_ATTRIBUTES    0x000007F2L


ULONG CAppDevMonitor::GetDirContent(IN PCHAR pcDir, IN OUT PDIRECTORY_BASE_INFOMATION pDirInfo, IN ULONG ulSize, OUT ULONG &ulOutSize)
{
HANDLE hDir = NULL;
OBJECT_ATTRIBUTES ObjAttributes = {0};
NTSTATUS RetStatus = 0;
ULONG ulRetVal = 0;
ULONG ulRetContext = 0;
UNICODE_STRING ustrName = {0};
ANSI_STRING ansiStr = {0};

RtlInitAnsiString(&ansiStr, pcDir);
RtlAnsiStringToUnicodeString(&ustrName, &ansiStr, TRUE);

InitializeObjectAttributes(&ObjAttributes, &ustrName, OBJ_OPENIF, NULL, NULL);
RetStatus = ZwOpenDirectoryObject(&hDir, GENERIC_READ, &ObjAttributes);
RtlFreeUnicodeString(&ustrName);
ulRetVal = RtlNtStatusToDosError(RetStatus);
if(ulRetVal != ERROR_SUCCESS)
{
return ulRetVal;
}

ulRetContext = 0;
RetStatus = ZwQueryDirectoryObject(hDir, pDirInfo, ulSize, FALSE, TRUE, &ulRetContext, &ulOutSize);
ulRetVal = RtlNtStatusToDosError(RetStatus);
ZwClose(hDir);
return ulRetVal;
}
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-08 09:58
使用native api的问题我就不多说了
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-08 10:00
注意的是如果是根目录,那么应该是"\\",如果是device目录,那么应该是"\\Device", etc
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-08 10:10
看了一下,其中几个函数在MSDN中也没有找到,所以不是很清楚,不过还是要多谢。
想送分,不过好像只能送一次分了,下次补上。^_^

[编辑 -  12/8/04 by  fslife]
在交流中学习。。。
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-08 23:13
用户被禁言,该主题自动屏蔽!
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-12-09 10:12
靠,代码都给你了,你说你经验的长进会多吗?
不要想着什么都不劳而获
图片是可以看见的,起码到现在还没有人报告说看不了(除了你之外),你看看是不是IE选项里面的UTF-8选项打上了
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-09 22:48
用户被禁言,该主题自动屏蔽!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
17楼#
发布于:2004-12-09 23:17
靠,代码都给你了,你说你经验的长进会多吗?
不要想着什么都不劳而获
图片是可以看见的,起码到现在还没有人报告说看不了(除了你之外),你看看是不是IE选项里面的UTF-8选项打上了

好人做到底吧,嘿嘿......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-10 09:23
主要使用的函数原形
NTSYSAPI
NTSTATUS
NTAPI
ZwOpenDirectoryObject(
OUT PHANDLE DirectoryHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
);
NTSYSAPI
NTSTATUS
NTAPI
ZwClose(
IN HANDLE Handle
);

NTSYSAPI
ULONG
NTAPI
RtlNtStatusToDosError (
NTSTATUS Status
);
NTSYSAPI
VOID
NTAPI
RtlInitUnicodeString(
PUNICODE_STRING DestinationString,
PCWSTR SourceString
);
NTSYSAPI
NTSTATUS
NTAPI
RtlUnicodeStringToAnsiString(
PANSI_STRING DestinationString,
PUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
NTSYSAPI
VOID
NTAPI
RtlFreeAnsiString(
PANSI_STRING AnsiString
);



NTSYSAPI
NTSTATUS
NTAPI
ZwQueryDirectoryObject(
IN HANDLE DirectoryHandle,
IN OUT PVOID pBuffer,
IN ULONG ulBufferLength,
IN BOOLEAN ReturnSingleEntry,
IN BOOLEAN ReStartScan,
IN OUT PULONG Context,
OUT PULONG ReturnLength OPTIONAL
);
NTSYSAPI
VOID
NTAPI
RtlInitAnsiString(
PANSI_STRING DestinationString,
PCHAR SourceString
);


NTSYSAPI
NTSTATUS
NTAPI
RtlAnsiStringToUnicodeString(
PUNICODE_STRING DestinationString,
PANSI_STRING SourceString,
BOOLEAN AllocateDestinationString
    );
NTSYSAPI
VOID
NTAPI
RtlFreeUnicodeString(
PUNICODE_STRING UnicodeString
);
NTSYSAPI
NTSTATUS
NTAPI
ZwOpenSymbolicLinkObject(
OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
);

NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySymbolicLinkObject(
IN HANDLE LinkHandle,
IN OUT PUNICODE_STRING LinkTarget,
OUT PULONG ReturnedLength OPTIONAL
);
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-10 09:29
忘记说了,只有通过驱动程序才能控制设备,应用程序要控制设备也是通过向驱动程序传递控制代码来实现控制的
你可以写一个驱动程序,需要控制哪个设备,那么就让驱动程序拦截指定的设备从而实现拦截
游客

返回顶部