// ThriftCommon.cpp : Common functions for sample Thrift client and server // #include "ThriftCommon.h" namespace thriftcommon { //---------------------------------------------------------------------------- //Launch child process and pass R/W anonymous pipe handles on cmd line. //This is a simple example and does not include elevation or other //advanced features. // bool LaunchAnonPipeChild(std::string app, boost::shared_ptr transport) { #ifdef _WIN32 PROCESS_INFORMATION pi; STARTUPINFOA si; GetStartupInfoA(&si); //set startupinfo for the spawned process char handles[MAX_PATH]; //Stores pipe handles converted to text sprintf(handles, "%s %d %d", app.c_str(), (int)boost::shared_dynamic_cast(transport)->getClientRdPipeHandle(), (int)boost::shared_dynamic_cast(transport)->getClientWrtPipeHandle()); //spawn the child process if (!CreateProcessA(nullptr, handles, nullptr,nullptr,TRUE,0,nullptr,nullptr,&si,&pi)) { GlobalOutput.perror("TPipeServer CreateProcess failed, GLE=", GetLastError()); return false; } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); #endif return true; } }