能力值:
( LV9,RANK:260 )
2 楼
STATUS_OBJECT_TYPE_MISMATCH?是不是Type不能填NULL了?
没用过win7……
能力值:
( LV12,RANK:420 )
3 楼
NTSTATUS
ObReferenceObjectByName (
__in PUNICODE_STRING ObjectName,
__in ULONG Attributes,
__in_opt PACCESS_STATE AccessState,
__in_opt ACCESS_MASK DesiredAccess,
__in POBJECT_TYPE ObjectType,
__in KPROCESSOR_MODE AccessMode,
__inout_opt PVOID ParseContext,
__out PVOID *Object
)
ObjectType不是可选的,当然需要填写。
DriverObject直接填写IoDriverObjectType 即可
能力值:
( LV12,RANK:760 )
4 楼
返回错误,没蓝给你看已经不错了~~
Type必须要写~~
能力值:
( LV9,RANK:260 )
5 楼
被楼主的“但在XP下就没问题”误导了……
放虚拟机测试了一下,XP一样蓝。
能力值:
( LV2,RANK:10 )
在线值:
6 楼
谢谢各位大牛。
这是我的参数传递, 可照样返回错误啊。
RtlInitUnicodeString( &DriverNameString, L"\\Driver\\hidusb");
//获取驱动对象
status = ObReferenceObjectByName(
&DriverNameString,
OBJ_CASE_INSENSITIVE,
NULL,
0,
IoDriverObjectType,
KernelMode,
NULL,
&pDriverObject //保存得到的驱动对象
);
能力值:
( LV12,RANK:420 )
7 楼
*IoDriverObjectType试试
能力值:
( LV2,RANK:10 )
在线值:
8 楼
楼上的大牛 *IoDriverObjectType 编译失败啊。
下面是我的函数声明和调用。 谢谢了。
extern NTKERNELAPI
NTSTATUS
ObReferenceObjectByName(
IN PUNICODE_STRING ObjectName,
IN ULONG Attributes,
IN PACCESS_STATE PassedAccessState,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_TYPE ObjectType,
IN KPROCESSOR_MODE AccessMode,
IN OUT PVOID ParseContext,
OUT PVOID * Object
);
extern POBJECT_TYPE IoDriverObjectType; RtlInitUnicodeString( &DriverNameString, L"\\Driver\\hidusb");
//获取驱动对象
status = ObReferenceObjectByName(
&DriverNameString,
OBJ_CASE_INSENSITIVE,
NULL,
0,
*IoDriverObjectType,
KernelMode,
NULL,
&pDriverObject //保存得到的驱动对象
);
能力值:
( LV3,RANK:20 )
9 楼
extern POBJECT_TYPE * IoDriverObjectType;
注意红色的*..加上即可..
能力值:
( LV2,RANK:10 )
在线值:
10 楼
多谢,多谢。 测试成功了。
能力值:
( LV2,RANK:10 )
11 楼
我也遇到这样的问题。不过我的是在XP下面,不过我想得到的是设备对象,"\\device\\kabc"这个设备已经在我的另一个驱动里面创建
RtlInitUnicodeString(&DriverNameStr, L"\\device\\kabc");
status = ObReferenceObjectByName(
&DriverNameStr,
OBJ_CASE_INSENSITIVE,
NULL,
0,
*IoDeviceObjectType,
KernelMode,
NULL,
&pDeviceObj //保存得到的驱动对象
);
返回值是STATUS_OBJECT_TYPE_MISMATCH。谁能帮忙解答一下啊?
能力值:
( LV12,RANK:210 )
12 楼
各种基础问题啊