The DirectX return values are COM HRESULT's, so you need to realize they are 32 bit values divided into 3 fields. The High bit is the Severity (SUCESS of ERROR), the next 15 bits are something related to which group (of COM classes) you are in, and the LOW WORD is the value you are looking for, the specific code for the message. So use the Windows macro LOWORD() to get this value, and treat is as an UNSIGNED value. This can then be matched to the errors in the header files.
I don't have any books or code where I am, so I can't answer your specific question. Sorry