How to get PKEVENT type from a event HANDLE in driver code

Hi all,
I want to notify a user application some events in my driver code.
After reading DDK documents I think I should use KeSetEvent() somehow.
But the problem is the user level app pass a event handle it created to the driver through a custom ioctl. It was called at DISPATCH_LEVEL. But ObReferenceObjectByHandle() must be called at PASSIVE_LEVEL. If I call it directly system will crash. How can i work around it?