The naming convention for HRESULT is «facility»_«severity»_«name», where the facility portion (and the underscore) is omitted if the facility is FACILITY_NULL or FACILITY_WIN32.
Good luck finding anybody who follows this naming convention.
Okay, fine, if you look closely you might be able to find some people who do.
| COM | CO_ | E_ | NOTINITIALIZED |
|---|---|---|---|
| CO_ | S_ | MACHINENAMENOTFOUND | |
| Structured storage | STG_ | E_ | SHAREVIOLATION |
| STG_ | S_ | CONVERTED | |
| SETUPAPI | SPAPI_ | E_ | EXPECTED_SECTION_NAME |
| Data and view | DV_ | E_ | TYMED |
| DV_ | E_ | FORMATETC | |
| Class factory | CLASS_ | E_ | NOAGGREGATION |
| Class registry | REGDB_ | E_ | CLASSNOTREG |
| OLEDB | DB_ | E_ | DELETEDROW |
Actually, I guess I was a bit too pessimistic when I said nobody follows it. It seems that the majority of Windows components do follow this convention, although there are some notable exceptions.
| DirectDraw | DDERR_UNSUPPORTEDFORMAT |
|---|---|
| ADSI | E_ADS_INVALID_DOMAIN_OBJECT |
There are also some people who decided to confuse matters further by using the HRESULT convention for error codes returned by GetLastError()!
| RPC | RPC_S_OBJECT_NOT_FOUND |
|---|---|
| SmartCard | SEC_E_SMARTCARD_CERT_REVOKED |
| Task scheduler | SCHED_E_SERVICE_NOT_LOCALSYSTEM |
| Winsock | WSA_E_NO_MORE |
I apologize for the confusion this has caused.
Pre-emptive clarifying remark: The examples given in this article are merely illustrative and are not intended to be comprehensive.
0 comments