cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
阅读:4297回复:18

如何从符号连接名称得到设备名称呢?

楼主#
更多 发布于:2005-05-11 18:41
如题!
谢谢!
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2005-05-12 16:15
各位高手,我得目的是:如果我知道以设备的符号连接名称,如何得到他的设备名称呢?是名称啊?谢谢各位了。

不知道几位给的答案是否能够实现那,能具体说说吗?
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2005-05-12 19:01
NTSTATUS
ObReferenceObjectByName (
IN PUNICODE_STRING ObjectName,
IN ULONG Attributes,
IN PACCESS_STATE AccessState OPTIONAL,
IN ACCESS_MASK DesiredAccess OPTIONAL,
IN POBJECT_TYPE ObjectType,
IN KPROCESSOR_MODE AccessMode,
IN OUT PVOID ParseContext OPTIONAL,
OUT PVOID *Object
)
ObjectName是符号连接名称吗?

[编辑 -  5/12/05 by  cyliu]
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
地板#
发布于:2005-05-13 09:30
也许我没有说明白我的目的.

我目的是:知道了符号连接名称如何知道他的设备名称.

ObReferenceObjectByName中传入符号连接名得到符号连接对象,还是无发得到他的设备名称啊?
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
地下室#
发布于:2005-05-17 15:11
NTSTATUS status = STATUS_SUCCESS;

UNICODE_STRING LinkName;
RtlInitUnicodeString(&LinkName, L\"\\\\\");
ObpRootDirectoryObject = 0;

if(ObReferenceObjectByName(&LinkName,OBJ_CASE_INSENSITIVE,NULL,0,NULL,KernelMode,NULL,(PVOID*)&ObpRootDirectoryObject)==STATUS_SUCCESS)
{
DumpObject((PVOID)ObpRootDirectoryObject);
}

return status;

走到黑体部分就蓝屏,why,难道我使用的不对吗?  

[编辑 -  5/17/05 by  cyliu]
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
5楼#
发布于:2005-05-17 16:52
上面问题解决了.

bmyyyud:
  我通过ObReferenceObjectByName得到对象,然后分析对象头得到的是名字是ObReferenceObjectByName中传入的名字.而不是设备对象名字啊.

如:
#define DEVICE_NAME L\"\\\\Device\\\\ObjName\"
#define DOS_DEVICE_NAME L\"\\\\DosDevices\\\\cyliu\"


ObReferenceObjectByName中传入DOS_DEVICE_NAME名字,得到的是cyliu名字.而我想通过DOS_DEVICE_NAME得到\"ObjName\"这个字符串啊,应该怎么办?
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
6楼#
发布于:2005-05-17 18:12
可惜得到的仍然是DOS_DEVICE_NAME名字
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
7楼#
发布于:2005-05-17 18:26
如何在驱动层通过符号连接得到物理设备名称呢?

如:通过\"\\\\?\\\\c:\"得到\"\\Device\\HarddiskVolume1\"名字或者其他物理设备名称?
走走看看开源好 Solaris vs Linux
游客

返回顶部