liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:9331回复:15

如何使用ObOpenObjectByName?

楼主#
更多 发布于:2007-01-28 05:28
  status = ObOpenObjectByName( ObjectAttributes,
                                 (POBJECT_TYPE) NULL,
                                 requestorMode,
                                 NULL,
                                 DesiredAccess,
                                 &openPacket,
                                 &handle );

这是我的一段调用代码DesiredAccess,requestorMode应该是没问题的
openPacket是一个已经填充好的结构.

ObjectAttributes如下:

InitializeObjectAttributes(
                    &objectAttributes,
                    &fileName,
                    OBJ_CASE_INSENSITIVE,  // !!! can we do this?
                    NULL,
                    NULL                   // !!! Security
                    );

返回的是c0000024
OBJECT_TYPE = IoFileObjectType时也是c0000024

请问,这个错误代码是哪的问题呢?我完全按照NT4Src中的IoCreateFile那段写的?
请大牛指导.
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-28 08:46
extern "C" POBJECT_TYPE *IoFileObjectType;

status = ObOpenObjectByName( ObjectAttributes,
                     *IoFileObjectType,...........
jwihack
驱动牛犊
驱动牛犊
  • 注册日期2007-01-11
  • 最后登录2010-12-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-28 18:09
看来我们的问题一样哦。。。。。。。。。。。
偶也是返回 c0000024 郁闷!

汇编里面 POBJECT_TYPE  *IoFileObjectType 怎么定义不了
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地板#
发布于:2007-01-28 21:22
openPacket
结构不对是不行的~
嘿嘿~
没有战争就没有进步 X3工作组 为您提供最好的军火
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2007-01-29 00:35
To:killvxk

killvxk光顾真的是荣幸,小弟多次看见老大你使用ObOpenObjectByName
深信你一定非常了解此函数.

以下是我的愚见,
IopParseDevice对OpenPacket的检查是:

if (op == NULL ||
        op->Type != IO_TYPE_OPEN_PACKET ||
        op->Size != sizeof( OPEN_PACKET )) {

        return STATUS_OBJECT_TYPE_MISMATCH;
    }

首先Type,Size我想都因该是符合的.不知道killvxk认为大概是哪个地方有问题呢?
另外,除了在此函数有检查外,是否其他地方也有检查呢?

建议killvxk老大贴出openPacket的详细填充方法,我首先贴出我的,完全转自nt4src

openPacket.EaBuffer = (PFILE_FULL_EA_INFORMATION) NULL;
    openPacket.EaLength = 0L;
    openPacket.Type        = IO_TYPE_OPEN_PACKET;
    openPacket.Size        = sizeof( OPEN_PACKET );
    openPacket.ParseCheck        = 0L;
    openPacket.AllocationSize    = initialAllocationSize;
    openPacket.CreateOptions    = CreateOptions;
    openPacket.FileAttributes    = (USHORT) FileAttributes;
    openPacket.ShareAccess        = (USHORT) ShareAccess;
    openPacket.Disposition        = Disposition;
    openPacket.Override            = FALSE;
    openPacket.QueryOnly        = FALSE;
    openPacket.DeleteOnly        = FALSE;
    openPacket.Options            = Options;
    openPacket.RelatedFileObject = (PFILE_OBJECT) NULL;
    openPacket.CreateFileType    = CreateFileType;
    openPacket.ExtraCreateParameters = ExtraCreateParameters;
    openPacket.FinalStatus        = STATUS_SUCCESS;
    openPacket.FileObject        = (PFILE_OBJECT) NULL;

killvxk老大请赐教.等你回帖,顺便问问,ObOpenObjectByName能避免重入么?


To:slwqw

IoFileObjectType这个参数我写上时也是正确的.况且WINDOWS 原码是设置为NULL

To:jwihack

最好能留个联系方式,讨论下.我目前碰到0x24就停顿下来了
jwihack
驱动牛犊
驱动牛犊
  • 注册日期2007-01-11
  • 最后登录2010-12-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-01-29 00:39
To:liio

 QQ:93632414
一起讨论
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-01-29 00:52
哈哈,这么晚不睡啊.我今天晚上8点才起床,
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2007-01-29 11:46
2K,NT4 SRC里的OPENPACKET有问题,不能直接拿来用的.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
8楼#
发布于:2007-01-29 13:17
引用第7楼wowocock2007-01-29 11:46发表的“”:
2K,NT4 SRC里的OPENPACKET有问题,不能直接拿来用的.

哈哈这都发现了~
没有战争就没有进步 X3工作组 为您提供最好的军火
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2007-01-29 15:51
我们昨天晚上跟了API很久.
他发现的大概也差不多.因该说2k,nt4下的op结构在XP下不可用吧

wowocock
killvxk
老大,可否能给一个可用的OP结构呢?
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2007-01-29 15:54
最好能给份填充的样本和定义,
如果能.真的太感激;了!
jwihack
驱动牛犊
驱动牛犊
  • 注册日期2007-01-11
  • 最后登录2010-12-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-01-30 10:50
.....郁闷

看来我的问题 一定跟这个有关系
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
12楼#
发布于:2007-01-30 11:50
引用第11楼jwihack2007-01-30 10:50发表的“”:
.....郁闷

看来我的问题 一定跟这个有关系

打开文件和打开设备不一样,哈哈~
没有战争就没有进步 X3工作组 为您提供最好的军火
ralf__
驱动牛犊
驱动牛犊
  • 注册日期2007-06-20
  • 最后登录2008-12-15
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-12-15 13:57
我在用驱动调用ACPI的方法时也遇到了类似问题,具体情况是我在我的驱动里向ACPI驱动发IOCTL_ACPI_EVAL_METHOD,用应用程序打开我的驱动然后发DeviceIoControl码就可以实现功能,但是用笔记本功能键发notify时就不行,受到Notify后用IoCallDriver调用,开始一直报0XC0140006(解释是ACPI严重错误),怀疑是没有打开\\Driver\\ACPI造成的(之前没有打开是因为,应用程序的打开方法里也没有特意打开也能实现调用),后来尝试用过ZwCreateFile,ZwOpenFile,ObOpenObjectByName等方法去打开ACPI,前两中都返回0XC0000024类型不对,试了很多次,但是也不知 哪里不对,ObOpenObjectByName,总是蓝屏,说PAGE_FAULT_IN_NONPAGED_AREA,可能我参数没下对。
哪位牛鬼蛇神能帮忙解决下,不胜感激。
ralf__
驱动牛犊
驱动牛犊
  • 注册日期2007-06-20
  • 最后登录2008-12-15
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2008-12-15 13:59
忘了联系方式,
qq:115210824
email:ralf_824@sohu.com
weolar
驱动牛犊
驱动牛犊
  • 注册日期2007-05-14
  • 最后登录2012-11-30
  • 粉丝1
  • 关注0
  • 积分48分
  • 威望445点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分1分
15楼#
发布于:2009-12-17 23:57
搞半天,用wrk的填充方式搞OPEN_PACKET,可以成功,微软太可恶了。
游客

返回顶部