Obtener información de diagnóstico acerca de la última excepción generada. Se devuelve información sobre la última excepción generada en la hebra actual en una estructura de salida CCI_EXCEPTION_WIDE_ST. La extensión definida por el usuario utiliza esta función para determinar si se necesita una recuperación cuando una función de utilidad devuelve un código de error.
Puede llamar a esta función, cuando una función de utilidad o una devolución de llamada de salida de usuario indique que se ha producido una excepción, estableciendo returnCode en CCI_EXCEPTION.
A menos que se indiqueCCI_EXCEPTION, no debe invocar cciGetLastExceptionDataW(), ya que puede provocar resultados imprevisibles.
void* cciGetLastExceptionDataW(
int* returnCode,
CCI_EXCEPTION_WIDE_ST* exception_st);
El valor devuelto en el campo exception_st.messageNumber, para excepciones que producen un mensaje de excepción catalogado BIP, contiene el nivel de mensaje en los bytes de nivel superior y el número de mensaje BIP en los cuatro bytes de nivel más bajo.
Ninguno. Si se produce un error, el parámetro returnCode indica la razón del mismo.
typedef struct exception_wide_st {
int versionId; /* Identificación de versión de estructura */
int type; /* Tipo de excepción */
int messageNumber; /* Número de mensaje */
int insertCount; /* Número de inserciones de mensaje */
CCI_STRING_ST inserts[CCI_MAX_EXCEPTION_INSERTS];
/* Matriz de áreas de inserciones de mensaje */
const char* fileName; /* Origen: nombre de archivo */
int lineNumber; /* Origen: número de línea en archivo */
const char* functionName; /* Origen: nombre de función */
CCI_STRING_ST traceText; /* Texto de rastreo asociado a la excepción */
CCI_STRING_ST objectName; /* Nombre de objeto */
CCI_STRING_ST objectType; /* Tipo de objeto */
} CCI_EXCEPTION_WIDE_ST;
char msgnumTypeStr[64];
CCI_EXCEPTION_WIDE_ST exception_st = malloc(sizeof(CCI_EXCEPTION_WIDE_ST));
int rc = 0;
memset(&exception_st,0,sizeof(exception_st));
cciGetLastExceptionDataW(&rc, &exception_st);
sprintf(msgnumTypeStr, "MsgNum: %d Type: %d",
(exception_st.messageNumber & 0x0ffff),
(exception_st.type & 0x0f));