#include "stdafx.h" #include "ZMWSSAPI.h" #ifdef WIN32 #include #endif ZMWSSAPI::ZMWSSAPI(void) { this->module = ::GetModuleHandle (NULL); } ZMWSSAPI::~ZMWSSAPI(void) { } ZMWSSAPIFN ZMWSSAPI::getFnPointer(std::string fnName) { static ZMWSSAPI* zmwssapi = NULL; if (!zmwssapi) { zmwssapi = new ZMWSSAPI(); } ZMWSSAPIFN zmwssapi_fn; if (zmwssapi->zmwssapi_fn_map.find(fnName) != zmwssapi->zmwssapi_fn_map.end()) { zmwssapi_fn = zmwssapi->zmwssapi_fn_map[fnName]; } else { zmwssapi_fn = (ZMWSSAPIFN)::GetProcAddress(zmwssapi->module, fnName.c_str()); if (zmwssapi_fn) { zmwssapi->zmwssapi_fn_map[fnName] = zmwssapi_fn; } } return zmwssapi_fn; } HANDLE_THREAD ZMWSSAPI::Run (const char* fnName, ZMWSSAPI_DATA* args) { HANDLE_THREAD hthread = 0; ZMWSSAPIFN zmwssapi_fn = ZMWSSAPI::getFnPointer(fnName); if (zmwssapi_fn) { hthread = (HANDLE_THREAD)_beginthread(zmwssapi_fn, 0, args); } return hthread; } void ZMWSSAPI::DataCleanup (ZMWSSAPI_DATA* dataptr) { CloseFile (dataptr->hIN); CloseFile (dataptr->hOUT); free (dataptr->ENV); free (dataptr); }