Share via


Códigos en FACILITY_ITF

HRESULTs con instalaciones como FACILITY_NULL y FACILITY_RPC tienen significado universal porque se definen en una única fuente: Microsoft. Sin embargo, HRESULTs en FACILITY_ITF viene determinado por la función o el método de interfaz desde el que se devuelven. Esto significa que el mismo valor de 32 bits en FACILITY_ITF devuelto de dos métodos de interfaz diferentes podría tener significados diferentes.

La razón por la que HRESULTen FACILITY_ITF puede tener significados diferentes en diferentes interfaces es que HRESULTse mantienen en un tamaño de tipo de datos eficaz de 32 bits. Desafortunadamente, 32 bits no es lo suficientemente grande para el desarrollo de un sistema de asignación de código de error que evita códigos en conflicto asignados por diferentes programadores en momentos diferentes en diferentes lugares (a diferencia del control de identificadores de interfaz y CLSID). Como resultado, hrESULT de 32 bits se estructura de forma que Microsoft puede definir varios códigos de error universales, al tiempo que permite a otros programadores definir nuevos códigos de error sin miedo a conflictos. La convención de código de estado es la siguiente:

  • Los códigos de estado de las instalaciones que no sean FACILITY_ITF solo pueden definirse por Microsoft.
  • Los códigos de estado de las instalaciones FACILITY_ITF se definen únicamente por el desarrollador de la interfaz o función que devuelve el código de estado. Para evitar los códigos de error en conflicto, quien defina la interfaz es responsable de coordinar y publicar los códigos de estado de FACILITY_ITF asociados a esa interfaz.

Todos los códigos de FACILITY_ITF definidos por COM tienen un valor de código en el intervalo de 0x0000-0x01FF. Aunque es legal usar cualquier código en FACILITY_ITF, se recomienda que solo se usen valores de código en el intervalo de 0x0200-0xFFFF. Esta recomendación se realiza como medio para reducir la confusión con los errores definidos por COM.

También se recomienda que los desarrolladores definan nuevas funciones e interfaces para devolver códigos de error definidos por COM y en instalaciones distintas de FACILITY_ITF. En concreto, las interfaces que tienen cualquier posibilidad de ser remotos mediante RPC en el futuro deben definir los códigos de FACILITY_RPC como legales. E_UNEXPECTED es un código de error específico que la mayoría de los desarrolladores querrán convertir universalmente en legal.

Control de errores en COM