Для этого и существует параметр LPVOID
Код:
struct my_data_t {...}
unsigned long __stdcall cff(my_data_t* my_data)
{
// обрабатываем
delete my_data;
}
my_data_t *my_data = new my_data_t();
// заполняем my_data->...
CreateThread(0, 4096, LPTHREAD_START_ROUTINE(cff), &my_data, 0, &thr_id);
Если используешь библиотеку C/C++, лучше запускать поток функцией __beginthread, иначе возможны утечки памяти