// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include "tunnel.h"
#include <objbase.h>

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call) {
        case DLL_PROCESS_ATTACH:
            CoInitialize(nullptr);
            CoInitializeSecurity(nullptr,
                                 -1,
                                 nullptr,
                                 nullptr,
                                 RPC_C_AUTHN_LEVEL_PKT,
                                 RPC_C_IMP_LEVEL_IMPERSONATE,
                                 nullptr,
                                 EOAC_NONE,
                                 nullptr);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            TunnelSDKUnInit();
            CoFreeUnusedLibraries();
            break;
        default:
            break;
    }
    return TRUE;
}