static void __stdcall Event_CallBackFunction(unsigned char* Data_Content, size_t Data_Size, void* UserHandle_Void) { //*integrity tests if (Data_Size<4) return; //There is a problem QueueElement *queue = (QueueElement*)UserHandle_Void; struct MediaInfo_Event_Generic* Event_Generic = (struct MediaInfo_Event_Generic*)Data_Content; // unsigned char ParserID = (unsigned char)((Event_Generic->EventCode & 0xFF000000) >> 24); unsigned short EventID = (unsigned short)((Event_Generic->EventCode & 0x00FFFF00) >> 8); unsigned char EventVersion = (unsigned char)(Event_Generic->EventCode & 0x000000FF); switch (EventID) { case MediaInfo_Event_Global_AttachedFile: if (EventVersion == 0) queue->attachment_cb((struct MediaInfo_Event_Global_AttachedFile_0 *)Data_Content); break; case MediaInfo_Event_Log: if (EventVersion == 0 && Data_Size >= sizeof(struct MediaInfo_Event_Log_0)) queue->log_cb((struct MediaInfo_Event_Log_0*)Data_Content); break; default: break; } }