NTSTATUS ntStatus = STATUS_SUCCESS; PDEVICE_OBJECT DeviceObject = NULL; PFILE_OBJECT FileObject = NULL; ntStatus = IoGetDeviceObjectPointer(pObjectName,FILE_ALL_ACCESS,&FileObject,&DeviceObject); if(!NT_SUCCESS(ntStatus)) { KdPrint(("IoGetDeviceObjectPointer Failed,ntStatus = 0x%08lX/n",ntStatus)); goto _EXIT0_; } KdPrint(("IoGetDeviceObjectPointer succeed!/n")); DeviceObject = IoGetLowerDeviceObject(DeviceObject); if(!DeviceObject) { KdPrint(("IoGetLowerDeviceObject Failed,ntStatus = 0x%08lX!/n",ntStatus)); ntStatus = STATUS_UNSUCCESSFUL; goto _EXIT1_; } while(!(DeviceObject->Flags & DO_BUS_ENUMERATED_DEVICE)) { ObDereferenceObject(DeviceObject); DeviceObject = IoGetLowerDeviceObject(DeviceObject); if(!DeviceObject) { ObDereferenceObject(FileObject); ntStatus = STATUS_UNSUCCESSFUL; goto _EXIT1_; } }