他人の空似自作物置場

voiceroid_readonly_sdic.zip/dllmain.cpp


struct IUnknown;
#include <windows.h>
#include <Shlwapi.h>

#pragma comment(lib, "Shlwapi.lib")

void main();

FARPROC p_makeda_embedinfo = NULL;
FARPROC p_makeda_makeda = NULL;
FARPROC p_makeda_setoutput = NULL;

__declspec(naked) void WINAPI d_makeda_embedinfo() { _asm { jmp p_makeda_embedinfo } }
__declspec(naked) void WINAPI d_makeda_makeda() { _asm { jmp p_makeda_makeda } }
__declspec(naked) void WINAPI d_makeda_setoutput() { _asm { jmp p_makeda_setoutput } }

BOOL APIENTRY DllMain(HANDLE, DWORD ul_reason_for_call, LPVOID) {
   static HMODULE h_original = NULL;
   switch (ul_reason_for_call) {
   case DLL_PROCESS_ATTACH: {
      h_original = ::LoadLibraryW(L"libmakeda.dll.orig");
      if (h_original == NULL) {
         return FALSE;
      }
      p_makeda_embedinfo = ::GetProcAddress(h_original, "makeda_embedinfo");
      p_makeda_makeda = ::GetProcAddress(h_original, "makeda_makeda");
      p_makeda_setoutput = ::GetProcAddress(h_original, "makeda_setoutput");
      main();
      break;
   }
   case DLL_THREAD_ATTACH:
      break;
   case DLL_THREAD_DETACH:
      break;
   case DLL_PROCESS_DETACH:
      if (h_original != NULL) {
         ::FreeLibrary(h_original);
      }
      break;
   }
   return TRUE;
}