Diese Funktion ruft Diagnoseinformationen zur letzten generierten Ausnahmebedingung ab. Informationen zu der für den aktuellen Thread zuletzt generierten Ausnahmebedingung werden in einer CCI_EXCEPTION_WIDE_ST-Ausgabestruktur zurückgegeben. Die benutzerdefinierte Erweiterung verwendet diese Funktion, um festzustellen, ob eine Fehlerbehebung erforderlich ist, wenn eine Dienstprogrammfunktion einen Fehlercode zurückgibt.
Diese Funktion können Sie aufrufen, wenn ein Dienstprogrammfunktions- oder Benutzerexit-Callback darauf hinweist, dass eine Ausnahmebedingung aufgetreten ist, indem Sie Rückkehrcode auf CCI_EXCEPTION setzen.
cciGetLastExceptionDataW() darf nur bei CCI_EXCEPTION aufgerufen werden, da diese Funktion unvorhersehbare Ergebnisse zurückgibt.
void* cciGetLastExceptionDataW(
int* returnCode,
CCI_EXCEPTION_WIDE_ST* exception_st);
Der Wert, der im Feld exception_st.messageNumber für Ausnahmen zurückgegeben wurde, die zu einer BIP-Ausnahmebedingungsnachricht führen, enthält die Nachrichtenstufe in den höhere Bytes und die BIP-Nachrichtennummer in den niedrigeren vier Bytes.
Keine. Wenn ein Fehler auftritt, gibt der Parameter returnCode die Fehlerursache an.
typedef struct exception_wide_st {
int versionId; /* Identifikation der Version der Struktur */
int type; /* Typ der Ausnahme */
int messageNumber; /* Nachrichtennummer */
int insertCount; /* Anzahl von Nachrichteneinfügungen */
CCI_STRING_ST inserts[CCI_MAX_EXCEPTION_INSERTS];
/* Array von Nachrichteneinfügebereichen */
const char* fileName; /* Quelle: Dateiname */
int lineNumber; /* Quelle: Zeilennummer in der Datei */
const char* functionName; /* Quelle: Funktionsname */
CCI_STRING_ST traceText; /* Mit der Ausnahme verbundener Trace-Text */
CCI_STRING_ST objectName; /* Objektname */
CCI_STRING_ST objectType; /* Objekttyp */
} 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));