#include <stdlib.h>

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

typedef void (* callback_t)(void *);

callback_t callback;
void *user_data;

__declspec(dllexport) void
lib_proc_detach_set_callback(callback_t arg_callback, void *arg_user_data) {
    callback = arg_callback;
    user_data = arg_user_data;
}

BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID);

BOOL WINAPI DllMain(HINSTANCE hinstance, DWORD dwReason, LPVOID lpvReserved) {
    switch (dwReason) {
    case DLL_PROCESS_DETACH:
        if (callback != NULL) {
            callback(user_data);
        }
        break;
    }

    return TRUE;
}
