阅读:2138回复:1
怪事,用IoGetDeviceObjectPointer会蓝屏死机是怎么回事
我在任一个武安河的例子里加入获取设备对象的语句,在加载驱动的时候就会死机,是怎么回事啊,代码应该没有错啊,请各位大虾帮我看看。
NTSTATUS DMASample::AddDevice(PDEVICE_OBJECT Pdo) { NTSTATUS status = STATUS_SUCCESS; PUNICODE_STRING name = NULL; PFILE_OBJECT file = NULL; PDEVICE_OBJECT MyDevice = NULL; RtlInitUnicodeString(name,L"\\device\\COM1"); status = IoGetDeviceObjectPointer ( name, FILE_ALL_ACCESS, &file, &MyDevice); ...... ObDereferenceObject(file); return status; 把这段代码注释掉就好了,另外我应该什么时候调用ObDereferenceObject(file)呢,在AddDevice返回之前吗? |
|
沙发#
发布于:2007-06-29 17:25
查出来了,是字符串指针惹得祸,PUNICODE_STRING是一个指针类型,所以name变量没有取得内存空间就被赋值和使用了,当然会死机。改为
UNICODE_STRING name ; 。 。 。 RtlInitUnicodeString(&name,L"\\device\\COM1"); 就好了 |
|