Codes in FACILITY_ITF
HRESULT-mit Einrichtungen wie FACILITY_NULL und FACILITY_RPC haben universelle Bedeutung, da sie an einer einzigen Quelle definiert sind: Microsoft. HRESULT-in FACILITY_ITF werden jedoch von der Funktion oder Schnittstellenmethode bestimmt, von der sie zurückgegeben werden. Dies bedeutet, dass der gleiche 32-Bit-Wert in FACILITY_ITF von zwei verschiedenen Schnittstellenmethoden zurückgegeben wird, möglicherweise unterschiedliche Bedeutungen haben.
Der Grund, warum HRESULT-in FACILITY_ITF unterschiedliche Bedeutungen in verschiedenen Schnittstellen haben kann, besteht darin, dass HRESULT-s auf einer effizienten Datentypgröße von 32 Bit beibehalten werden. Leider ist 32 Bit nicht groß genug für die Entwicklung eines Fehlercodezuordnungssystems, das konfliktende Codes vermeidet, die von verschiedenen Programmierern zu unterschiedlichen Zeiten an unterschiedlichen Stellen zugewiesen werden (im Gegensatz zur Behandlung von Schnittstellenbezeichnern und CLSIDs). Daher ist die 32-Bit-HRESULT- so strukturiert, dass Microsoft mehrere universelle Fehlercodes definieren kann, während andere Programmierer neue Fehlercodes definieren können, ohne dass Konflikte zu befürchten sind. Die Statuscodekonvention lautet wie folgt:
- Statuscodes in anderen Einrichtungen als FACILITY_ITF können nur von Microsoft definiert werden.
- Statuscodes in facility FACILITY_ITF werden ausschließlich vom Entwickler der Schnittstelle oder Funktion definiert, die den Statuscode zurückgibt. Um widersprüchliche Fehlercodes zu vermeiden, ist jeder, der die Schnittstelle definiert, für die Koordination und Veröffentlichung der FACILITY_ITF statuscodes verantwortlich, die dieser Schnittstelle zugeordnet sind.
Alle COM-definierten FACILITY_ITF Codes weisen einen Codewert im Bereich von 0x0000-0x01FF auf. Es ist zwar zulässig, alle Codes in FACILITY_ITF zu verwenden, es wird jedoch empfohlen, nur Codewerte im Bereich von 0x0200-0xFFFF zu verwenden. Diese Empfehlung wird als Mittel zur Verringerung der Verwirrung mit com-definierten Fehlern gemacht.
Es wird außerdem empfohlen, dass Entwickler neue Funktionen und Schnittstellen definieren, um Fehlercodes wie com und in anderen Einrichtungen als FACILITY_ITF zurückzugeben. Insbesondere sollten Schnittstellen, die die Möglichkeit haben, mithilfe von RPC in Zukunft remote zu werden, die FACILITY_RPC Codes als legal definieren. E_UNEXPECTED ist ein bestimmter Fehlercode, den die meisten Entwickler universell legal machen möchten.
Verwandte Themen