not enumerated PCI device

My driver’s target is a PCI device, but it’s Vendor ID is 0, so it cannot be enumerated by Win2000 PnP manager, so I must write a legacy driver, I use pci_sample from www.osr.com as the template.
The problem is when DriverEntry() reachs HalAssignSlotResource(), system crashes with blue screen, screen snapshot is:

STOP: 0x0000001E (0xC0000005, 0x804560DC, 0x00000001, 0x00001100)
KMODE_EXCEPTION_NOT_HANDLED
Address 804560DC base at 80400000, DateStamp 3d362a77-ntoskrnl.exe

In Win2000 DDK documents, HalAssignSlotResource() is said to be an obsolete function, IoReportDetectedDevice() should be used instead, I tried this one, use DDK sample kernel/serial as the template, I get Memory and Interrupt information of my PCI device from PCI config space using HalGetBusDataByOffset(), then build a CM_RESOURCE_LIST, then call IoReportDetectedDevice(), but blue screen appeared again.

Anyone met similar problem? If HalAssignSlotResource() must be called in DriverEntry()? I don’t call this function, get memory and interrupt info from PCI config space, translate them using HalTranslateBusAddress(), MmapIoSpace() and GetInterruptVector(), then call IoConnectInterrupt(), this call success, but when my PCI device trigger interrupt, the ISR handler which I set in IoConnectInterrupt() is not called. I am annoyed.

Any help is welcomed, thanks!