First off, there are different versions of this error depending on the hex number. For example:
*** STOP:
0x0000000A (0x00000000, 0x00000002, 0x00000001, 0x81c770DA)
Can you also post that as well? You might also want to go to support.microsoft.com and do a search on that hex number to see what comes up.
In the mean time, have you looked into the logs to see if the system or application logs show anything?
There could be a multitude of different things that could be causing this: outdated drivers (which you already corrected), bad memory (you already tested this as well) or even devices sharing the same IRQ.
I would look in the logs and see if you can find anything that was reported (hopefully) around the time you receive the BSOD.
Does the BSOD appear randomly or when you perform certain functions?
From what I've found looking through my copy of
Windows 7 Resource Kit, it points to a bad driver or bad memory, even though you've tested those. But, that also depends on the specific stop hex code. If it's 0xA, then the message indicates that a kernel-mode process or driver attempted to access a memory location to which it did not have permission or at a kernel IRQL that was too high. This is typically due to faulty or incompatible hardware or software.
To interpret the stop message, it has four parameters:
1. Memory address that was improperly referenced
2. IRQL that was required to access the memory
3. Type of access (0x00 = read operation, 0x01 = write operation)
4. Address of the instruction that attempted to reference memory specified in parameter 1
If the last parameter is within the address range of a device driver used on your system, you can determine which device driver was running when the memory access occurred. You can usually determine the driver name by reading the line that begins with
[cpp]**Address 0xZZZZZZZZ has base at
<address>-
<driver name>[/cpp]
If the third param is the same as the first, then a special condition exists in which a system worker routine (carried out by a worker thread to handle background tasks) returned at a higher IRQL. Then, the four parameters take on a different meaning:
1. Address of the worker routine
2. Kernel IRQL
3. Address of the worker routine
4. Address of the work item.
Does this occur when resuming from hibernation or suspend mode? If that's the case, you should read
http://support.microsoft.com/kb/941492 and http://support.microsoft.com/kb/945577.
Another problem that could occur with laptops is when you start it with the lid closed (probably in a docking station). If that's the case, then refer to http://support.microsoft.com/kb/941507.
If it's Stop 0XD1, then this means the system attempted to access pageable memory using a kernel process IRQL that was too high. This points to faulty drivers and usually occurs after you install said drivers or system services. If a driver is listed by name, disable it. If that fixes the error, then you'll have to contact the manufacturer about updates.
Since it's a laptop, it's a little harder to remove memory and see if that helps. Is the HP Elitebook certified for Windows 7? That could be another issue. I'm not familiar with that machine at all.
I would recommend the Windows 7 Resource Kit book from Microsoft Press. It has a chapter devoted to figuring out common stop messages which is where I was able to get most of the info in here. It's definitely worth it!