
OCI_register_taf_callback 함수의 callback_data 인자는 taf_session_info_t 구조체의 복사본이 아닙니다.
callback_data는 OCIRegisterTafCallback 함수의 마지막 인자로 전달된 void 포인터의 주소입니다.
따라서, callback_data를 통해 taf_session_info_t 구조체의 멤버 변수에 접근하려면, taf_session_info_t 구조체의 포인터를 통해 접근해야 합니다.
예를 들어, callback_data를 통해 taf_session_info_t 구조체의 세션 ID를 얻으려면, 다음과 같이 코드를 작성할 수 있습니다.
c
void my_taf_callback(taf_session_info_t *taf_session_info, void *callback_data)
{
taf_session_info_t *session_info = (taf_session_info_t *)callback_data;
ub4 session_id = session_info->session_id;
}
위 코드에서는 callback_data를 taf_session_info_t 구조체의 포인터로 캐스팅하고, session_id 멤버 변수에 접근하여 값을 얻습니다.
OCIRegisterTafCallback 함수의 세션 ID를 얻는 방법은 다음과 같습니다.
c
taf_session_info_t taf_session_info;
OCIRegisterTafCallback(env, (OCI_TAF_CALLBACK)my_taf_callback, (void *)&taf_session_info, sizeof(taf_session_info_t));
// my_taf_callback 함수에서 session_id를 얻을 수 있습니다.
위 코드에서는 OCIRegisterTafCallback 함수의 마지막 인자로 taf_session_info_t 구조체의 주소를 전달하고, my_taf_callback 함수에서 session_id를 얻을 수 있습니다.
2025-08-02 13:32